wagnermarinsjc 22/4/2013, 13:20
Bom dia Avelino Sampaio...
No caso Observei que você usou dois Campo para tratar de horas extras(He_HoraInício, Me!He_HoraFinal).
como eu quero obter um resultado de outros Campos(InicioExpediente,SaidaAlmoço,RetornoAlmoço,FinalExpediente,HoraExtraInicio,HoraExtraFinal).
No caso teria que declara-los no Código que você criou como Exemplo?
Public Function fncSomaHora(horaAcumulada As Variant, HoraAtual As Date) As Variant
Dim ha, ht, sha As Long, sht As Long
Dim TotalSegundos As Long, Horas As Long, Minutos As Long, Segundos As Long
'Passa as horas para as Matrizes, aonde podemos extrair os valores pela referência ":"
ha = Split(IIf(horaAcumulada = 0, "00:00:00", horaAcumulada), ":")
ht = Split(HoraAtual, ":")
sha = 3600 * ha(0) + 60 * ha(1) + ha(2) 'hora acumulada em segundos
sht = 3600 * ht(0) + 60 * ht(1) + ht(2) 'hora atual em segundos
'Total de horas extras acumuladas, em segundos
TotalSegundos = sha + sht
'Remonta a hora no formato hh:mm:ss
Horas = Int(TotalSegundos / 3600)
Minutos = Int((TotalSegundos - (Horas * 3600)) / 60)
Segundos = TotalSegundos - (Horas * 3600) - (Minutos * 60)
fncSomaHora = Format(Horas,"##00") & ":" & Format(Minutos,"00") & ":" & Format(Segundos,"00")
End Function
_____________________________________________________________________________________
Option Compare Database
Dim TotalHora
'-----------------------------------------------------
Private Sub CabeçalhoDoGrupo0_Print(Cancel As Integer, PrintCount As Integer)
TotalHora = 0
End Sub
'-----------------------------------------------------
Private Sub Detalhe_Print(Cancel As Integer, PrintCount As Integer)
If IsNull(Me!He_HoraInício) Or IsNull(Me!He_HoraFinal) Then Exit Sub
Me!txIntervalo = fncIntervalo(Me!He_HoraInício, Me!He_HoraFinal)
TotalHora = fncSomaHora(TotalHora, Me!txIntervalo)
End Sub
'-----------------------------------------------------
Private Sub RodapéDoGrupo1_Print(Cancel As Integer, PrintCount As Integer)
Dim ht, hh As Double
ht = Split(TotalHora, ":")
Me!TotalHorasExtras = TotalHora
hh = Round((Me!Salário / 220) + 0.00001, 2)
Me!ValorPagar = (ht(0) + (ht(1) / 60) + (ht(2) / 3600)) * hh
TotalHora = 0
End Sub
Grato mais uma vez pela Atenção...