SQL SERVER
IS NULL, IS NOT NULL, <>,=.
Realizando algunas pruebas con una consulta, la cual me arrojaba datos, que ya no deberían mostrarse en el GRID, me puse a verificar las tablas directo en el Gestor de BD’s e hice unas consultas sobre una de las tablas involucradas de la siguiente forma para verificar que el campo no es nulo:
SELECT CVE_T_DOCTO FROM [SIMAN].[SIMAN].[DOCUMENTO]
WHERE CVE_T_DOCTO <> NULL AND num_publicacion like '%MSS-%'
Y sorpresa, no me marcó ningún error, pero no mostró la información.
Asi es que mejor lo hice de esta forma:
SELECT CVE_T_DOCTO FROM [SIMAN].[SIMAN].[DOCUMENTO]
where NOT(cve_t_docto IS NULL) AND num_publicacion like '%MSS-%'
Ó
Tambien lo pueden realizar así:
SELECT CVE_T_DOCTO
FROM [SIMAN].[SIMAN].[DOCUMENTO]
where cve_t_docto IS NOT NULL and num_publicacion like '%MSS-%'
Explicación:
El null es que se desconoce el valor, siginifica que el campo no tiene valor
y la cadena vacia (‘’)es que se conoce y es vacio.
Indica que hay una cadena vacía, pero cadena al fin. O sea, existe algo: una cadena.De esto se deriva que no puedas usar condiciones (where) preguntando si "campo = null", sino que existe la sentencia especial "campo is null".
NULL ni siquiera ocupa espacio, es como una variable declarada pero no utilizada.
La diferencia entre un campo vacío y uno nulo es la “virginidad” del campo. Un campo nulo está “vírgen”. Una vez que se carga un valor (cualquier valor) deja de ser nulo. Luego, por más que quieras vaciarlo no volverá a ser virgen (nulo).
Es este caso yo estoy utilizando SQL SERVER 2005.
No olviden dejar sus comentarios.
viernes, 30 de octubre de 2009
jueves, 29 de octubre de 2009
Variables de Session con Asp.Net
Introducción
Las variables de sesión son algunos de los métodos más utilizados frecuentemente para intercambiar información entre las páginas. Sin embargo existen algunos inconvenientes para utilizar las variables de sesión por ejemplo:
Las variables de Session se acceden por sus nombres de cadena:
Session(“Clave”).
Dado que los nombres mal escritos no se detectan en tiempo de compilación, esto puede llevar a errores de tiempo de ejecución que muchas veces son difíciles de depurar.
El valor de una variable de Session no es fuertemente tipado (strongly type). Un valor de cualquier tipo puede ser almacenado dentro de una variable de Session, pero el compilador no verifica el tipo.
Una vez que una variable se recupera de una sesión, se le debe hacer un "Cast" o "Casting", para que dicha variable sea util.
En los lenguajes fuertemente tipados, el compilador no permite que se utilice una variable como parametro de un procedimiento, si sus tipos no coinciden exactamente.
En el siguiente ejemplo voy a mostrar como manejar variables de sesión fuertemente tipadas.
Solución
La idea básicamente es encapsular las variables de Session en propiedades estaticas de una clase.
Implementaciòn de la clase:
SessionActual, es un atajo para de HttpContext.Current.Session; tambien nos ayuda a controlar en caso de que la Session no este disponible.
La clase la pueden crear dentro de la Carpeta “App_Code”.
Imports System.Web.SessionState.HttpSessionSate
Imports System.Web.SessionState
Imports System.Web.UI.Page
Public Class clsSession
Private Shared userCve As String = "cve_usuario"
Private Shared userRol As String = "cve_Rol"
Private Shared ReadOnly Property SessionActual() As HttpSessionState
Get
If HttpContext.Current.Session Is Nothing Then
SessionActual.Abandon()
Throw new Exception("Error,ha caducado su sesión, debe iniciar sesión nuevamente.")
Else
Return HttpContext.Current.Session
End If
End Get
End Property
Public Shared Property cveUsuario() As String
Get
Return TryCast(currentSession(userCve), String)
End Get
Set
If value <> Nothing Then
SessionActual(userCve) = value
Else
SessionActual.Remove(userCve)
End If
End Set
End Property
Public Shared Property Rol() As String
Get
Return TryCast(SessionActual(userRol), String)
End Get
Set
If value <> Nothing Then
SessionActual(userRol) = value
Else
SessionActual.Remove(userRol)
End If
End Set
End Property
End Class
Siguiendo con el mismo tema, se van a topar que al utilizar variables de session, al caducar dicha session se pierden los valores, así es que deben validar el estado de la session, si ocupan “variables de session”, para pasar como parámetros a sus consultas de lo contrario al mandar dato nulo en su consulta les marcará error.

