Foros del Web » Programando para Internet » ASP Clásico »

Query con posible valor NULL

Estas en el tema de Query con posible valor NULL en el foro de ASP Clásico en Foros del Web. Hola a tod@s, Tengo esta consulta que no consigo sacarle punta... Cita: "SELECT TOP 1 * FROM tabla WHERE (Fecha < #"&FechaEvento&"# OR Fecha IS ...
  #1 (permalink)  
Antiguo 06/05/2008, 16:35
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Query con posible valor NULL

Hola a tod@s,
Tengo esta consulta que no consigo sacarle punta...
Cita:
"SELECT TOP 1 * FROM tabla WHERE (Fecha < #"&FechaEvento&"# OR Fecha IS NULL) AND (Usuario="&Usuario&" OR Usuario IS NULL) ORDER BY Fecha DESC"
Necesito ingresar en un INSERT la fecha del último evento al que asistió el usuario para establecer un orden de preferencias en el que se está apuntando, el problema es que si el usuario no ha asistido a ningún evento me da un error porque no existe en la tabla.

Alguien me dice que tengo mal hecho en la consulta please...
SaLu2
  #2 (permalink)  
Antiguo 06/05/2008, 17:59
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Query con posible valor NULL

Qué es lo que te da error?

Pon el código.

Básicamente necesitas validar si algo es null (IsNull(rs("Campo")) hacer otra cosa; también puedes dejar el campo que falla como que permita nulos, o lo que es mejor, necesitas definir bien las reglas del negocio y analizar si ese insert se debe efectuar en caso de que no haya asistido a otros eventos.

Saludos
  #3 (permalink)  
Antiguo 07/05/2008, 01:03
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Query con posible valor NULL

Le he puesto la función IsNull, pero sigue igual...
Código:
Dim rst, sqltext, UltimoEvento 
set rst = Server.CreateObject("ADODB.RecordSet")
sqltext = "SELECT TOP 1 Fecha FROM UsuariosEventos WHERE (Fecha < #"&FechaEventos&"# OR Fecha is null) AND (idusuario="&usuario&" OR usuario is null) ORDER BY Fecha DESC"
rst.Open sqltext, cnn

if IsNull(rst("Fecha"))  then
UltimoEvento = "01-01-2008"
else
UltimoEvento = rst("Fecha") 
end if

strSQL = "INSERT INTO UsuariosEventos  (idusuario,idevento,Fecha) VALUES('"&usuario&"','"&evento&"','"&UltimoEvento&"')"	
Cnn.Execute(strSQL)
No estoy seguro de estar usandola adecuadamente
Gracias Myakire...

Última edición por Uefor; 07/05/2008 a las 03:47 Razón: Errata
  #4 (permalink)  
Antiguo 07/05/2008, 08:19
 
Fecha de Ingreso: septiembre-2005
Mensajes: 135
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Query con posible valor NULL

El problema es que estas preguntando si el registro es NULO y posiblemente el problema es que la consulta no te devuelve nada. Es decir, el código sería el siguiente:

rst.Open sqltext, cnn

if rst.EOF And rst.BOF then
UltimoEvento = "01-01-2008"
else
UltimoEvento = rst("Fecha")
end if
  #5 (permalink)  
Antiguo 07/05/2008, 09:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Query con posible valor NULL

El error no dirá que es lo que esta pasando. Yo suponía que era un error en el insert, pero si el error otro ....

pon el error
  #6 (permalink)  
Antiguo 07/05/2008, 15:43
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Query con posible valor NULL

El problema creo que es efectivamente lo que comenta Lebennin... cuando las conciciones no se cumplen
Cita:
Fecha < #"&FechaEventos&"# OR Fecha is null) AND (idusuario="&usuario&" OR usuario is null
La query en teoría debería dar un valor null, pero da el error en la variable que saco del recordset que necesito para el INSERT porque no devuelve nada.

He salido del paso poniendo un registro ficticio en la db para que si no existe la condición sea igual a ese valor en vez de null
Cita:
Fecha < #"&FechaEventos&"# OR Fecha=#01-01-2008#) AND (usuario ="&usuario &" OR usuario =4300999
He probado con ese código de Lebennin y va de lujo por lo que ese registro no me hace falta ya...
Gracias...

Última edición por Uefor; 07/05/2008 a las 16:27 Razón: Después de probar el código
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:27.