Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

No me cierra

Estas en el tema de No me cierra en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/06/2008, 03:19
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
No me cierra

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
__________________
Cámara Oscura
Etheria
  #2 (permalink)  
Antiguo 17/06/2008, 03:30
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: No me cierra

Has comprobado que en ese caso, el codigo la ejecucion dle codigo pasa por esa linea?? Se detiene en ella??? Igual es que no ejecuta esa intruccion.

Un saludo
  #3 (permalink)  
Antiguo 17/06/2008, 03:45
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: No me cierra

He tenido que volver a hacer la segunda parte del código porque después de volverlo a probar no hacía lo que quería. al hacerlo, no se cómo he conseguido arreglar lo del fallo de cerrar.

Ahora el código lo he dejado así:

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
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "# and nz(horafinal,0)=0") > 0 Then
'existe sin hora final. editamos

DoCmd.OpenForm "hora3", acNormal, , "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "# and nz(horafinal,0)=0" '=space(0)"
'cerramos el form numeros
DoCmd.Close acForm, Me.Name
Else

'Tiene hora final. 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
End If
Else
MsgBox "La contraseña introducida no corresponde a ningun empleado", vbCritical, "CONTRASEÑA ERRONEA"
End If
End Sub
__________________
Cámara Oscura
Etheria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:21.