Veamos, hace tiempo postee sobre un formulario de una contraseña en la que si era correcta me abría el formulario sino salía un mensaje. He tenido que modificar ese código para que me abriese un formulario u otro dependiendo del caso. Funciona correctamente (por lo poco que he probado), el problema es que en un caso no me cierra lo que es el formulario de la contraseña (llamado numeros2), en el que tiene el siguiente código en el botón de aceptar (creo que falla en lo marcado en rojo):
Private Sub CmdAceptar_Click()
Dim IdOperario As Long
IdOperario = Nz(DLookup("CodigoOperario", "operario2", "clave=" & Me.Txtclave), 0)
'Comprobamos si existe la clave introducida
If IdOperario <> 0 Then
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#") = 0 Then
'si no existe todavía, miramos si está terminado el registro anterior
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date - 1, "mm/dd/yyyy") & "# and nz(horafinal,0)=0") > 0 Then
'existe día anterior sin hora final. editamos
DoCmd.OpenForm "hora3", acNormal, , "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date - 1, "mm/dd/yyyy") & "# and nz(horafinal,0)=0" '=space(0)"
'cerramos el form numeros
DoCmd.Close acForm, Me.Name
Else
'no existe ni en el día anterior ni en el dia actual. Nuevo registro con fecha actual
DoCmd.OpenForm "hora3pestaña", acNormal, , , acFormAdd
Forms!hora3pestaña!CodigoOperario = IdOperario 'cerramos el form numeros
DoCmd.Close acForm, Me.Name
End If
Else
'hay registros en el día actual
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "# and nz(horafinal,0)=0") > 0 Then
DoCmd.OpenForm "hora3", acNormal, , "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "# and nz(horafinal,0)=0" '=space(0)"
Else
DoCmd.OpenForm "hora3pestaña", acNormal, , , acFormAdd
Forms!hora3pestaña!CodigoOperario = IdOperario
DoCmd.Close acForm, Me.Name
End If
End If
Else
MsgBox "La contraseña introducida no corresponde a ningun empleado", vbCritical, "CONTRASEÑA ERRONEA"
End If
End Sub