Problemas con la función DLookup cuando el criterio es un campo de tipo fecha

Señores buenas noches, mi pregunta es la siguiente: Tengo dos tabla llamadas movimientos y terceros, con los siguientes campos: Movimientos (Idmov, Idter, Fechaven, etc) y Terceros (Idter, identificación, etc), además tengo un formulario llamado Frmmovimientos, entre los textbox que tiene está el de CmbIdter y TxtFechamov (con formato día, mes, año.) Lo que busco es que al momento de seleccionar en el formulario un tercero (CmbIdter) y una fecha (TxtFechamov) y al presionar enter en el textbox fecha, busque en la tabla movimientos si existe el Idter y la fecha seleccionada en el formulario. Si la encuentra que saque un mensaje que diga que el tercero ya tiene movimientos en esa fecha. Me explico, las fechas se pueden repetir, pero con diferentes terceros, con el mismo tercero no. Para lograrlo he utilizado la función Dlookup sin conseguir resultado ya que con dos criterios no la había utilizado. Hasta el momento tengo esto:

If (Not IsNull(DLookup("[Fechaven]", "Movimientos", "[Idter] = " & Me.CmbIdter & ""))) Then

MsgBox "La fecha de venta para este cliente en la tabla Movimientos," _
& vbCrLf & "Ya aparece registrada, por favor verifique y corrija", vbInformation, "Fecha Encontrada"
Me. TxtFecha. SetFocus
Exit Sub
End If

Pero este codigo no me funciona.

1 respuesta

Respuesta
2

La sintaxis del DLookUp con dos criterios (uno de fecha) sería:

DLookup("[Fechaven]", "Movimientos", "[Idter] = " & Me.CmbIdter & " AND [Fechave]=# & Me.TxtFechamov & "#")

Como ves la único que debes hacer es poner el valor de fecha entre almohadillas (#)

Por otro lado, quizás te sería mejor hacer la validación usando DCount, que devolverá un 0 si no hay coincidencia con los criterios o el número de registros que los cumplen, con lo que tu validación sería:

If DCount("*", "Movimientos", "[Idter] = " & Me.CmbIdter & " AND [Fechave]=# & Me.TxtFechamov & "#")>0 Then
  MsgBox "La fecha de venta para este cliente en la tabla Movimientos," _
  & vbCrLf & "Ya aparece registrada, por favor verifique y corrija", vbInformation, "Fecha Encontrada"
  Me. TxtFecha. SetFocus
  Exit Sub
End If

Un saludo.


Sveinbjorn el Rojo. Muchísimas gracias por tu pronta y oportuna respuesta. He probado con azoambos códigos y funcionan bien, decidí quedarme con la segunda. Mil y miles de gracias por su ayuda. Dios bendiga a usted y toda su familia. Un abrazo

Hola saludos Sveinbjorn el rojo. Disculpa esta mañana un compañero de labores aplico el codigo que enviaste y me dijo que funciono perfectamente, por eso hasta vote la respuesta como excelente, ahora que yo lo estoy probando me sale este error. Error de compilación: se esperaba: un separador de listas o ). Y la línea If DCount("*", "Movimientos", "[Idter] = " & Me.CmbNombre & " AND [Fechaven]=# & Me.TxtFecha & "#") > 0 Then,  se pone de color rojo el ultimo simbolo # que esta entre las dos comillas se pone azul, he probado con quitar comillas, agregar comillas, agregar paréntesis y nada no he podido dar. Te pido por favor me revises el código.  Los textbox o campos que van escrito en la línea son exactamente los que yo uso.    

Sveinbjorn El Rojo, , 

Efectivamente faltan unas comillas después de la primera almohadilla:

 If DCount("*", "Movimientos", "[Idter] = " & Me.CmbNombre & " AND [Fechaven]=#" & Me.TxtFecha & "#") > 0 Then

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas