How to modify independent txtboxes and add them to table data?

0

I have an Access Database that calculates the time between two dates; but the dates that are calculated, are not added to any table.

I can not find why they are not added.

The form code

Private Sub Comando8_Click()
    CalculaTiempoTranscurrido CDate(Me.txtFechaI & " " & Me.txtHoraI), CDate(Me.txtFechaF & " " & Me.txtHoraF)

    MsgBox "Años: " & TiempoTranscurrido.Años & Chr(13) & "Meses: " & TiempoTranscurrido.Meses & _
            Chr(13) & "Dias: " & TiempoTranscurrido.Dias & Chr(13) & _
            "Horas: " & TiempoTranscurrido.Horas & Chr(13) & "Minutos: " & TiempoTranscurrido.Minutos & _
            Chr(13) & "Segundos: " & TiempoTranscurrido.Segundos, vbOKOnly + vbInformation, "TIEMPO TRANSCURRIDO"
End Sub

Private Sub Form_Open(Cancel As Integer)
    Me.txtFechaF = Date
    Me.txtFechaI = Date - 42
    Me.txtHoraF = #5:30:00 PM#
    Me.txtHoraI = #8:00:00 AM#
End Sub

The module code

Option Compare Database

'Tipo personalizado
Type TiempoT
    Años As Integer
    Meses As Integer
    Dias As Integer
    Horas As Integer
    Minutos As Integer
    Segundos As Integer
End Type

'TiempoTranscurrido es una variable publica definida de acuerdo al Tipo personalizado TiempoT
Public TiempoTranscurrido As TiempoT


'*******************************************************************************
'* CalculaTiempoTranscurrido
'* Calcula el tiempo transcurrido entre las dos fechas y horas pasadas como parámetros
'*******************************************************************************

Sub CalculaTiempoTranscurrido(datInicio As Date, datFin As Date)
    Dim fechaCalculo As Date

    'inicializamos los valores de la variable TiempoTranscurrido
    TiempoTranscurrido.Años = 0
    TiempoTranscurrido.Meses = 0
    TiempoTranscurrido.Dias = 0
    TiempoTranscurrido.Horas = 0
    TiempoTranscurrido.Minutos = 0
    TiempoTranscurrido.Segundos = 0

    'si la Fecha Fin es menor que la de inicio salimos sin hacer los calculos
    'En determinadas condiciones es posible que no nos importe recibir valores negativos
    'en tal caso habrá que anular estas tres líneas
    If datFin < datInicio Then
        Exit Sub
    End If

    'En los calculos usamos fija la fecha Fin, la de inicio la iremos
    'incrementando con la fracción ya computada.
    fechaCalculo = datInicio

    'Calculo de AÑOS
    TiempoTranscurrido.Años = DateDiff("yyyy", fechaCalculo, datFin)
    If Month(datFin) < Month(datInicio) Then
        TiempoTranscurrido.Años = TiempoTranscurrido.Años - 1
    ElseIf Month(datFin) = Month(datInicio) And Day(datFin) <= Day(datInicio) - 1 Then
        TiempoTranscurrido.Años = TiempoTranscurrido.Años - 1
    End If
    'añadimos a fechaCalculo la fracción de tiempo que acabamos de computar
    fechaCalculo = DateAdd("yyyy", TiempoTranscurrido.Años, fechaCalculo)

    'Calculo de MESES
    TiempoTranscurrido.Meses = DateDiff("m", fechaCalculo, datFin)
    If Day(datFin) < Day(datInicio) Then
        TiempoTranscurrido.Meses = TiempoTranscurrido.Meses - 1
    End If
    fechaCalculo = DateAdd("m", TiempoTranscurrido.Meses, fechaCalculo)

    'Calculo de DIAS
    TiempoTranscurrido.Dias = DateDiff("d", fechaCalculo, datFin)
    If Hour(datFin) < Hour(datInicio) Then
        TiempoTranscurrido.Dias = TiempoTranscurrido.Dias - 1
    End If
    fechaCalculo = DateAdd("d", TiempoTranscurrido.Dias, fechaCalculo)

    'Calculo de HORAS
    TiempoTranscurrido.Horas = DateDiff("h", fechaCalculo, datFin)
    If Minute(datFin) < Minute(datInicio) Then
        TiempoTranscurrido.Horas = TiempoTranscurrido.Horas - 1
    End If
    fechaCalculo = DateAdd("h", TiempoTranscurrido.Horas, fechaCalculo)

    'Calculo de MINUTOS
    TiempoTranscurrido.Minutos = DateDiff("n", fechaCalculo, datFin)
    If Second(datFin) < Second(datInicio) Then
        TiempoTranscurrido.Minutos = TiempoTranscurrido.Minutos - 1
    End If
    fechaCalculo = DateAdd("n", TiempoTranscurrido.Minutos, fechaCalculo)

    'Calculo de Segundos
    TiempoTranscurrido.Segundos = DateDiff("s", fechaCalculo, datFin)

End Sub

This code is adapted from link for a payroll project

Note: I am still in the process of learning VBA. Thank you very much.

    
asked by Jhonatan 27.09.2018 в 17:56
source

0 answers