Access - autonumerico manual

 
Vista:
sin imagen de perfil

autonumerico manual

Publicado por Carlos (2 intervenciones) el 05/07/2015 09:33:39
Hola a todos.
Llevo algún tiempo intentado hacer una pequeña base de datos que gestione clientes, contactos, proveedores aticulos, etc... Estoy utilizando ACCESS 2007
Llevo días intentando crear un numero autonumerico, mi problema es el siguiente:

Creo una tabla con los campos
ID_Cliente (autonumerico, clave principal)
Codigo (Numero, entero largo)
Nom_Cliente (texto)

He aplicado el siguiente código al formulario

Private Sub Form_Current()

Dim VCodigo, VUltimo As Variant
VCodigo = Me.Codigo.Value

If Not IsNull(VCodigo) Then Exit Sub
VUltimo = DMax("(Codigo)", "TDatos")

If IsNull(VUltimo) Then
VUltimo = 0
End If

VCodigo = VUltimo + 1
Me.Codigo.Value = VCodigo
End Sub

y no me funciona, cuando doy de alta un nuevo registro no me aumenta en 1 el nuevo valor.

Podeis ayudarme, Ostaria muy agradecido
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

autonumerico manual

Publicado por Enrique Heliodoro (1664 intervenciones) el 05/07/2015 11:12:28
Leo lo expuesto y me asaltan las dudas ....
¿Crear un dato que se crea solo que sentido tiene?
¿Y si deseo crear el dato, para que utilizo el 'automatismo' integrado?

El/los autonumericos trabajan de forma similar a 'los valores por defecto', esto es: se asientan como datos al guardar el registro
Y es en ese punto (por diseño y necesidad en un entorno compartido) donde esta la diferencia, la diferencia es que si iniciado un registro se 'aborta' su creación, ese autonumerico se desprecia.

Y no, no es un error de diseño, al contrario: es una necesidad, pues si en un 'entorno compartido' desde diferentes puntos se inician nuevos registros, estos utilizaran el 'autonumerico' que corresponda cuando se inician (no cuando se finalizan/guardan) y si alguno de ellos no llegase a finalizarse su numero se pierde (y no pasa nada, es su función: un ID diferente para cada uno).

Un símil a lo anterior es el numerador que hay en muchos establecimientos (pescaderías/carnicerías u oficinas de atención por poner algunos entornos), se entra, se toma en numero del dispensador y si llegado el caso (o por aburrimiento u otra acción prioritaria) se abandona el lugar, el numero se pierde y el turno 'pasa al siguiente' sin causar perjuicios.

Para una numeración manual y correlativa la formula clásica es:

Siguiente = Nz(Dmax("campo_1", "Tabla_1","condiciones si es el caso"), 0) +1

Esto es se tomaría el mayor del conjunto (o subconjunto si hay series dentro del conjunto) se le aplicaría la función NZ por si no hay nada y devolviese un NULL (que transmutaría en cero) y a ese resultado se le incrementaría una unidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

autonumerico manual

Publicado por Carlos (2 intervenciones) el 06/07/2015 19:02:08
hola, gracias por tus comentarios
voy a probar y te cuento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar