Código Visual Basic para un añadido de Id de registro único automático.

Buenas y saludos cordiales,

Mi pregunta va dirigida a un problema derivado de una migración de una aplicación access de base de datos de access a SQL Server.

Datos:

-Aplicación Access 2003 vinculada a base de datos SQL Server mediante ODBC.

-Módulo Visual basic cuya función es la de agregar manualmente un "1" a la ID de registro en una tabla desde varios formularios, de tal modo que desde el formulario de "Ventas", o bien desde el de "Compras", o bien desde otros se pueda utilizar el mismo módulo, siguiendo el siguiente ejemplo (desde el formulario "ventas", por ejemplo):

If Me.Form.NewRecord Then
Me.IdVenta = AddOneMore(IdVenta)
End If

O bien desde el formulario "Compras:

If Me.Form.NewRecord Then
Me.IdVenta = AddOneMore(IdCompra)
End If

Lo cual hace una llamada a un módulo general disponible para todo el proyecto access, cuyo código Visual Basic es el siguiente:

Function AddOneMore(micontrol) As Double
On Error GoTo Err_AddOneMore
Set mibdDAO = CurrentDb
Set mirsDAO = mibdDAO.OpenRecordset(Screen.ActiveForm.RecordSource, dbOpenDynaset, dbSeeChanges)
If mirsDAO.RecordCount > 0 Then
mirsDAO.MoveFirst
Debug.Print mirsDAO(0)
mirsDAO.MoveLast
Debug.Print mirsDAO(0)
mirsDAO.Edit
AddOneMore = mirsDAO(0) + 1
Else
AddOneMore = 1
End If
Exit_AddOneMore:
mirsDAO.Close
mibdDAO.Close
Exit Function
Err_AddOneMore:
MsgBox Err.Description
Resume Exit_AddOneMore
End Function

La cuestión es que me gustaría hacer que en vez de preguntar por todo el RecordCount, lo hiciese por los últimos 1000 registros (por ejemplo) y así minimizar tiempo de espera y optimizar el rendimiento.

Para ello, utilicé la siguiente modificación en la línea Openrecordset:

Set mirsDAO = mibdDAO.OpenRecordset("Select TOP 1000 * From Screen.ActiveForm.Recordsource", dbOpenDynaset, dbSeeChanges)

Sin embargo, no debe reconocer la selección. ¿Sabría alguien, por favor, guiarme el método correcto para conseguir el objetivo que persigo?

Gracias por adelantado,

Añade tu respuesta

Haz clic para o