USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Soma de Horas
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
ENUNCIADA !
Postada em 18/11/2005 16:12 hs            
Veja este exemplo:
 
Somando o total de horas :
Desenhe:
3 Textboxes
1 ComboBox
1 Commandbutton

Cole o seguinte código:

Private Sub Command1_Click()

    Text3 = SomaHoras(Text1, Text2, Combo1.ListIndex)
    
End Sub

Private Sub Form_Load()

    With Combo1
        .AddItem "hh:mm:ss"
        .AddItem "mm:ss"
        .AddItem "Segundos"
    End With
    
    Text1 = ""
    Text2 = ""
    Text3 = ""
    
End Sub


Function SomaHoras(ByVal Hora1 As Date, ByVal Hora2 As Date, ByVal Retorno As Byte) As Variant

    ' Passe as horas em Hora1 e Hora2
    ' Retorno define como a função vai retornar:
    ' = 0: Retorna um string no formato hh:mm:ss
    ' = 1: retorna um string no formato mm:ss
    ' = 2: retorna um inteiro longo com o número de segundos

    Dim H1 As Integer, M1 As Integer, S1 As Integer
    Dim H2 As Integer, M2 As Integer, S2 As Integer
    Dim HF As Long, MF As Long, SF As Long
    
    H1 = Hour(Hora1)
    M1 = Minute(Hora1)
    S1 = Second(Hora1)
    
    H2 = Hour(Hora2)
    M2 = Minute(Hora2)
    S2 = Second(Hora2)
    
    SF = (S1 + S2) Mod 60
    M2 = M2 + ((S1 + S2)  60)
    
    MF = (M1 + M2) Mod 60
    H2 = H2 + ((M1 + M2)  60)
    HF = H1 + H2
    
    ' Formata o retorno
    Select Case Retorno
    Case 0
        SomaHoras = CStr(HF) & ":" & Format(MF, "00") & ":" & Format(SF, "00")
    Case 1
        SomaHoras = Format((HF * 60) + MF, "00") & ":" & Format(SF, "00")
    Case 2
        SomaHoras = ((HF * 60) + MF) * 60 + SF
    End Select
    
End Function


Rode o código e digite as horas no formato hh:mm:ss em 
text1 e text2, escolha a forma de retorno no combo e clique o botão...
 
Outro exemplo :
Private Sub Command1_Click()

Dim Hf, Mf, Sf As String

Hf = Mid(Text1.Text, 1, 2) - Mid(Text2.Text, 1, 2)
Mf = Mid(Text1.Text, 4, 2) - Mid(Text2.Text, 4, 2)
Sf = Mid(Text1.Text, 7, 2) - Mid(Text2.Text, 7, 2)

If Sf < 0 Then
Sf = Sf + 60
Mf = Mf - 1
End If

If Mf < 0 Then
Mf = Mf + 60
Hf = Hf - 1
End If

Text3.Text = Format(Hf, "00") & ":" & Format(Mf, "00") & ":" & Format(Sf, "00")

End Sub

"O pior inimigo que você poderá encontrar será sempre você mesmo."
   
FLAVIO
não registrado
ENUNCIADA !
Postada em 18/11/2005 16:27 hs   
Não sei se está certa esta rotina abaixo que eu fiz, gostaria que me ajudassem
 
 
 ' -------------------
                ' Calculo de Total de horas trabalhadas
                ' -------------------
                Dim HH As Integer
                Dim MM As Integer
                HH = Val(Left(rstHorasTrab("HORAS_TRABALHADAS"), 2)) + Val(Left(rstHorasTrab("HORAS_TRABALHADAS2"), 2))
                MM = Val(Right(rstHorasTrab("HORAS_TRABALHADAS"), 2)) + Val(Right(rstHorasTrab("HORAS_TRABALHADAS2"), 2))
                HH = HH * 60
                HH = HH + MM
                MM = HH - Int(HH)
                HH = (HH / 60) - MM
               
                If MM >= 60 Then
                    MM = MM / 60
                    HH = HH + Int(MM)
                    If MM <= 1.99 Or MM >= 60 Then
                       Do While MM >= 60 Or MM <= 1.99
                            MM = MM / 60
                            HH = HH + Int(MM)
                       Loop
                    End If
                End If
                rstHorasTrab.Edit
                rstHorasTrab("TOT_HORAS_TRABALHADAS") = strzero(Str(HH), 2) + ":" + strzero(Str(MM), 2)
                rstHorasTrab("REFERENCIA_FOLHA") = cbo_mes.Text
                rstHorasTrab("ANO_FOLHA") = txt_ano.Text
                rstHorasTrab.Update
                
   
