Asumo que la tabla tiene como clave primaria el campo "id" y que es autonumérico.
oQuery:Goto(oQuery:Lastrec()) es lo mismo que oQuery:GoBottom(). Y si no me falla la teoria esto se posiciona en el último registro de la consulta, y SI se ve afectado por el order. LastRec() devuelve el total de filas en la consulta, no el último id introducido.
El problema de find es que la búsqueda es secuencial, y la velocidad depende directamente del número de registros. Se puede usar seek que es mucho más rápido, pero necesita que este ordenado por el campo que vamos a buscar, en este caso si esta ordenado por ID, sera casi lo mismo hacer GoBottom(), con la salvedad de que otros usuario hayan introducido registros, en ese caso tiene sentido hacer un seek, pues puede que el registro que acaba de introducir el usuario ya no sea el último, Last Inert Id es local a cada cliente.
Suponiendo que esta ordenado por Id, puedes hacerlo como habías expuesto al principio, pero cambiando find por seek.
- Code: Select all Expand view
oServer:Insert("ausentes",aFields,aValues)
MOVEDOR:=oServer:LastInsertId()
ausentes:refresh() // para refrescar el query
ausentes:Seek(MOVEDOR,"id")