La utilización de autonuméricos solo debe limitarse a cuando el número, en realidad, no te importa para nada, je je. Me explico. Solo debe utilizarse para identificar inequívocamente a un registro de una tabla y poder utilizarlo en las relaciones con otras tablas. Normalmente (al menos así lo hago yo) los autonuméricos no están a la vista del usuario, que solo ve las descripciones.
Desde ese punto de vista, la utilización de autonuméricos para, por ejemplo, la numeración de facturas, es una aberración, puesto que es muy fácil que nos queden, con el usu diario de la aplicación, huecos.
Entonces se impone la utilización de falsos autonuméricos que simulen ese funcionamiento.
¿Cómo? Mediante las funciones de dominio, concretamente DMax.
Si utilizamos un campo de tipo numérico y queremos que, al añadir un nuevo registro, este tenga para ese campo el valor del ultimo introducido más 1, deberemos hacerlo en el momento de dar de alta el registro.
Yo utilizo el evento AfterUpdate del primer control que deba rellenarse obligatoriamente.
Imaginemos una tabla de clientes dónde el código (IdCliente) se asigna automáticamente (mediante el falso autonumérico) y la razón social (RazonSociel) es un campo obligatorio. Cuando se cambia el valor del campo RazonSocial, y si estoy en un nuevo registro, busco el DMax del IdCliente y le sumo uno. Algo si:
If Me.NewRecord And Not IsNull(Me!RazonSocial) Then
Me!IdCliente = Nz(DMax("IdCliente", "tablaClientes"), 0) + 1
End If
Ese código busca el máximo IdCliente y le suma 1. Caso de no encontrarlo, le asigna 0 y después le suma 1 (de ahí la función Nz)
http://www.mvp-acces.com/foro