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,