De consultas no te hablo, porque, personalmente, no me gustan. Prefiero hacerlo con código VB. De todas formas, no entiendo la pregunta pero... Si tengo la tabla TipoTurno como
No le veo ninguna necesidad de un Id, ya que como su nombre indica es un índice útil cuando son muchos registros y si aún encima es Autonumérico para saber que un registro se introdujo antes de otro. Pero siendo sólo tres, es preferible declarar el campo Turno como clave.
También tengo la tabla Turnos como
Aquí si quieres puedes ponerle un Id. Y tengo una tabla Aux exactamente igual. Con la tabla Turnos construyo un formulario
Puedes ver que el cursor aún está en Numveces. Cuando pulso Enter
Y a medida que voy poniendo valores en el formulario( en este caso al dni 111 le anoto algo por la tarde)
Con lo que la tabla Aux me la deja como
Es decir, en caso de que ese DNI ya esté en la tabla me actualiza los valores.
Pero ya te digo que no consigo adivinar que es lo que quieres.
En este caso, el código se lo he puesto en el evento Después de actualizar del control NumVeces
Private Sub NumVeces_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.SetWarnings False
Dim b As Integer, c As Integer, d As Integer
b = Nz(DSum("numveces", "turnos", "turno=""Mañana"" and dni='" & Me.DNI & "'"))
c = Nz(DSum("numveces", "turnos", "turno=""Tarde"" and dni='" & Me.DNI & "'"))
d = Nz(DSum("numveces", "turnos", "turno=""Noche"" and dni='" & Me.DNI & "'"))
If Nz(DCount("*", "aux", "dni='" & Me.DNI & "'")) = 0 Then
DoCmd.RunSQL "insert into aux(dni,turno,numveces)values('" & Me.DNI & "',""Mañana"",=" & b & ")"
DoCmd.RunSQL "insert into aux(dni,turno,numveces)values('" & Me.DNI & "',""Tarde"",=" & c & ")"
DoCmd.RunSQL "insert into aux(dni,turno,numveces)values('" & Me.DNI & "',""Noche"",=" & d & ")"
Else
DoCmd.RunSQL "update aux set numveces=" & b & " where dni='" & Me.DNI & "' and turno=""Mañana"""
DoCmd.RunSQL "update aux set numveces=" & c & " where dni='" & Me.DNI & "' and turno=""Tarde"""
DoCmd.RunSQL "update aux set numveces=" & d & " where dni='" & Me.DNI & "' and turno=""Noche"""
End If
End Sub
En esencia, que si ese dni no está en la tabla auxiliar que cree los tres registros y que si ya está que los actualice.