Access - PROBLEMA CON AUTONUMERACION EN TABLAS Y FORMULARIOS

   
Vista:
Imágen de perfil de JUAN MIGUEL

PROBLEMA CON AUTONUMERACION EN TABLAS Y FORMULARIOS

Publicado por JUAN MIGUEL (37 intervenciones) el 19/04/2015 18:06:59
buen día , tengo una tabla con campo (ID) auto numeracion y otros mas y un formulario con ese campo y otros mas
pero cuando ingreso un carácter al formularios en uno de esos campos y me arrepiento de guardar esa información y cierro el formulario la tabla NO me guarda EL CARÁCTER o la información pero si me coloca el consecutivo de la auto numeracion en la tabla .. que hago para que no me registre el consecutivo si no quiero guardar esa información porque son facturas de ventas y pues obviamente tiene que haber un consecutivo con su información.

agradezco la colaboración de quien me ayude¡¡¡¡¡¡
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
Imágen de perfil de Norberto

PROBLEMA CON AUTONUMERACION EN TABLAS Y FORMULARIOS

Publicado por Norberto (432 intervenciones) el 21/04/2015 16:03:36
Hola.

Evidentemente lo que debes de hacer es no usar un Autonumérico para dicho menester ya que, como dices, los numeros asignados a un nuevo registro se pierden si no se guarda.

Yo tengo hecho para un registro de entradas y salidas algo que podrías usar.

En el evento Antes de Insertar:

Private Sub Form_BeforeInsert(Cancel As Integer)
Me.Número = Nz(DMax("Número", "Registro", 0) + 1

End Sub

Esto hace que en cuanto empiezas a escribir en un nuevo registro, se calcula el nuevo valor. Si no se guarda, el número no se pierde ya que siempre busca el mayor de los existentes y le suma uno. ¿Pero qué pasa si dos o más usuarios se dedican a introducir facturas a la vez? Pues que a todos les va a dar el mismo número. ¿Y cómo evitarlo?

Pues en el evento antes de actualizar pongo este código:
Dim Cambio as Boolean 'Esto en la zona de declaraciones


Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim miCrit As String

If Me.NewRecord Then 'Si se trata de un nuevo registro
miCrit = "Número = " & Me.Número
If Not IsNull(DLookup("Número", "Registro", miCrit)) Then 'Si algún pendejo ha usado el número que me había asignado
Me.Número = Nz(DMax("Número", "Registro"), 0) + 1 'Vuelvo a buscar un nuevo número
Cambio = True
Else
Cambio = False
End If
Else
Cambio = False
End If

End Sub

Si quieres que te avise de que ha habido un cambio, lo pones en el evento Después de actualizar.

Private Sub Form_AfterUpdate()
If Cambio Then
MsgBox "Ha habido un cambio con el número de factura. El nuevo número es " & Me.Número
End If
End Sub

Un saludo,

Norberto.
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 MIGUEL

PROBLEMA CON AUTONUMERACION EN TABLAS Y FORMULARIOS

Publicado por JUAN MIGUEL (37 intervenciones) el 21/04/2015 19:49:55
pues lo acabo de leer y lo voy a utilizar ojala que me funcione, aunque la duda es es esta formula
"Private Sub Form_BeforeInsert(Cancel As Integer)
Me.Número = Nz(DMax("Número", "Registro", 0) + 1 "
en "numero" y "registro" que datos serian los mios

gracias
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 Norberto

PROBLEMA CON AUTONUMERACION EN TABLAS Y FORMULARIOS

Publicado por Norberto (432 intervenciones) el 23/04/2015 14:15:50
Ok.

Como te comenté yo la uso en un registro de entradas y salidas, de ahí los nombres. En tu caso "Número" es el campo donde almacenes el número de factura, el que ahora tienes autonumérico y que tendrás que cambiar a numérico (creo que lo llamas ID), y "Registro" lo cambias por el nombre de la tabla: facturas, ventas, etc.

Un saludo,

Norberto.
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