Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Query con posible valor NULL (http://www.forosdelweb.com/f15/query-con-posible-valor-null-583641/)

Uefor 06/05/2008 16:35

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

Myakire 06/05/2008 17:59

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

Uefor 07/05/2008 01:03

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...

Lebennin 07/05/2008 08:19

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

Myakire 07/05/2008 09:29

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

Uefor 07/05/2008 15:43

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...


La zona horaria es GMT -6. Ahora son las 01:24.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.