Nota:
TryCast, Está disponible en Visual Basic 2005 y posterior, se usa solo con tipos por referencia, y se usa normalmente comprobando si el valor que devuelve no es nulo (Nothing).
En todas las conversiones, excepto con TryCast, si la conversión no se puede hacer, se produce una excepción del tipo InvalidCastException, con TryCast, si no se puede hacer la conversión "simplemente" se devuelve un valor nulo.
Espero me dejen sus comentarios, debido a cuestiones de trabajo había dejado abandonado un poco el blog, pero procurare escribir más seguido.
Las variables de sesión son algunos de los métodos más utilizados frecuentemente para intercambiar información entre las páginas. Sin embargo existen algunos inconvenientes para utilizar las variables de sesión por ejemplo:
Las variables de Session se acceden por sus nombres de cadena:
Session(“Clave”).
Dado que los nombres mal escritos no se detectan en tiempo de compilación, esto puede llevar a errores de tiempo de ejecución que muchas veces son difíciles de depurar.
El valor de una variable de Session no es fuertemente tipado (strongly type). Un valor de cualquier tipo puede ser almacenado dentro de una variable de Session, pero el compilador no verifica el tipo.
Una vez que una variable se recupera de una sesión, se le debe hacer un "Cast" o "Casting", para que dicha variable sea util.
En los lenguajes fuertemente tipados, el compilador no permite que se utilice una variable como parametro de un procedimiento, si sus tipos no coinciden exactamente.
En el siguiente ejemplo voy a mostrar como manejar variables de sesión fuertemente tipadas.
Solución
La idea básicamente es encapsular las variables de Session en propiedades estaticas de una clase.
Implementaciòn de la clase:
SessionActual, es un atajo para de HttpContext.Current.Session; tambien nos ayuda a controlar en caso de que la Session no este disponible.
La clase la pueden crear dentro de la Carpeta “App_Code”.
Imports System.Web.SessionState.HttpSessionSate
Imports System.Web.SessionState
Imports System.Web.UI.Page
Public Class clsSession
Private Shared userCve As String = "cve_usuario"
Private Shared userRol As String = "cve_Rol"
Private Shared ReadOnly Property SessionActual() As HttpSessionState
Get
If HttpContext.Current.Session Is Nothing Then
SessionActual.Abandon()
Throw new Exception("Error,ha caducado su sesión, debe iniciar sesión nuevamente.")
Else
Return HttpContext.Current.Session
End If
End Get
End Property
Public Shared Property cveUsuario() As String
Get
Return TryCast(currentSession(userCve), String)
End Get
Set
If value <> Nothing Then
SessionActual(userCve) = value
Else
SessionActual.Remove(userCve)
End If
End Set
End Property
Public Shared Property Rol() As String
Get
Return TryCast(SessionActual(userRol), String)
End Get
Set
If value <> Nothing Then
SessionActual(userRol) = value
Else
SessionActual.Remove(userRol)
End If
End Set
End Property
End Class
Siguiendo con el mismo tema, se van a topar que al utilizar variables de session, al caducar dicha session se pierden los valores, así es que deben validar el estado de la session, si ocupan “variables de session”, para pasar como parámetros a sus consultas de lo contrario al mandar dato nulo en su consulta les marcará error.
Nota:
TryCast, Está disponible en Visual Basic 2005 y posterior, se usa solo con tipos por referencia, y se usa normalmente comprobando si el valor que devuelve no es nulo (Nothing).
En todas las conversiones, excepto con TryCast, si la conversión no se puede hacer, se produce una excepción del tipo InvalidCastException, con TryCast, si no se puede hacer la conversión "simplemente" se devuelve un valor nulo.
Espero me dejen sus comentarios, debido a cuestiones de trabajo había dejado abandonado un poco el blog, pero procurare escribir más seguido.
Suscribirse a:
Entradas (Atom)