No Actualiza evento.

En un formulario tengo dos controles TxtCaptura y TxtCapt el formulario tiene origen de datos en la Tabla "Cartas Capturadas Entrada", y los controles a los campos TxtCaptura a Leadcode y TxtCapt a Captura.

El TxtCapt lo tengo en Visible No, lo que quiero es que al capturar el Leadcode este se almacene en la tabla mencionada y que el campo Captura se llene en el evento despues de actualizar del TxtCaptura con el Dato Recolección 1,2,3 o 4 segun sea la hora de captura tengo el siguiente codigo pero no me funciona.

Dim Hora As Date
Dim MiUpRec As String

If Hora >= #5:59:59 AM# And Hora < #11:59:59 AM# Then
Me.TxtCapt.Value = "Recolección 1"
Else
If Hora >= #12:00:00 PM# And Hora < #3:24:00 PM# Then
Me.TxtCapt.Value = "Recolección 2"
Else
If Hora >= #3:24:59 PM# And Hora < #9:59:59 PM# Then
Me.TxtCapt.Value = "Recolección 3"
Else
If Hora >= #10:00:00 PM# And Hora < #6:00:00 PM# Then
Me.TxtCapt.Value = "Recolección 4"
End If
End If
End If
End If

Tampoco me marca error alguno espero a verme explicado y me puedas dar una mano.

1 respuesta

Respuesta
1

Aunque la forma de utilizar las comparaciones es correcta, se puede mejorar ayudando un poco a Access.
Has puesto:

Dim Hora As Date
Dim MiUpRec As String
If Hora >= #5:59:59 AM# And Hora < #11:59:59 AM# Then
    Me.TxtCapt.Value = "Recolección 1"
Else
    If Hora >= #12:00:00 PM# And Hora < #3:24:00 PM# Then
        Me.TxtCapt.Value = "Recolección 2"
    Else
        If Hora >= #3:24:59 PM# And Hora < #9:59:59 PM# Then
            Me.TxtCapt.Value = "Recolección 3"
        Else
            If Hora >= #10:00:00 PM# And Hora < #6:00:00 PM# Then
                Me.TxtCapt.Value = "Recolección 4"
            End If
        End If
    End If
End If

Por lo que veo, quieres marcar los siguientes horarios:

de 06:00:00 a 11:59:59

de 12:00:00 a 15:24:00

de 15:24:59 a 21:59:59 y

de 22:00:00 a 18:00:00.

Lo primero que veo es que no cargas la variable hora en ningún momento.

Tal y como lo tienes, si el evento ocurre entre las 11:59:58 y las 12:00:00, entre las 15:23:59 y las 12:24:59 y entre las 21:59:58 y las 22:00:00 no se produce salida.

La última comparación debes haberla escrito mal, supongo que querrías que fuera las 6: de la mañana y no de la tarde...

Podrías hacer primero una conversión al formato interno de horas, para ello puedes utilizar la función TimeSerial, con esta función defines las 4 horas que marcan los cambios.

Luego, con la función DateAdd puedes ajustar los intervalos de los límites superiores.

Por último puedes usar la instrucción Select Case para que se selecciones el periodo en vez de tantos "If".

La función quedaría así:

Dim Hora1 As Date
Dim Hora2 As Date
Dim Hora3 As Date
Dim Hora4 As Date
Dim MiUpRec As String
' Aqui definimos las horas límite, siempre en formato 24 horas.
Hora1 = TimeSerial(6, 0, 0)
Hora2 = TimeSerial(12, 0, 0)
Hora3 = TimeSerial(16, 0, 0)
Hora4 = TimeSerial(22, 0, 0)
Select Case Time()
     Case Hora1 To DateAdd("s", -1, Hora2)
         Me.TxtCapt.Value = "Recolección 1"
     Case Hora2 To DateAdd("s", -1, Hora3)
         Me.TxtCapt.Value = "Recolección 2"
     Case Hora3 To DateAdd("s", -1, Hora4)
         Me.TxtCapt.Value = "Recolección 3"
     Case Hora4 To DateAdd("s", -1, Hora1)
         Me.TxtCapt.Value = "Recolección 4"
     Case Else
         Me.TxtCapt.Value = "Error"
End Select

Gracias por contestar.

Es correcto lo que me mencionas y en la ultima comparación si me equivoque tenia que ser 6 de la mañana.

He probado tu código y funciona correctamente.

Entiendo el limite de horas en el formato que lo escribiste al igual que el Select Case.

Lo que no me queda claro es el "Date Add" como es que funciona y la "S" cual es el uso que le estas dando en el código.

Me podrías aclarar mis dudas por favor.

La función DateAdd sirve para sumar espacios de tiempo a un dato de Fecha/Hora.

Tiene 3 parámetros: el primero indica el intervalo que quieres agregar, "es" indica segundos, "d" indicaría días, "w" semanas... El segundo es la cantidad, si es positivo se suman y si es negativo se restan; y el tercero es el dato al que vas a sumar el intervalo.

Viene muy bien explicado en la ayuda (F1).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas