Incrementar automáticamente el valor de un campo

Y Feliz año:
Quizás alguien aquí me pueda ayudar con el problema que enfrento. He buscado y leído muchas respuestas referentes a incrementar automáticamente el valor de un campo, peo ninguna se ajusta al problema que tengo.
Me dieron la área de llevar una tabla de Excel a Access. Es una tabla bastante sencilla donde un usuario, que controla la barrera de entrada y salida de un parqueo, anota en la misma el número de tiquete del vehículo, la hora de entrada y salida, cantidad de minutos, etc.

En la imagen (un recorte de la tabla de Excel) pueden ver la columna A, en cuya primera celda: A1 se escribe manualmente el número del tiquete, pero a partir de ahí, las celdas que le siguen lo escriben automáticamente usando la fórmula: =A2+1, =A3+1, =A4+1... Etc.
La pregunta es cómo reproduzco este comportamiento en una tabla de Access. En Access ya creé la tabla y establecí un campo clave del tipo auto numérico y aparte creé un campo numérico con nombre tiquete y tamaño entero largo, además de los demás campos requeridos en la tabla.
Esta tabla va como subformulario de un formulario principal llamado Usuarios, enlazado a la tabla del mismo nombre, que registra los datos del usuario que trabaja en el turno correspondiente.
La idea es que el usuario escriba manualmente el primer número de tiquete en el campo TIQUETE del subformulario y a partir de ahí se encargue Access de ir aumentándolo automáticamente. Ejemplo:
TIQUETE
========
32014 - número escrito manualmente por el usuario
32015 -número aumentado en 1 automáticamente por Access
32016 -número aumentado en 1 automáticamente por Access
Etc.
¿Alguna idea?

2 Respuestas

Respuesta
1

Añade a tu tabla un campo ID, de tipo autonumérico, y en el formulario (que es el subformulario) de entrada de datos, ponle este código en el evento "Al activar registro":

If Me.NewRecord Then

Me.TIQUETE=Nz(DLookUp("TIQUETE","NombreTabla","ID=" & DMax("ID","NombreTabla")),0)+1

End If

Un saludo


¡Gracias por tu pronta respuesta Sveinbjorn El Rojo!

He hecho lo que me has indicado, pero al abrir el formulario (como formulario y como subformulario) me arroja el siguiente error:

Error de sintaxis (falta operador) en la expresión de consulta "ID="

¿A qué se refiere, algo mal escrito?

El código propuesto se puede mejorar un poco así:

Private Sub Form_Current()
If Me.NewRecord And Nz(Me.Parent.Usuario, "") <> "" Then
    Me.Tiquete = Nz(DLookup("Tiquete", "TTiquets", "ID=" & Nz(DMax("ID", "TTiquets"), 0)), 0) + 1
End If
End Sub

Además de comprobar que estés en un nuevo registro del subformulario (para que no te sobreescriba los datos ya cargados), verifica que haya un nombre de usuario (en el campo Usuario) del formulario principal, para evitar un salto en los registros de la tabla de los tiquets.

Un saludo


El código de la ampliación de mi respuesta (escribimos al mismo tiempo casi). En él lo tienes ya controlado, con el Nz en la función DMax.

¡Gracias! Mira funcionó de maravillas, como dicen en Panamá: "Mejor se daña" No tengo cómo agradecerte, esa "pequeñez" me tenía arruinada la salud hace varios días. ¡Gracias!

Respuesta
1

Pues nada, ahí te han respondido muy bien, pero si quieres podrías echarle un vistazo a esta aplicación ( que es de mi autoría) y luego me cuentas, no es mi intención dejarte sin trabajo ni mucho menos, pero a lo mejor le das una solución más elaborada a tu cliente .

Computacionmdq.wix.com/ParkingBoss

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas