¿Cómo generar numeración automática de registros utilizando Microsoft Access?

Tengo 3 tablas: Empresa, Cajas y Operaciones. En la tabla de operaciones deseo agregar un registro que sea el importe de la venta de una determinada caja de una determinada empresa. Por cada caja se crea un numero correlativo que define el numero de operación de esa caja; llamaremos al campo donde se almacena ese numero "Z". Es único e irrepetible por caja. Ahora bien he creado un formulario que agrega el registro, lo que deseo es que el valor predeterminado del campo "Z", sea el numero del ultimo registro almacenado +1.
En forma Gráfica:
Empresa Caja Z
ABC K123 9
Deseo que el próximo numero de Z sea 10, y que se genere automáticamente desde el formulario como un valor predeterminado.

1 Respuesta

Respuesta
1
En el cuadro de texto Z, en la acción Al recibir el enfoque ---> Procedimiento de evento ---> picas en el cuadrado de la derecha, el de los ... y pones el código:
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from Operaciones")
If rs.EOF Then
Form!IdCodigo.Value = 1
Else
Set rs = db.OpenRecordset("Select Max(Z) AS Mayor from Operaciones")
Form!IdCodigo.Value = rs!Mayor + 1
End If
Gracias por la pronta respuesta. Al analizar tu respuesta, me parece que mi pregunta fue un poco confusa, o que no hizo mención en forma explicita a lo siguiente: la tabla que registra las operaciones es MovimientoDeCaja, puede apreciarse que allí se registra también el IdCaja que realiza la operación, es decir, que al sumar 1 al campo [ZetaNumero], debe tomarse en cuenta el apecto anterior, a mi entender, seria que se hiciera una búsqueda por IDCaja en primer lugar y después el ultimo numero de Z de esa caja y se le sumara 1. En la imagen de abajo se muestran las tablas y el formulario.
Espero ser un poco más claro en esta oportunidad.
Gracias
Tendrás que condicionar el recordset al valor del cuadro combinado de la caja, a este cuadro lo llamaré selCaja, en sus propiedades en el evento al hacer clic ---> Procedimiento de evento ---> Picas en el cuadrado de la derecha, el de los ... y pones el código Me. Refresh (para que cuando elijas la caja se actualice el formulario).
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from IdMovimientoCaja where idCaja='" & form!selCaja.value & "'")
If rs.EOF Then
Form!IdCodigo.Value = 1
Else
Set rs = db.OpenRecordset("Select Max(ZetaNumero) AS Mayor from idMovimientoCaja  where idCaja='" & form!selCaja.value & "'")
Form!IdCodigo.Value = rs!Mayor + 1
End If
Gracias de nuevo, Te comento
Hice esto:
Private Sub SeleccionarCaja_GotFocus()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from MovimientoCaja where idCaja='" & Form!SeleccionarCaja.Value & "'")
If rs.EOF Then
Form!IdCodigo.Value = 1
Else
Set rs = db.OpenRecordset("Select Max(ZetaNumero) AS Mayor from MovimientoCaja  where idCaja='" & Form!SeleccionarCaja.Value & "'")
Form!IdCodigo.Value = rs!Mayor + 1
End If
End Sub
Cambien en la linea 5 "idMovimientoCaja" por "MovimientoCaja", que es el nombre de la tabla, y cambie "selCaja" por "SeleccionarCaja" que es el nombre de mi control, pero al correr el formulario da error y me remite al depurador, en esa linea precisamente.
No entiendo mucho de escribir código porque soy un principiante, así que agradezco mucho tu paciencia.
¿Qué error te da?
¿Estas seguro que lo has escrito bien?, esto es que no encuentra esa tabla y en la imagen de la consulta que me enviaste el nombre de la tabla es MovimientoDeCaja no MovimientoCaja.
Míralo porque creo que el tema va por ahí.
Otra cosa, si tienes más dudas tengo que decirte que hasta el miércoles no vuelvo, porque el martes es fiesta y hago "puente"
Hola de nuevo. Espero hayas disfrutado tu "puente".
Ok, si tienes razón, de eso ya me había percatado y lo corregí.
Ahora sale esto:
Si el idCaja es numérico tienes que quitar las comillas simples, que lo que indican es que es de texto:
idCaja=" & form!selCaja.value & "
Lo que hice y lo que obtuve... saludos y disculpa tanta molestia
No te preocupes por la cantidad de preguntas, el caso es que lo solucionemos. No veo donde puede estar el error, si quieres mándame la BD (en access 2003) y la echo un vistazo (Con algún registro para que no pese mucho). [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas