Retroceder   Foros del Web > Programación para sitios web > ASP Clásico

Respuesta
 
Herramientas Desplegado
Antiguo 06-may-2008, 16:35   #1 (permalink)
Uefor no se puede cailificar en este momento
 
Avatar de Uefor
 
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 134
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
Uefor está desconectado   Responder Citando
Antiguo 06-may-2008, 17:59   #2 (permalink)
Moderador
Myakire llegará a ser famoso muy prontoMyakire llegará a ser famoso muy prontoMyakire llegará a ser famoso muy prontoMyakire llegará a ser famoso muy pronto
 
Avatar de Myakire
 
Fecha de Ingreso: noviembre-2002
Mensajes: 6.541
Enviar un mensaje por Yahoo  a Myakire
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
Myakire está desconectado   Responder Citando
Antiguo 07-may-2008, 01:03   #3 (permalink)
Uefor no se puede cailificar en este momento
 
Avatar de Uefor
 
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 134
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-may-2008 a las 03:47. Razón: Errata
Uefor está desconectado   Responder Citando
Antiguo 07-may-2008, 08:19   #4 (permalink)
Lebennin está en el buen camino
 
Fecha de Ingreso: septiembre-2005
Mensajes: 127
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
Lebennin está desconectado   Responder Citando
Antiguo 07-may-2008, 09:29   #5 (permalink)
Moderador
Myakire llegará a ser famoso muy prontoMyakire llegará a ser famoso muy prontoMyakire llegará a ser famoso muy prontoMyakire llegará a ser famoso muy pronto
 
Avatar de Myakire
 
Fecha de Ingreso: noviembre-2002
Mensajes: 6.541
Enviar un mensaje por Yahoo  a Myakire
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
Myakire está desconectado   Responder Citando
Antiguo 07-may-2008, 15:43   #6 (permalink)
Uefor no se puede cailificar en este momento
 
Avatar de Uefor
 
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 134
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-may-2008 a las 16:27. Razón: Después de probar el código
Uefor está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:57.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93