lunes, 23 de agosto de 2010

Seleccionar todos los elementos con un checkbox

Bueno hace unos días un amiguito tuvo un problemilla con un script mal hecho que debería de hacer esto correctamente, desafortunadamente no funciono, bueno pues hice este pequeño script, le agregue la funcion live para que funcione en .net, la función live requiere jquery 1.4 o posterior.

<html>
<head>
<title>lafabricadesoftware.blogspot.com</title>
<script src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
//http://lafabricadesoftware.blogspot.com/
$(document).ready(function(){
$(".seleccionatodos").live('click',function(){
$('.s').attr('checked', $(".seleccionatodos").is(':checked'));
});
$(".s").live('click',function(){
var total=$(".s").length;
var seleccionados=$(".s:checked").length;
if (total!=seleccionados){$('.seleccionatodos').attr('checked',false);}
else{$('.seleccionatodos').attr('checked',true);}
});
});
</script>
</head>
<body>
<label>Seleccionar Todos</label>
<input type="checkbox" class="seleccionatodos">
<br>
<label>Uno</label>
<input type="checkbox" class="s">
<br>
<label>Dos</label>
<input type="checkbox" class="s">
<br>
<label>Tres</label>
<input type="checkbox" class="s">
</body>
</html>

Javascript con Jquery

Todos los ejemplos mostrados aquí, utilizarán el framework de jquery el cual puede ser descargado de http://jquery.com/, porque jquery pues existen muchismas razones pero solo mencionaré dos, es ligero y escribes menos.

viernes, 20 de agosto de 2010

Cambiar el password de un login en SQL SERVER

' http://lafabricadesoftware.blogspot.com/
ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = 'nuevo' ;
GO

jueves, 19 de agosto de 2010

Estilo a un foco con css

Con este ejemplito en css, muestro como darle formato a un foco el código es el siguiente:
 utilizando la pseudoclase focus.

//http://lafabricadesoftware.blogspot.com/

Eliminar solo fila seleccionada GridView

 Similar al post anterior solo que sin el for
Protected Sub grdIngresosdetalle_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles grdIngresosdetalle.RowDeleting  
        Dim renglon As Integer, dt As DataTable
        Dim tamaniopag As Integer 'Numero de Registros por pagina
        Dim pagina As Integer
        Dim dr As Data.DataRow
        pagina = grdIngresosdetalle.PageIndex
        tamaniopag = grdIngresosdetalle.PageSize
        'Indice actual es igual al tamanio de la pag por pagina mas indice
        renglon = (pagina * tamaniopag) + e.RowIndex  'o usar 'grdIngresosdetalle.SelectedRow.RowIndex
        dt = Session("dtIngresos")
        dr = dt.Rows(renglon)
        dt.Rows.Remove(dr)
        Session("dtIngresos") = dt
        grdIngresosdetalle.DataSource = dt
        grdIngresosdetalle.DataBind()
    End Sub

Eliminar todo lo que esta abajo de una fila seleccionada en un Gridview

La logica es un poquito similar a una pila, este código es util cuando los datos van encadenados digamos un escalafón

 Protected Sub grdIngresosdetalle_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles grdIngresosdetalle.RowDeleting  
        Dim renglon As Integer, total As Integer = 0, dt As DataTable
        Dim tamaniopag As Integer 'Numero de Registros por pagina
        Dim pagina As Integer
        Dim dr As Data.DataRow
        pagina = grdIngresosdetalle.PageIndex
        tamaniopag = grdIngresosdetalle.PageSize
        'Indice actual es igual al tamanio de la pag por pagina mas indice
        renglon = (pagina * tamaniopag) + e.RowIndex  'o usar 'grdIngresosdetalle.SelectedRow.RowIndex
        dt = Session("dtIngresos")'Esta session tiene un datatable
        total = dt.Rows.Count
        For i As Integer = renglon To total - 1
            dr = dt.Rows(renglon)
            dt.Rows.Remove(dr)
        Next
        Session("dtIngresos") = dt
        grdIngresosdetalle.DataSource = dt
        grdIngresosdetalle.DataBind()
    End Sub

Diferencias entre ISDBNULL y IS NOTHING

