MS Access 2003: busque el siguiente valor incremental de un campo de numeración automática

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Access 2003: busque el siguiente valor incremental de un campo de numeración automática

Este tutorial de MSAccess explica cómo encontrar el siguiente valor de incremento para un campo Autonumérico en Access 2003 (con instrucciones paso a paso).

P: Uso Access 2003/XP/2000/97 y VB6 como front-end. Necesito obtener el siguiente valor en el campo Autonumérico antes de insertar el siguiente registro usando SQL. ¿Cómo averiguar el siguiente valor en un campo de autonumeración?

R: Por lo general, puede encontrar el siguiente valor en un campo de numeración automática buscando el valor máximo y luego agregando uno. Este método funciona si el campo Autonumérico es SECUENCIAL en lugar de aleatorio.

A continuación se muestra una función que encontrará el siguiente valor de incremento en un campo de autonumeración. Esto funciona siempre que no se inicien ni cancelen registros después de crear el último registro, y siempre que no se eliminen los registros al final de la secuencia.

Function NextValue() As Long

   Dim db As Database
   Dim Lrs As DAO.Recordset
   Dim LSQL As String

   Set db = CurrentDb()

   LSQL = "select max(Supplier_ID) as maxvalue from Suppliers"

   Set Lrs = db.OpenRecordset(LSQL)

   If Lrs.EOF Then
      NextValue = 1
   Else
      NextValue = Lrs("maxvalue") + 1
   End If

   Lrs.Close
   Set Lrs = nothing

End Function

Esta función determina el siguiente valor incremental para el campo ID_proveedor en la tabla Proveedores. Deberá cambiar los nombres de la tabla y la columna para reflejar el nombre de su tabla.

notas

Hay un problema con este enfoque. La función NextValue puede devolver un valor incorrecto si el registro se eliminó de la tabla.

Por ejemplo, si tiene 15 registros en su tabla, elimine todos los registros. La función NextValue anterior devolverá 1 como el siguiente número, cuando en realidad el siguiente número asignado a su campo de numeración automática es 16.

Si necesita más control sobre los campos de incremento automático, es posible que desee considerar generar sus propios campos. Hemos creado 3 ejemplos diferentes que tal vez quieras considerar:

Cree un número de serie que pueda controlar en lugar de usar un campo de numeración automática
Cree números de serie que se puedan controlar usando formatos como AGR-0001
Cree números de serie que se puedan controlar usando formatos como A05-0001

Si obtiene un error “indefinido” en la declaración “Dim db as Database” después de probar la función NextNumber, debe seguir algunas instrucciones adicionales.