Geronimo
|
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.
|
|
|
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)
|
|
|
|