IS NOTHING se utiliza para especificar que un tipo de referencia que no apunta a nada.
 DBNull Value es un producto único objeto que se utiliza para indicar que un tipo de base de datos tiene un valor de base de datos de Null.

 Ejemplo 

 Sub Main ()
        Dim P As Object Dim P As Object
        Dim I As Integer Dim I As Integer

        Debug.Print( "1. P is not set to anything." ) Debug.Print ("1. P no está en ninguna parte.")
        Debug.Print( "P Is Nothing: " & (P Is Nothing )) Debug.Print ("P es nada:" & (P Is Nothing))
        Debug.Print( "P Is DBNull.Value: " & (P Is DBNull.Value)) Debug.Print ("P ¿Es DBNull.Value:" & (P ¿Es DBNull.Value))
        Debug.Print( "----------" ) Debug.Print ("----------")

        P = New Object () P = new Object ()

        Debug.Print( "2. P is set to a new object." ) Debug.Print ("2. P se establece en un nuevo objeto.")
        Debug.Print( "P Is Nothing: " & (P Is Nothing )) Debug.Print ("P es nada:" & (P Is Nothing))
        Debug.Print( "P Is DBNull.Value: " & (P Is DBNull.Value)) Debug.Print ("P ¿Es DBNull.Value:" & (P ¿Es DBNull.Value))
        Debug.Print( "----------" ) Debug.Print ("----------")

        P = DBNull.Value P = DBNull.Value

        Debug.Print( "3. P is pointing to the special singleton class DBNull." ) Debug.Print ("3. P apunta a la clase singleton DBNULL especiales.")
        Debug.Print( "P Is Nothing: " & (P Is Nothing )) Debug.Print ("P es nada:" & (P Is Nothing))
        Debug.Print( "P Is DBNull.Value: " & (P Is DBNull.Value)) Debug.Print ("P ¿Es DBNull.Value:" & (P ¿Es DBNull.Value))
        Debug.Print( "----------" ) Debug.Print ("----------")

        I = Nothing I = Nada

        Debug.Print( "4. I is not set to anything." ) Debug.Print ("4. No se establece en algo.")
        Debug.Print( "I Is Nothing: " & (IsNothing(I))) Debug.Print ("Yo no es nada:" & (IsNothing (I)))
        Debug.Print( "I Is DBNull.Value: " & (IsDBNull(I))) Debug.Print ("I Ain't DBNull.Value:" & (IsDBNull (I)))

    End Sub End Sub

1. 1. P is not set to anything. P no está en ninguna parte.
P Is Nothing: True P ¿Es Nada: Verdadero
P Is DBNull.Value: False P ¿Es DBNull.Value: Falso
---------- ----------
2. 2. P is set to a new object. P se establece en un nuevo objeto.
P Is Nothing: False P ¿Es Nada: Falso
P Is DBNull.Value: False P ¿Es DBNull.Value: Falso
---------- ----------
3. 3. P is pointing to the special singleton class DBNull. P apunta a la clase singleton DBNULL especiales.
P Is Nothing: False P ¿Es Nada: Falso
P Is DBNull.Value: True P ¿Es DBNull.Value: Verdadero
---------- ----------
4. 4. I is not set to anything. No se establece en algo.
I Is Nothing: False Yo no es nada: Falso
I Is DBNull.Value: False I ¿DBNull.Value: Falso 
  

Para finalizar existe 2 formas de usar isnothing ejemplo

'http://lafabricadesoftware.blogspot.com/
If IsNothing(myObject) then
End If
If myObject Is Nothing then
End If

 

Tomado de referencia de http://www.devblog.com/2007/11/nothing-and-null-in-vbnet.html

miércoles, 18 de agosto de 2010

Diferencias entre ISDBNULL y ISNULLOREMPTY

Bueno pues la principal diferencia que encontre a simple vista, es la siguiente ISDBNULL se debe de utilizar para los elementos contenedores de datos como: datatables, datasets, columnas, renglones, grids IsDBNull(dt.Rows(i).Item(j)) mientras IsNullOrEmpty se utiliza para cadenas String.IsNullOrEmpty(txtnombre.text)

Convertir moneda(money) a double

Algunas veces en .net necesitamos convertir una cantidad expresada en tipo moneda a doble, y bueno como haríamos esto pues es simple:

        'http://lafabricadesoftware.blogspot.com/
        Dim dinero As String Dim dinerod As Double
        Dim ci As New System.Globalization.CultureInfo("es-MX")
        dinero = "$12,555.55"
        dinerod = Double.Parse(dinero.Replace("$", ""), ci)

martes, 17 de agosto de 2010

Actualización o UPDATE de varias Tablas

Bueno pues creo que esmuy simple, el código habla por si solo

--http://lafabricadesoftware.blogspot.com/
DECLARE @tablaUno table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaDos table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaTres table(Id_Uno INT IDENTITY,campo varchar(100),campoy varchar(100))

INSERT INTO @tablaUno (campo, campod )
VALUES  ('a','b')
INSERT INTO @tablaUno (campo, campod )
VALUES  ('c','d')
INSERT INTO @tablaUno (campo, campod )
VALUES  ('x','y')

