¿Cómo encontrar el último registro en BD Access?

Estoy programando en Visual Basic 6.0 y con Data Environment para conectarme a una base de datos de Access. Quiero por código identificar el último registro y el código que utilizo es:
DE. RsCuenta, open
DE.rsCuenta.Filter = ""
If DE.rsCuenta.RecordCount = 0 Then
ultimoIdCuenta = 1
Else
DE.rsCuenta.MoveLast
ultimoIdCuenta = DE.rsCuenta("Id_Cuenta")
ultimoIdCuenta = ultimoIdCuenta + 1
End If
DE. RsCuenta. Close
Cuando ejecuto la instrucción no muestra debidamente el último registro. Cuando depuro el programa observo que al iniciar la connección: DE. RsCuenta("Id_Cuenta") no muestra el primer registro (me parece que se posiciona en cualquier registro) y después de: DE. RsCuenta. MoveLast tampoco se ubica en el último registro. Este error lo hace repetidamente y con distintas tablas. ¿Qué estoy haciendo mal?
El mismo procedimiento utilicé para trabajar con bases de datos en SQL Server y todo funciona muy bien, no se porque no funciona bien con Access.
Si me puedes orientar cómo solucionar esto te los agradecerá.

1 respuesta

Respuesta
1
¿Le das algún tipo de orden al Idcuenta cuando haces la consulta?
¿Es un campo primario?
Contestame y si podes pásame la consulta que seguimos viendo que pasa
Hola Emperador, gracias por responder.
Id_Cuenta es la clave primaria de la tabla Cuenta. Lo que busco es que me cargue en la variable "ultimoIdCuenta" el último número de Id_Cuenta para luego incrementarlo en uno y utilizarlo an el próximo addnew de la tabla.
Todas las tablas las indexo de esta forma pero, no se por qué, en esta no lo hace correctamente. Observo que luego de abrir la tabla, "DE.rsCuenta("Id_Cuenta")" no muestra "1" (primer registro) sino muestro otro número.
Lo que pasa entiendo que es raro, previo a escribirte la primera vez revisé la tabla de Access y no encontré nada y además actualicé la conexión del DE pensando que posiblemente estaba ahí el problema, pero no, todo igual.
Gracias
¿La consulta la mandas ordenada por id_cuenta?
Proba con esta consulta
Call Abre("select max(legajo) as ultleg from alumnos where cod_colegio = '" & Col & "'")
esta consulta esta echa para sql, fijate que debe ser similar para access
If Not IsNull(Rs!ultleg) <> False Then
txtultleg.Text = Rs!ultleg
...
Esta es la consulta para que me traiga el máximo, con esto te ahorras de recorrer todo los registros y después lo aumentas.
Fíjate si te sirve.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas