Tema: Reloj fijo
Ver Mensaje Individual
  #43 (permalink)  
Antiguo 09/08/2010, 00:32
Avatar de erbuson
erbuson
 
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Reloj fijo

Hola Xyon:

Tu lo has modificado así:

Código:
If Dia = "vie" And Hora >= CDate("21:55:59") Then
    ComoEsta(9) = "CERRADA"
ElseIf Dia = "dom" And Hora >= CDate("20:48:59") Then
    ComoEsta(9) = "ABIERTA"
End If
El problema que tienes en este código es que, a una rutina de uso GENERICO, le has indicado un condicionante propio de una LOCALIDAD

O sea, cualquier llamada a la misma efectúa la comparación y modifica ComoEsta(9) cuando realmente sólo debería hacerse cuando recibe el valor de 9, una manera de solucionarlo sería comprobando el valor Index antes de la comparación que haces.

Voy a intentar explicártelo para que lo comprendas y lo puedas tener claro para próximas ocasiones que es lo importante:

Como sabes, CloseOpen, recibe un Label para devolver un estado. Cuando una funcion recibe un OBJETO como parámetro, TODAS las propiedades de este objeto están disponibles dentro de la misma, Tag, Index, BackColor, etc, .. así pues, en caso de ser necesario como ahora, puedes hacer las comparaciones oportunas, podrías por ejemplo añadirle algo así:


Código:
' Si estoy comprobando el 9 
IF LabelHora.Index = 9 Then
    If Dia = "vie" And Hora >= CDate("21:55:59") Then
        CloseOpen = "CERRADA"
    ElseIf Dia = "dom" And Hora >= CDate("20:48:59") Then
        CloseOpen = "ABIERTA"
    End If
End If
IMPORTANTE: Fíjate además que estoy modificando el valor devuelto y no la etiqueta que va a contener este valor devuelto ya que la misión básica de una función es devolver un valor y no modificar datos externos a ella.

Si la comparación de día y hora es correcta tal como la tienes planteada, ya que ignoro los condicionantes, debería funcionar.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...