INSERT INTO @tablaDos (campo, campod )
VALUES  ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES  ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES  ('I','I')

INSERT INTO @tablaTres(campo, campoy )
VALUES  ('o','o')
INSERT INTO @tablaTres(campo, campoy)
VALUES  ('c','d')
INSERT INTO @tablaTres(campo, campoy)
VALUES  ('x','y')
INSERT INTO @tablaTres(campo, campoy)
VALUES  ('x','yt')

UPDATE @tablaTres SET campo=tu.campo, campoy=td.campod
FROM @tablaTres te INNER JOIN @TablaUno tu ON te.Id_Uno = tu.id_uno
INNER JOIN @tablaDos td ON td.Id_Uno=tu.id_uno

SELECT * FROM @tablaTres
 


Uso facilito de una transacción

No se, si les ha pasado que alguna vez quieren hacer un query sencillito por ejemplo actualizar el nombre de una persona llamada roman, pero necesitan hacer una transaccion sencillita nada mas para trabajar con el query o la consulta, bueno pues aquí un ejemplito:

--http://lafabricadesoftware.blogspot.com/
BEGIN TRANSACTION 
UPDATE persona SET Nombre='Juan'
SELECT * FROM persona
ROLLBACK 
SELECT * FROM persona

lunes, 16 de agosto de 2010

Buscar un campo o algun nombre en un Stored Procedure SQL SERVER 2005

Hace algún tiempo tuve un problema, había que cambiar muchos campos de una tabla dentro de unos cuantos cientos de procedimientos almacenados en sql server 2005, una compañera de trabajo, encontro un poco de código googleando y pues yo igual, junte el código
adaptandolo a nuestras necesidades y sugió este procedimiento almacenado, que encuentra texto en los objetos de la base de datos manejada por sql server 2005,
espero les sirva.
------------------jefedigi-----------------------------------------------
-------busca un texto o cadena en los objetos de la bd-------------------
----------http://lafabricadesoftware.blogspot.com/-----------------------
CREATE PROCEDURE [dbo].[buscaTextoObjetosBD]
@SearchText AS VARCHAR(100)
AS
BEGIN
--DECLARE @SearchText AS VARCHAR(100)
--SET @SearchText = 'JEFEDIGI'
--Consulta de los procedimeintos que contienen dicho texto
SELECT DISTINCT USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name',
CASE
WHEN OBJECTPROPERTY(c.id, 'IsReplProc') = 1
THEN 'Replication stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1
THEN 'Extended stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsProcedure') = 1
THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(c.id, 'IsTrigger') = 1
THEN 'Trigger'
WHEN OBJECTPROPERTY(c.id, 'IsTableFunction') = 1
THEN 'Table-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1
THEN 'Scalar-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1
THEN 'Inline function'
WHEN OBJECTPROPERTY(c.id, 'IsView') = 1
THEN 'View'
END AS 'Object type'
FROM syscomments c
INNER JOIN
sysobjects o
ON c.id = o.id
WHERE c.text LIKE '%'+@SearchText+'%' AND
encrypted = 0 AND
( OBJECTPROPERTY(c.id, 'IsReplProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsProcedure') = 1 OR
OBJECTPROPERTY(c.id, 'IsTrigger') = 1 OR
OBJECTPROPERTY(c.id, 'IsTableFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsView') = 1 )
union
SELECT TABLE_NAME,'Table' FROM INFORMATION_SCHEMA.tables
WHERE table_name LIKE '%'+@SearchText+'%'
UNION
SELECT COLUMN_NAME,'COLUMN' FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@SearchText+'%'
ORDER BY [Object type], 'Object name'
END

miércoles, 11 de agosto de 2010

Dos frases

A lo mejor y esto que escribo no tieene mucha importancia pero bueno, el día de hoy escuche dos frases, en el trayecto de mi casa hacia mi trabajo, estas frases me latieron un buen.
Una de ellas las expreso el director de la universidad TECMILENIO de puebla, haciendo alusión al lado o enfoque humanista y tecnológico de la universidad: "DE QUE SIRVE UN PATAN CON CONOCIMIENTO ", y bueno mientras oía esa frase una persona comento definitivamente "CONOCIMIENTO QUE NO SE COMPARTE NO SIRVE DE NADA".

viernes, 6 de agosto de 2010

El elemento fieldset (Frames en winforms pero en html)

Bueno pues por lo que me he dado cuenta casi nadie conoce esta etiqueta, no se si les ha pasado pero cuando trabaja uno en vb6, o winforms de vb.net hay un elemto que te crea marcos llamado frames, bueno pues en html se puede hacer exactamente lo mismo casi nadie conoce esta etiqueta pero bueno aquí les dejo un ejemplo:

