Salto numérico del contador de la base de datos

Me encuentro que al realizar una entrada en el formulario de access, el campo autonumérico a partir de el numero 23 me salta al 28 de la entrada 1 a la 22 todo perfecto pero a la 23 salta he borrda del registro de la 18 a la 22 por si había pasado algo y al llegar a la 23 me continua pasando lo mismo.
¿Sabes qué puede ser?

1 respuesta

Respuesta
1
Los autonuméricos, una vez "empezados a utilizar" en un registro, se pierdem. Me explico.
Tenemos una tabla con n registros y un formulario basado en esa tabla dónde empezamos a introducir un registro y, a la mitad, cancelamos el alta (con escape, por ejemplo). Access ya ha asignado ya al registro el valor n+1 en el campo autonumérico y no cancela esa asignación.
Así, al introducir el siguiente registro, el sistema mirará la última asignación (n+1) y le sumará 1. De esa forma, si n valía inicialmente 18 (y hemos cancelado una inserción), el sistema asignará 20 en la siguiente alta.
Un consejo: los autonuméricos NO sirven para numerar correlativamente registros (facturas, por ejemplo) ya que tienen ese efecto adverso. Se utilizan para identificar inequívocamente un registro. Es más, los usuarios de la aplicación ni deben saber que existen esos campos; los utiliza el programador para trabajar internamente.
Para conseguir correlativos existen otros métodos.
Ah! La eliminación del último registro también hace que el autonumérico pierda ese número.
De acuerdo pero quizás me he explicado mal.
El usuario asigna un numero de entrada correlativo
lo que es autonumérico es la parte inferior del formulario
que tienes todos los access para moverte de una entrada a otra con las flechas, y al lago esta la flecha del asterisco de nueva entrada.
Pues lo que me gustaría es que esto que pasa del 26 al 30 no pase como lo podría solucionar
gracias
No le dejes al usuario la decisión de asignar el número. Utiliza un DMax sobre la tabla para obtener el valor máximo, súmale 1 y asignalo al control en su propiedad DefaultValue.
Me!NumeroEntrada.DefaultValue = Nz(DMax("NumeroEntrada", "laTabla"), 0) + 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas