Cronometro en Acces

8Ball

Buenas tardes,
como bien dice el título, necesito hacer un cronometro en Acces.
La programación debe contar con las funciones: inici, pausa i para/reiniciar.
Podeis ayudarme con el algoritmo?
Tengo algo hecho muy basico, pero cuando le doy a para, ya no puedo volver a iniciar desde donde se paró.

Gracias compis

squ4r3

has probado con chatgpt?

1 respuesta
KIIM

Para programar un cronómetro en Microsoft Access, puedes utilizar VBA (Visual Basic for Applications) para crear una aplicación que haga un seguimiento del tiempo transcurrido. Aquí tienes una guía básica de cómo hacerlo:

Abre tu base de datos de Microsoft Access o crea una nueva base de datos.

Crea un nuevo formulario en el que mostrarás el cronómetro. Puedes agregar etiquetas para mostrar las horas, minutos, segundos y milisegundos transcurridos.

En el formulario, agrega un botón para iniciar y detener el cronómetro. A este botón le darás el nombre "btnStartStop" (o el que prefieras).

Abre el Editor de Visual Basic for Applications (VBA) haciendo clic en "Herramientas" > "Editor de Visual Basic" desde la interfaz de Access.

En el editor de VBA, asegúrate de que estás en el formulario que has creado. Luego, crea una variable global y algunas variables locales para rastrear el tiempo:

vba
Copy code
Dim StartTime As Double
Dim IsRunning As Boolean
Dim ElapsedTime As Double
Ahora, crea los procedimientos para el botón de inicio y parada:
vba
Copy code
Private Sub btnStartStop_Click()
If IsRunning = False Then
StartTime = Timer
IsRunning = True
Me.btnStartStop.Caption = "Detener"
Me.TimerInterval = 100
Else
ElapsedTime = ElapsedTime + Timer - StartTime
IsRunning = False
Me.btnStartStop.Caption = "Iniciar"
Me.TimerInterval = 0
End If
End Sub
Este código inicia y detiene el cronómetro y actualiza la etiqueta para mostrar "Iniciar" o "Detener" según corresponda.

A continuación, crea un procedimiento para el evento Timer del formulario para actualizar el tiempo transcurrido:
vba
Copy code
Private Sub Form_Timer()
If IsRunning = True Then
Me.lblHours.Caption = Format(ElapsedTime / 3600, "0")
Me.lblMinutes.Caption = Format((ElapsedTime / 60) Mod 60, "00")
Me.lblSeconds.Caption = Format(ElapsedTime Mod 60, "00")
Me.lblMilliseconds.Caption = Format((ElapsedTime - Int(ElapsedTime)) * 1000, "000")
End If
End Sub
Este código actualiza las etiquetas del formulario para mostrar el tiempo transcurrido en horas, minutos, segundos y milisegundos.

Cierra el editor de VBA y guarda los cambios.

Vuelve al formulario y, en la vista Diseño, ajusta la propiedad TimerInterval del formulario a 1000 para que el evento Timer se active cada segundo.

Guarda el formulario y ejecuta la base de datos. Deberías ver el cronómetro funcionando y actualizándose en tiempo real cuando haces clic en el botón "Iniciar" y "Detener".

Esto es una implementación básica de un cronómetro en Microsoft Access. Puedes personalizar y mejorar el diseño y la funcionalidad según tus necesidades.

2 respuestas
pantocreitor

#2 el que lo ha probado con chatGPT ha sido #3 xD

1 respuesta
KIIM

#4 Programador desde que nací chaval xd.

8Ball

#3 es muy complicado para mi.
Necesito algo mas facil, soy amateur y hace mucho que no hago nada.

1 respuesta
raul_ct

#6 literalmente te está haciendo un copia pega, si no empiezas por ahí no empiezas por ningún lado

8Ball

Al final el crono ha uedado tal que así:

Option Compare Database
Option Explicit
Dim TiempoInicio As Date
Dim TiempoTranscurrido As Date
Dim TiempoPausado As Date
Dim Pausado As Boolean
Dim Reiniciar As Boolean

Private Sub cmdIniciar_Click()
If Not Pausado Then
TiempoInicio = Now
Else
TiempoInicio = TiempoInicio + (Now - TiempoPausado)
End If
Me.TimerInterval = 1000 ' Inicia el temporitzador (en milisegons)
Pausado = False
Reiniciar = False
End Sub

Private Sub cmdDetener_Click()
If Reiniciar = True Then
lbltiempo = "00:00:00"
Else
Me.TimerInterval = 0 ' Atura el temporitzador
End If
Pausado = False
Reiniciar = True

End Sub

Private Sub cmdPausa_Click()
If Me.TimerInterval > 0 Then
Me.TimerInterval = 0 ' Atura el temporitzador
TiempoPausado = Now
Pausado = True
Reiniciar = True
End If
End Sub
Private Sub Form_Load()

End Sub

Private Sub Form_Timer()
If Me.TimerInterval > 0 Then
TiempoTranscurrido = Now - TiempoInicio
lbltiempo = Format(TiempoTranscurrido, "hh:nn:ss")
End If


End Sub

Gracias a todos

Usuarios habituales

  • 8Ball
  • raul_ct
  • KIIM
  • pantocreitor
  • squ4r3