Error: Data Type Mismatch entre horas (Access)

El thread es para pedir de su acostumbrada ayuda.

Estoy haciendo un formulario en Access para poder llevar el control de tiempos de las actividades realizadas a diario.

Dentro del formulario tengo un botón que al dar iniciar, toma la hora actual y mi objetivo es crear en un textbox que simule ser un cronometro, que seria la resta entre la hora actual - la hora cuando dio click en el boton de inicio, el problema es que que a la hora de hacer la resta me da un error del tipo mismatch, les muestro el código.

El error del "Type Mismatch" se da en el Form_Timer()

- Cargo el formulario -
Private Sub Form_Load()
lTimer = False
Me.cmdIniciar.Caption = "Comenzar"
End Sub
- Click en el boton Inicio
Private Sub cmdIniciar_Click()
'-- INICIAMOS LA ACTIVIDAD --'
If lTimer = False Then
  Me.cmdIniciar.Caption = "Guardar"
 lTimer = True
 TiempoInicio = Format(Time, "hh:mm:ss")
 Else
 lTimer = False
 Me.cmdIniciar.Caption = "Comenzar"
End If
End Sub
- Aqui deseo simular el cronometro y me da error MISMATCH -
Private Sub Form_Timer()
lbltiempo = Time
lbltiempo = Format(lbltiempo, "hh:mm:ss")
Me.Text90.Value = lbltiempo
If lTimer = True Then
  Me.Text98.Value = Format(Abs(lbltiempo - TiempoInicio), "hh:mm:ss")
End If
End Sub

Access, Forms, VBA

1 respuesta

Respuesta
2

Lo puedes hacer de muchas formas. Por ejemplo, supongamos que en un formulario le pongo un cuadro de texto HoraSis( que no haría falta pero... e incluso podría estar oculto) donde aparece la hora del sistema al abrir el formulario. Se le puede poner tres cuadros de texto Horas, Minutos y Segundos. En las propiedades del formulario-eventos-Intervalo de Cronometro pones 1000 y en el evento Al cronometro pones

Cuando abras el formulario te ira poniendo

Otra forma sería poniendo sólo un cuadro de texto HorasT

En el evento al cronómetro del formulario pones

HorasT=time()

Dejando eso sí, lo de 1000 de intervalo. Y luego se hace la diferencia.

Por eso, si pudieras concretar algo más, se podría dar una opinón mejor.

Hola, buenas tardes.

Agradezco el conocimiento compartido, fue bastante interesante y logre realizar lo que buscaba.

Una ultima pregunta, ahora ya tengo una hora inicio, y una hora de fin de actividad, y lo tengo almacenado en dos textbox.

Ahora lo que deseo es convertir estos dos tiempos en horas, por ejemplo:

TiempoInicio = 01:05:41 p.m
dTiempo_Fin = 01:25:37 p.m
Horas: 0.33 hrs (20 mins/60 mins)

En el ejemplo realice una actividad que me tomo 0.33 de hora, y esto lo insertare en una tabla, para después tener un reporte.

Me ayudas por favor con esta ultima parte, he intentado de la siguiente forma:

Format(DateDiff("h", TiempoInicio, dTiempo_Fin), "Standard") '- Pero no funciona

Los días y las horas en los ordenadores no trabajan como las ves. Realmente los días son números enteros. Al día 01/01/1900 se le asigno el 1 y así hasta el día de hoy, que estamos en el 43351. Las horas son decimales de día. Por ejemplo, hoy 08/09/2018 a las 10:30, para el ordenado realmente es

43351,4371. Es con la parte decimal con la que tienes que trabajar. En el formulario(te muestro el diseño)

El cuadro de texto que a tí te interesa lo pongo como formato fijo con 4 decimales y el resultado

Abreviando, tienes que ponerlo como lo has visto en el diseño y si lo haces en código, en, por ejemplo, el evento Después de actualizar del cuadro de texto Hora fin

Dif=...exactamente lo mismo que en el diseño

Buenas tardes.

Me ha funcionado de maravilla, ya logre hacer el insert y en este momento estoy aprendiendo a crear reportes desde Access.

Muchas gracias por la ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas