Access - Funciona si digito, no lo hace con macro o código

 
Vista:

Funciona si digito, no lo hace con macro o código

Publicado por Rafi (71 intervenciones) el 21/02/2017 08:02:53
Hola y muchas gracias de nuevo al foro. Este código que os pongo abajo funciona perfectamente, pero curiosamente cuando llega la hora de cerrar la base de datos no lo hace. Si que lo hace si digito a mano la hora. Algo está mal y seguramente se deberá al formato de fechas que es un galimatías. ¿Podéis decirme que falla?

Bueno lo que hago es comparar dos textbox y cuando coinciden sus horas cierra la base de datos usando el evento al Cronómetro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub TxtContraseña_LostFocus()
If Not IsNull(txt_hora) Then
    If Format(txt_hora, "HH:mm:ss") >= Format(#7:00:00 AM#, "HH:mm:ss") And Format(txt_hora, "HH:mm:ss") <= Format(#3:00:00 PM#, "HH:mm:ss") Then
        Me.txt_apagar = Format("03:05:00", "hh:mm:ss PM")
 
    ElseIf Format(txt_hora, "HH:mm:ss") >= Format(#3:00:00 PM#, "HH:mm:ss") And Format(txt_hora, "HH:mm:ss") <= Format(#11:00:00 PM#, "HH:mm:ss") Then
       Me.txt_apagar = Format("22:45:00", "hh:mm:ss PM")
    Else
   'Lo dejo sin nada y me da las horas restantes
(Me.Horas, "HH:mm:ss") <= Format(#7:00:00 PM#, "HH:mm:ss") Then
        Me.txt_apagar = Format("07:05:00", "hh:mm:ss AM")
 
    End If
Else
 
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 831
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Funciona si digito, no lo hace con macro o código

Publicado por Jesús Manuel (363 intervenciones) el 21/02/2017 08:43:45
Así por encima, veo algunos errores:

1) Después del ELSE final, no hay condiciones, por lo que esta línea sobra:
(Me.Horas, "HH:mm:ss") <= Format(#7:00:00 PM#, "HH:mm:ss") Then
https://msdn.microsoft.com/es-es/library/752y8abs.aspx


2) Vas a tener que decidir que pasa a las 3:00:00, porque "permites que se ejecuten" las dos primeras opciones del IF.
Tendrás que usar el igual solo en uno de los casos.

3) No tiene sentido el último ELSE, si no hay nada para ejecutar

4) En cuanto a que no se ejecuta al llegar la hora, si tienes el código en el evento LostFocus, hasta que en el programa no pase el foco a este, entiendo que es un cuadro de texto, para que luego pierda el foco, no se va a ejecutar el código, porque no se llegaría a ejecutar el LostFocus. Esta claro que si tu digitas, haces que llegue el foco y cuando terminas, se ejecuta el LostFocus.

Si te interesa que se ejecute al cerrar la base de datos, tendría que estar en el evento AlCerrar del formulario que corresponda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funciona si digito, no lo hace con macro o código

Publicado por Rafi (71 intervenciones) el 21/02/2017 17:03:52
Gracias Manuel, lo del IF, sin condición fue un error de últimos arreglos que hice para simplificar la vista del código, había eliminado otra linea superior y dejé esa.
Lo de la repetición de horario a las 3:00:00, ya lo arreglé en las condiciones ya que como bien dices se repetía.
En cuanto al funcionamiento erróneo ya esta solucionado, desvié el foco.
Mil Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar