Uso de Función Dmax

Quisiera que me ayudaran con esto:
Tengo un formulario que guardar los datos del trabajador y por lo tanto la clave principal es un numero (obviamente único para el trabajador).
En otro formulario se guardan los trabajos que hacen, es decir, por cada trabajo se crea un registro el cual va asociado al formulario que guarda los datos del trabajador.
Por lo cual el trabajador puede tener cualquier número de trabajos. Lo que quiero realizar es lo siguiente:
Cada vez que yo cree un nuevo registro de trabajo, empiezo poniendo el numero del trabajador al cual va asociado. Pero lo que yo quiero es que una vez que puse el numero del trabajador busque el ultimo número de trabajo que realizó y que el número de trabajo se incremente en uno de ese trabajador.
Ej. Luis P. Puede tener 5 trabajos
Miguel A. Tiene 10 trabajos.
Por lo tanto el número 5 de luis P. Se genera automáticamente. Y en el sig. Registro que yo coloque el numero de luis P, el siguiente registro va a ser el 6.

1 respuesta

Respuesta
En el AfterUpdate del control dónde escribes el número del trabajador (NumeroTrabajador, por ejemplo):
Me!NumeroTrabajo.DefaultValue = Nz(DMax("NumeroTrabajo", "TablaTrabajos", "NumeroTrabajador = " & Me!NumeroTrabajador), 0) + 1
Observa algunos detalles.
Utilizo la propiedad DefaultValue en lugar de Value porque, de utilizar la segunda, el registro se crearía inexorablemente en la tabla. Si utilizo DefaultValue, se muestra el valor en el control pero no se creará el registro hasta que se guarde.
Utilizo un DMax sobre el campo combinado con un Nz (la función que, si devuelve un nulo, lo cambia por el segundo argumento: 0 en este caso). Una vez obtenido el valor máximo actual para el trabajador seleccionado (o el nulo --> 0) se le suma 1.
¿Te sirve?
Hola
Coloque el sig. código:
Private Sub ID_trabajo_GotFocus()
If Me.NewRecord Then
Me![ID trabajo].DefaultValue = Nz(DMax("[ID trabajo]", "Tablatrabajos", "[Id trabajador]= " & Me![Id trabajador]), 0) + 1
End If
End Sub
Y lo que hace es tomar automáticamente el ultimo ID trabajo ingresado y sumarle 1. Automáticamente sin ponerle el numero de trabajador (Id trabajador).
¿Me podrías ayudar diciéndome que está mal?
Muchas gracias
En que yo dije "En el AfterUpdate del control dónde escribes el numero del trabajador" y tu lo has hecho "En el GotFocus (al recibir enfoque) del control dónde quieres que se escriba el numero de trabajo"
¿No funciona lo que yo dije?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas