Access - Autonumerico

 
Vista:
sin imagen de perfil

Autonumerico

Publicado por Ricardo (5 intervenciones) el 17/04/2018 04:01:11
BUenas noches. Primero aclaro que no soy programador sino bioquimico y realice un programa para el laboratorio del hospital el cual ya hace mas d e4 años que funciona pero tengo algunos inconvenientes que nunca pude solucionar. Tengo un campo autonumerico que uso para transferir informacion dentro de tablas, el inconveniente es que cuando realizo una compactación ese campo autonumerico en determinadas ocasiones que no puedo precisar, pienso que es cuando edito algún registro, retrocede una determinada cantidad de numeros y eso me trae problemas en la transferencia. Alguien podria ayudarme a solucionarlo. He pensado en cambiarlo a numerico e incrementarlo pero no se como puedo hacerlo.
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

Publicado por Ricardo (5 intervenciones) el 17/04/2018 22:34:54
Chicos alguno que pueda ayudarme que me de una idea que puedo hacer. POr favor
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

Publicado por Anonimo (3308 intervenciones) el 18/04/2018 00:00:21
Lo mas probable (si no hay algún código que interfiera) sea que esos cambios los origine una compactación de la base (pero solo debería eliminar 'los últimos y vacíos').

Para crear una secuencia autonumerica propia, lo mas usual consiste en utilizar la función DMax sobre el campo indice de esa tabla y a su resultado añadirle una unidad, eso si: ese campo y de forma previa debería pasarse (con la tabla en modo diseño) del actual auto-numérico a 'entero largo' (son compatibles).

Siento no ser mas explicito, pero intervienen datos de esa aplicación que por ser desconocidos impiden continuar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Autonumerico

Publicado por Ricardo (5 intervenciones) el 18/04/2018 05:31:07
gracias intento realizarlo
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
sin imagen de perfil

Autonumerico

Publicado por Ricardo (5 intervenciones) el 23/04/2018 00:27:58
Necesito resolverlo pero no se como. Realizo la compactacion y el autonumerico retrocede una cantidad de numero aleatoreos pueden ser 200 o 300 o mas. Si arreglo el numero internamente pero no cargo registro con el programa funcionando vuelve a retrocederlo cuando compacto. Algo mas que se te ocurra o ver como puedo solucionar .
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

Publicado por Anonimo (3308 intervenciones) el 28/04/2018 13:24:08
Desconociendo la aplicación (o datos mas concretos sobre ella), no me es posible dirimir si el problema es de Access o del programador.

Quizás una posible alternativa (dado el uso que se pretende obtener de ese autonumerico), sea generar de forma externa esa numeración, el método se le suele conocer como 'falso autonumerico', del que hay abundante información (en este y otros foros).
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
Imágen de perfil de Juan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Autonumerico

Publicado por Juan (150 intervenciones) el 28/04/2018 21:05:00
Hola,

Si utilizas como autonumérico el Id de la Tabla, no te tendría que descontar nada. Si tienes un autonumérico creado a parte por tí podría ser, yo utilizo lo siguiente, ... Al activar registro:

1
2
3
4
5
6
7
8
9
Private Sub Form_Current()
 
'Contador de Nº
 
On Error Resume Next
 
   If Me.NewRecord Then
   Me.NUMERO = Nz(DMax("numero", "NombreTabla"), 231) + 1
   End If

El 231 es el número a partir del cual empieza a contar, y suma 1 a cada nuevo registro.

Lo tengo:

Activado: No.
Bloqueado: Sí.

Tengo un botón para poderlo desbloquear y cambiar ese número cuando lo necesito (por si eliminas algún registro que está anteriores registros. Al hacer click:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub btdesbloquear_Click()
If Me.NUMERO.Locked Then
Me.NUMERO.Locked = False
Me.NUMERO.Enabled = True
Me.NUMERO.BorderColor = RGB(34, 177, 76)
Me.NUMERO.SetFocus
Else
Me.NUMERO.Locked = True
Me.NUMERO.Enabled = False
Me.NUMERO.BorderColor = RGB(255, 255, 255)
 
End If

Bloqueas y desbloqueas on ese botón, también cuando sales del formulario y vuelves a entrar siempre está bloqueado.

Espero que te sirva.
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

Publicado por Anonimo (3308 intervenciones) el 29/04/2018 00:52:23
Esta afirmación es incorrecta y puede crear confusión en algo que desde que nació Access esta muy claro: la funcionalidad de los autonumericos:
....
Hola,

Si utilizas como autonumérico el Id de la Tabla, no te tendría que descontar nada. Si tienes un autonumérico creado a parte por tí podría ser, .....
....

Access NO descuenta nada, si tenemos un campo autonumerico y borramos registros, Access (por diseño) al compactar eliminara los registros 'fantasma' que se generan y luego se borran o simplemente se inician paro no se finalizan, pero no borra todos: solo 'los ID inexistentes que están al final del conjunto'

No se debería de olvidar que los autonumericos 'cuentan' tanto los registros validos como los incompletos o los que se crean y luego se borran.

Es por ello que cuando se quiere 'reiniciar' una tabla que contiene un campo autonumerico, lo que se acostumbtra a hacer es borrar TODOS los registros y tras ello COMPACTAR para que el autonumerico comience en cero (valor correcto, porque en esa tabla no existen registros)

Si se creasen 5.000 (o mas o simplemente mas de uno) y se borrasen todos menos el numero 124, al compactar el siguiente numero que ofrecería el autonumerico seria el numero 125 (el siguiente al ultimo, aunque a su vez cumpla la condición de ser el primero e incluso el único).

Nada que decir con respecto al falso autonumerico que se pone como ejemplo, salvo que en lugar de iniciar en el numero 231 (para obtener como primer numero el 232) se suele utilizar el cero (para que se inicie en uno), algo clásico cuando el autonumerico es 'mas complejo' y se reinicia de forma automática con una nueva serie, el cambio de año o cualquiera otra condición impuesta por el programador.
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
Imágen de perfil de Juan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Autonumerico

Publicado por Juan (150 intervenciones) el 29/04/2018 13:44:32
Hola,

1º No se que hay de incorrecto si estoy práctcamente diciendo lo mismo que tu, access no tendría que descontar nada si utilizas el Id autonumérico de la tabla.

2º Si está utilizando otro campo aparte como autonumérico, que es lo que entiendo en el primer post, he reflejado el código que utilizo yo en algunos formularios y que funciona. Este autonumérico lo utilizo para dar nombre al archivo al exportarlo, numero_nombrearchivo_fecha, ya que antes de crear el formulario tenía ya archivos creados, por eso empieza partir del número 231, y se sobreentiende que le puedes poner el 0.

Saludos,
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

Publicado por Anonimo (3308 intervenciones) el 30/04/2018 09:14:15
Lo incorrecto (en tu exposición) es:
-- Si utilizas como autonumérico el Id de la Tabla, no te tendría que descontar nada ---

Y es erróneo, Access (insisto que POR DISEÑO) al compactar reajusta el puntero de los campos autonumericos (sean IDs o no) de forma condicionada,

Eso que es lo que le ocurre al usuario y no entiende la causa (el reajuste del autonumerico implica descontar, borrar, eliminar o defínelo del modo que gustes)
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