No coinciden los tipos en la función Dlookup
Tengo una tabla llamada histórico con los siguientes campos: Nombre; FechaEntrada;FechaSalida; HoraEntrada; Hora salida... ¿El caso es que tengo el siguiente código (lo pondré al final)... Si pongo en la tabla el tipo de datos como texto no hay ningún problema pero si lo pongo como Fecha/Hora me salta un mensaje de error de que no coinciden los tipos... Como debería hacer para que la variable xbusca2 me busque también campos de Horas... Es la misma función o debería usar otra?...
Private Sub ctlEntrada_Click()
xBusca = DMax("FechaEntrada", "HoraS3DMax", "[Nombre] = txtUsuario")
xbusca1 = DMax("HoraEntrada", "HoraS3DMax", "[FechaEntrada] ='" & xBusca & "' and [Nombre]= txtUsuario")
xbusca2 = DLookup("[HoraSalida]", "HoraS3DMax", "[Nombre] = '" & txtUsuario & "' and [FechaEntrada] = '" & xBusca & "' and [HoraEntrada] = '" & xbusca1 & "'")
If IsNull(xbusca2) Then
Call MsgAviso("Hora Entrada", "No se puede fichar una Entrada sin haber salido previamente")
Else
Set db = CurrentDb
Set Rst = db.OpenRecordset("Historico")
With Rst
.AddNew
!Nombre = txtUsuario
!FechaEntrada = Date
!HoraEntrada = Time
!HoraLaboral = ctlLaboral
!HoraExtra = ctlExtra
.Update
End With
Rst.Close
Call MsgFichar("Hora Entrada", "Se fichó la entrada a las " & Time)
End If
End Sub
Espero haberme explicado bien... Me estoy volviendo loco con este tema... Una única aclaración es que la consulta HoraS3Dmax es una consulta ordenada para que me funcionen correctamente las funciones Dmax... No tienen ninguna otra función...
Private Sub ctlEntrada_Click()
xBusca = DMax("FechaEntrada", "HoraS3DMax", "[Nombre] = txtUsuario")
xbusca1 = DMax("HoraEntrada", "HoraS3DMax", "[FechaEntrada] ='" & xBusca & "' and [Nombre]= txtUsuario")
xbusca2 = DLookup("[HoraSalida]", "HoraS3DMax", "[Nombre] = '" & txtUsuario & "' and [FechaEntrada] = '" & xBusca & "' and [HoraEntrada] = '" & xbusca1 & "'")
If IsNull(xbusca2) Then
Call MsgAviso("Hora Entrada", "No se puede fichar una Entrada sin haber salido previamente")
Else
Set db = CurrentDb
Set Rst = db.OpenRecordset("Historico")
With Rst
.AddNew
!Nombre = txtUsuario
!FechaEntrada = Date
!HoraEntrada = Time
!HoraLaboral = ctlLaboral
!HoraExtra = ctlExtra
.Update
End With
Rst.Close
Call MsgFichar("Hora Entrada", "Se fichó la entrada a las " & Time)
End If
End Sub
Espero haberme explicado bien... Me estoy volviendo loco con este tema... Una única aclaración es que la consulta HoraS3Dmax es una consulta ordenada para que me funcionen correctamente las funciones Dmax... No tienen ninguna otra función...
Respuesta de Johan Montiel
1