<form>
<fieldset>
<legend>Personalia:</legend>
Name: <input size="30" type="text">
Email: <input size="30" type="text">
Date of birth: <input size="10" type="text">
</fieldset>
</form>

Lo que da como resultado



Persona:
Nombre:
Email:

Algo sencillo, declaración de variables e inicialización en línea

Según http://emilio.aesinformatica.com/2009/09/18/visual-basic-net-variables-y-constantes/ para declarar variables en vb.net lo podemos hacer de la siguiente forma:

dim c as integer, d as intenger
dim c,d as integer
dim h as integer, f as string
dim j,k as integer, s,  nombre as string
dim z as object
dim z (sólo funcionaría si option strict está a off)
dim c,d as integer = 8 (Esto no lo permite, no sabe a cual asignarselo)
dim c as integer=10, n1,n2 as intege

Pero que pasa si estamos acostumbrados a una programción un poco más lineal u horizontal

Ejemplo:

dim a as integer, b as intenger, c as integer
'Ahora para inicializarlos en linea lo podriamos hacer de la siguiente forma
a=1:b=2:c=a

Los : nos ayudan a tener menos lineas de codigo vertical mejorando considerablemente
la visibilidad en nuestro editor de código

Lo que no es este Blog

Navegando por la red encontre esta fábula, támbien conocida como los cangrejos mexicanos y dice más o menos así.
Un mexicano fue al mercado de mariscos y despues de comer unos tacos de pescado, decidio comprar unos cangrejos, de esos que venden vivos y los tienen en canastas. Pasó al primer puesto y el encargado le enseñó unos cangrejos dentro de una canasta bastante alta, la cual estaba tapada con una tabla, el mexicano le preguntó:

“Por qué están tapados con una tabla?”, Ah!, -dijo el vendedor- es que son cangrejos gringos, y si no los tapo, pues empieza uno a escalar hasta que por esfuerzo propio salta de la canasta y se escapa, y si no los tapo, pues me quedo sin cangrejos!!.

Umh! -expresó el mexicano y se fue al siguiente puesto-, ahí estaba una canasta mucho más alta y tapada con una tabla y dos ladrillos. Como resultado de la misma pregunta el vendedor dijo:

“Son cangrejos japoneses y cuando uno se quiere escapar, empieza a apoyarse en los demás, y éstos van empujándolo hacia arriba apoyados en otros y así sucesivamente, de tal manera que se forma una pirámide hasta el borde y entonces el cangrejo se escapa.

Oh!, que bien -pensó el mexicano y se fue al último puesto-, ahí estaba una canasta de cangrejos con un pequeño borde y destapada. Y esta por qué está tan desprotegida, no le da miedo que se le vayan a escapar?? -pregunta al vendedor-

No, no hay problema -dice éste- son cangrejos mexicanos, cuando uno está tratando de sobresalir, entre todos se encargan de jalarlo pa’bajo.

Hijole es una lastima que México no tenga una visión global, por eso estamos como estamos, si fueramos un poquito más concientes que actualmente no solo competitimos entre nosotros sino con el resto de otros países, tal vez nuestra mentalidad cambiaría un poquito, es una lastima encontrar gente muy egocentrica que piensa que lo sabe todo, y pues tal vez si sepa y no comparta su conocimiento o no explote su potencial, y es cuando llegan a decir los demas compañeros, no pues juanito si sabe pero no le quiero preguntar porque es un cooley, y aveces surge la pregunta, ¿Si sabe tanto porque la empresa esta como esta o porque sigue en esta empresa?, pues bien he de admitir que a veces yo siento que las puedo de todas a todas, sin embargo creo que es importante tener humildad y reconocer cuando uno no puede, así como humildad para reconocer el trabajo de los demas, espero que los que lean este blog compartan el poco conocimiento y no se sumen más al tipo de CANGREJO MEXICANO.

Sobre este Blog

Hace algún tiempo un compañero en el trabajo me enseño un video en youtube llamado linux prodigio me llamo la atención mucho una frase de este video que dice: "recabar información es el primer paso hacia la sabiduría, compartirla es el paso hacia la comunidad". El objetivo de este blog es proporcionar información, herramientas, así como resolver algunos problemas en la vida cotidiana de un programador o desarrollador, principalmente con algunos lenguajes de programación como javascript, C#, vb.net, SQL SERVER, UML, MYSQL, PHP, la idea de este blog surgio por la necesidad de compartir información. Es muy satisfactorio. Espero que este blog más que gustar sirva alguien, con una sola persona que le sirva este blog habrá valido la pena.