FLAVIO
não registrado
ENUNCIADA !
Postada em 18/11/2005 16:29 hs   
 ' -------------------
                ' Calculo de Total de horas trabalhadas
                ' -------------------
                Dim HH As Integer
                Dim MM As Integer
                HH = Val(Left(rstHorasTrab("HORAS_TRABALHADAS"), 2)) + Val(Left(rstHorasTrab("HORAS_TRABALHADAS2"), 2))
                MM = Val(Right(rstHorasTrab("HORAS_TRABALHADAS"), 2)) + Val(Right(rstHorasTrab("HORAS_TRABALHADAS2"), 2))
                HH = HH * 60
                HH = HH + MM
                MM = HH - Int(HH)
                HH = (HH / 60) - MM
               
                If MM >= 60 Then
                    MM = MM / 60
                    HH = HH + Int(MM)
                    If MM <= 1.99 Or MM >= 60 Then
                       Do While MM >= 60 Or MM <= 1.99
                            MM = MM / 60
                            HH = HH + Int(MM)
                       Loop
                    End If
                End If
                rstHorasTrab.Edit
                rstHorasTrab("TOT_HORAS_TRABALHADAS") = strzero(Str(HH), 2) + ":" + strzero(Str(MM), 2)
                rstHorasTrab("REFERENCIA_FOLHA") = cbo_mes.Text
                rstHorasTrab("ANO_FOLHA") = txt_ano.Text
                rstHorasTrab.Update
                
   
Hans
PIRACICABA
SP - BRASIL
ENUNCIADA !
Postada em 19/11/2005 08:59 hs            
Caro amigo estou certo que para resolver este problema você tem que usar o excel.
Vou explicar:
1º Abra uma planilha, coloque na parte superior os campos. Ex. Horas Normais / Horas Trabalhadas.
2º Configure todas as células das horas no tipo (37:30:55) no excel.
Obs. A limitação neste campo é 9999:59:59hs
Fora isso você poderá fazer todos os cálculos trabalhista/Contábil entre outros...
Vai uma dica eu fiz um banco de horas transformando o cálculo de horas já em valor.
3º Salve esta planilha e use como banco de dados, você pode usar dentro do access mais eu não aconselho pois dentro ele mistura todas as horas.
Se você estiver usando o Visual Basic 6.0 não terá problema em conectar o excel como banco de dados.
Dai vai funcionar.
Faça antes alguns testes no excel para ver se é isto que você quer.
 
Sem mais
 
Carlos Hans de Oliveira
Piracicaba - SP
   
Hans
PIRACICABA
SP - BRASIL
ENUNCIADA !
Postada em 19/11/2005 09:13 hs            
Caso tenha alguma dúvida.
 
Eu estou no e-mail carloshans@plugsoft.com.br
   
Tiranossauro
não registrado
ENUNCIADA !
Postada em 19/11/2005 12:57 hs   
Use a função Datediff  utilizando o formato...   ano mes dia hh mm
 
Não estou no micro com Vb agora, mas vai encontrar no Help do Datediff
 
Horas = Datediff( minutos, datahoracomplinicial, datahoracomplfinal)
 
   
Página(s): 2/3     « ANTERIOR    PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página