Problemas con DLookUp

A ver si alguien puede ayudarme por favor

Tengo el siguiente código

Private Sub CmdGuardar_Click()
Dim miSQL01 As String
Dim nomb As Variant

‘consulta de inserción de datos
miSQL01= "INSERT INTO TblGuardias ( ....... ) SELECT ........

‘compruebo si existe algún registro para esa guardia y ese día
nomb = DLookup("Nombre", "TblGuardias", "Control ='"& Me.TxtContro01 & "'" And "ParaDia ='" & Me.TxtParadia01 & "'")

DoCmd.SetWarnings False
If
IsNull(nomb) Then ‘si es nulo se ejecuta la consulta sino sale del evento
DoCmd.RunSQL miSQL01
Else
Exit Sub
End If
DoCmd.SetWarnings True

MsgBox "La Información se Guardo Correctamente", vbInformation + vbOKCancel,
"Guardar"
DoCmd. Close
DoCmd. OpenForm "fmlprincipal", acNormal,,,
acFormReadOnly, acWindowNormal
End Sub

Todo funciona bien menos la sentencia DlookUp, Control es un numero y TxtControl01 es el campo desde el que se introduce ese código, ParaDia es una fecha formato dd/mm/aaaa y el TxtParaDia01 es el campo desde el que se introduce el dato

Uso Access 2010

1 respuesta

Respuesta
1
Los criterios de fecha tienes que encerrarlos entre almohadillas (#) y no entre comillas simples (').
Mira a ver si asi te sirve:
nomb = DLookup("Nombre", "TblGuardias",
"Control ='"& Me.TxtContro01 & "'" And "ParaDia
=#" & Me.TxtParadia01 & "#")
Si aun no te va, prueba convirtiendo la fecha a formato americano, con Format(Me.TxtParadia01,"mm/dd/yyyy")

he probado lo que me has dicho ambas formas pero sigue dando el mismo error pero parece que es en la variable, ya que nomb siempre la pone con valor "" a aunque en la tabla exista el dato, pero la variable esta bien o eso creo, también he probado a poner la variable como string, siempre sale el error 13

muchas gracias

Ya vi el error: el AND tienes que meterlo también dentro de las comillas dobles:

nomb = DLookup("Nombre", "TblGuardias",
"Control ='"& Me.TxtContro01 & "' And ParaDia
=#" & Me.TxtParadia01 & "#")

o:

nomb = DLookup("Nombre", "TblGuardias",
"Control ='"& Me.TxtContro01 & "' And ParaDia
=#" & Format(Me.TxtParadia01,"mm/dd/yyyy") & "#")

Efectivamente ya no da error pero sigue sin cargarme la variable, sea cual sea el resultado siempre es "".

Lo he intentado también con una consulta SQL y el resultado es el mismo

Muchas gracias

Disculpa, a veces las prisas no son buenas... Releyendo tu pregunta original, acabo de fijarme que "Control es un número" (y lo dices bien claro...), por tanto, el error está en que le estás pasando el número como si fuera texto, es decir, entre comillas simples.

A ver si así te va:

nomb = DLookup("Nombre", "TblGuardias",
"Control ="& Me.TxtContro01 & " And ParaDia
=#" & Me.TxtParadia01 & "#")

o:

nomb = DLookup("Nombre", "TblGuardias",
"Control ="& Me.TxtContro01 & " And ParaDia
=#" & Format(Me.TxtParadia01,"mm/dd/yyyy") & "#")

En resumen:

1. Los criterios numéricos se pasan directamente.

2. Los criterios de texto se pasan entre comillas simples (')

3. Los criterios de fecha/hora se pasan entre almohadillas (#)

Pues a un que no da ningún tipo de error no me carga la variable, me sigue dando el valor ("") a un que exista algún resultado.

El caso es que debería de funcionar pero no me funciona

Bufff, pues sin verlo poco más te puedo decir, pues en teoría debiera funcionar. ¿Sería posible que me pasaras una copia de tu BD para analizar donde está el problema?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas