Access - Dlookup con fechas

   
Vista:

Dlookup con fechas

Publicado por David (15 intervenciones) el 02/09/2009 18:02:18
Tengo un formulario, con dos cuadros de texto, Fecha inicial [FInicial] y Fecha Final [FFinal] y un boton que ejecura el siguiente código al hacer click.

Private Sub Boton_Click()

Dim X As Variant
Dim D As Date

D = [FInicial]

While D <= [FFinal]

X = DLookup("[Id]", "Registro de hora", "[Fecha] = # " & D & " # ")

If IsNull(X) Then
MsgBox "Falta al trabajo"
Else
MsgBox "Asiste a trabajar"
End If

D = D + 1
MsgBox "Dia despues: " & D

Wend

End Sub

Que en definitiva trata de buscar un registro con el criterio de fecha en la tabla Registro de hora.
el problema es que aún existiendo el registro no lo encuentra y devuelve Nulo.

Los gürus del Access, AYUDADME por favoor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dlookup con fechas

Publicado por dado (5 intervenciones) el 02/09/2009 21:35:25
revisa el link
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por Jefferson (135 intervenciones) el 02/09/2009 22:20:51
Amigo David

A las variables tipo Variant "no le puedes pasar valores Nulos" pues no lo reconoce, ni acepta. Para ello debes usar la funcion Nz para que te devuelva 0 y asi condicionar la instruccion if then

quedaria algo asi

Dim D As Date
D = [FInicial]
While D <= [FFinal]
If Nz(DLookup("[Id]", _
"Registro de hora", _
"[Fecha] = #" & Format(FInicial, "mm/dd/yy") & "#") _
, 0) = 0 Then
MsgBox "Falta al trabajo"
Else
MsgBox "Asiste a trabajar"
End If
D = D + 1
MsgBox "Dia despues: " & D
Wend

Espero haberte ayudado
Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por Antonio (83 intervenciones) el 04/09/2009 00:58:11
Hola,

Si me permitís, una pequeña puntualización:

en el código de David es correcto que haya definido como Variant la variable que recibe lo obtenido por DLookUp para prevenir el caso en que no hubiera ninguna fecha y entonces devolveria NULL. El verificarlo con NZ es también correcto. Lo que creo que le falta es formatear D

X = DLookup("[Id]", "Registro de hora", "[Fecha] = # " & format(D,"mm/dd/yyyy") & " # ")

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por David (15 intervenciones) el 04/09/2009 13:54:19
Gracias a los dos, me habeis resuelto el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por David (15 intervenciones) el 04/09/2009 14:06:04
Abusando de vuestra paciencia

(DLookup("[Id]", "Registro de hora", "[CRT]= " & Nombre & " " And "[Fecha] = #" & Format(D, "mm/dd/yyyy") & "#"), 0) = 0 Then

Que está mal???

Nombre es una variable del tipo Variant, inicializada Nombre = "AMA"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por David (15 intervenciones) el 04/09/2009 15:12:50
Corrijo:

If Nz(DLookup("[Id]", "Registro de hora", "[CRT]= " & Nombre & " And [Fecha] = #" & _ Format(D, "mm/dd/yyyy") & "#"), 0) = 0 Then

Da error
" Se ha producido el error 2001 en tiempo de ejecución, canceló la operación anterior"

Incluso utilizando solo un criterio

If Nz(DLookup("[Id]", "Registro de hora", "[CRT] = " & Nombre & " "), 0) = 0 Then

Da el mismo error

" Se ha producido el error 2001 en tiempo de ejecución, canceló la operación anterior"

Ayudadme por favor, ¿que pasa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por Jefferson (135 intervenciones) el 04/09/2009 20:02:19
Hola David

El problema lo tienes con las comillas, me explico

Si el campo es texto '" & me.campo & "'"
Si es numerico & me.campo
si es fecha #" & format(me.campo "mm/dd/yyyy") & "#"

Revisa bien y cambias donde pertenece

Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por David (15 intervenciones) el 07/09/2009 10:34:01
Muchas gracias, Jefferson, tomo nota.
Lo he probado y no me da error, pero no hace lo que debería, voy a revisarlo todo de nuevo a ver si doy con el problema.
Gracias, por todo, este último comentario me viene muy bien, no sabía las diferencias entre los diferentes tipos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dlookup con fechas

Publicado por David (15 intervenciones) el 07/09/2009 12:15:31
Ok, todo resuelto, gracias a todos por vuestra ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar