Quiero obtener el dato de una campo determinado de una tabla determinada, el último registro para ser concretos. Y para obtener el ultimo registro, ¿con un criterio sobre otro campo?
Hay bastantes y documentadas formas de hacer esto, puedes probar el siguiente subprocedimiento con neptuno.mdb. Pega el Sub en cualquier modulo o crea uno nuevo para el propósito: Ejemplo del método Move Este ejemplo utiliza el método Move para posicionar el puntero del registro basado en una entrada del usuario. Sub MoveX() Dim dbsNeptuno As Database Dim rstProveedores As Recordset Dim varMarcador As Variant Dim strComando As String Dim lngMover As Long Set dbsNeptuno = CurrentDb Set rstProveedores = _ dbsNeptuno.OpenRecordset("SELECT NombreCompañía, " & _ "Ciudad, País FROM Proveedores ORDER BY NombreCompañía", _ DbOpenDynaset) ' Salida de la Consulta With rstProveedores ' Llena el Recordset. .MoveLast .MoveFirst Do While True ' Muestra la información acerca del registro ' Actual y pregunta al usuario cuántos registros desea mover. strComando = InputBox( _ "Registro " & (.AbsolutePosition + 1) & " de " & _ .RecordCount & vbCr & "Compañía: " & _ !NombreCompañía & vbCr & "Ciudad: " & !Ciudad & _ ", " & !País & vbCr & vbCr & _ "Introduzca el número de registros a mover " & _ "(positivo o negativo).") If strComando = "" Then Exit Do ' Almacena el marcador de posición en caso de que no funcione Move. varMarcador = .Bookmark ' El método Move necesita el parámetro del tipo de datos Long. lngMover = CLng(strComando) .Move lngMover ' Intercepta el BOF o el EOF. If .BOF Then MsgBox "¡Demasiado hacia atrás! " & _ "Volviendo al registro actual." .Bookmark = varMarcador End If If .EOF Then MsgBox "¡Demasiado hacia adelante! " & _ "Volviendo al registro actual." .Bookmark = varMarcador End If Loop .Close End With dbsNeptuno.Close End Sub Para obtener el ultimo registro, con un criterio sobre otro campo, puedes usar el mismo Filtro que te aconseje en una respuesta anterior, solo que modificado: Añades un cuadro de texto independiente para que nos sirva de cadena de criterios, y un botón de comando para ejecutar el siguiente Sub: Sub EsFiltro() On Error Resume Next Dim frm As Form, cadMsg As String Dim cadInput As String, cadFiltro As String ' Abrir DoCmd.OpenForm "ClientesFiltro" ' Devolver variable de objeto Formulario Set frm = Forms!ClientesFiltro cadInput = Me.CtlTextIndp 'el texto que escribamos finalizado con un * servirá 'para construir la cadena de criterios usando el campo IdCliente. cadFiltro = BuildCriteria("IdCliente", dbText, cadInput) ' Establecer propiedad Filtro para aplicar Filtro. frm.Filter = cadFiltro ' Establecer la propiedad ActivarFiltro; el formulario muestra ahora los registros filtrados. frm.FilterOn = True DoCmd.GoToRecord , , acLast 'mover al ultimo registro del conjunto recordset filtrado End Sub