DLookup con DLast y una condición

Necesito traer a un campo de un formulario el valor del ultimo registro de una consulta llamada C_40, el campo se llama Código (campo texto) pero no se como hacerlo, he escrito la siguiente sentencia pero no me funciona, me podéis ayudar, gracias.

Me.L400 = DLookup("CODIGO", "C_40", "Codigo='" & DLast("CODIGO") & "'")

3 respuestas

Respuesta
1

No veo claro que quiere obtener. Pruebe con esto

Me.L400=DLa("campo","tabla","CODIGO='C_40'") en donde "campo" es el campo resultado a obtener y "tabla" es el nombre de la tabla.

Gracias Emilio por dedicarme tu tiempo.

C_40 es una consulta basada en una tabla que se llama dbo_Proveed, donde existe una consulta al campo Código con una condición

SELECT dbo_proveed.CODIGO
FROM dbo_proveed
WHERE (((dbo_proveed.CODIGO)<"400001764"))
ORDER BY dbo_proveed.CODIGO;

L400 es el campo del formulario donde debe recoger el ultimo código registrado que sea menor de 400001764(texto) le he puesto a la consulta ordenación para que el ultimo campo sea el correcto, porque no coincide el orden del Id de registro con el código y al hacer la llamada de DLast no coincide

Observe este ejemplo

Con base en la tabla dbo_Proveed programo el evento Después de actualizar del campo "Último código" (puede ser en un botón etc)

Código del evento después de actualizar

Private Sub ctlCodigo_AfterUpdate()
  Dim strSQL As String
  Dim rs As Recordset
  strSQL = "SELECT dbo_Proveed.CODIGO FROM dbo_Proveed WHERE dbo_Proveed.CODIGO <'" & Me.ctlCodigo & "'" & " ORDER BY dbo_Proveed.CODIGO;"
  Set rs = CurrentDb.OpenRecordset(strSQL)
  If rs.BOF And rs.EOF Then
    MsgBox "Error.. la tabla no tiene datos", vbCritical, "Error.."
    Exit Sub
  Else
   rs.MoveLast
   Me.L400 = rs!CODIGO
  End If
End Sub

Creo que le respondieron es para obtener el último registro y entiendo que el anterior al último. Tengo cuidado cuando valora una respuesta que ésta responda a su expectativa.

Respuesta
1

No necesitas el Dlookup. Por ejemplo, supongamos que tengo una consulta Consulta1 como

Fíjate en el nombre del último cliente

En un formulario cualquiera tengo un cuadro de texto, y para el ejemplo voy a usar un botón de comando, que no sería necesario porque la instrucción la puedo poner en cualquier evento.

Cuando pulso el botón

Y el código del evento Al hacer clic del botón es, sencillamente

Private Sub Comando67_Click()
Texto68 = DLast("cliente", "consulta1")
End Sub
Respuesta
1

Una nota adicional.

Las funciones de dominio comparten la sintaxis, todas tienen tres parámetros de los cuales el tercero (la condición) es optativa.

Solo DCount (que cuenta los registros, no los campos ni los valores ) puede utilizar el asterisco como primer parámetro.

Lo que has publicado (que en principio parece redundante) dará error porque en la condición se utiliza una función de dominio en la que de le pide 'el ultimo' pero no se le dice donde buscarlo (el dominio)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas