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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  NO EXCEL É FÁCIL, MAS NO VB COMO FAZER?
SRick
LAVRAS
MG - BRASIL
ENUNCIADA !
Postada em 31/03/2012 22:11 hs            

NO EXCEL FICARIA ASSIM

HORA          TOTAL DE DESLOCAMENTO          TEMPO MÉDIO

26:10:15                     5                                   5:14:03

MAS NO VB COMO FARIA ESSE CÁLCULO?

TENHO UM TOTAL DE HORAS EM UMA VARIAVEL DATE

TENHO UM NÚMERO DE DESLOCAMENTOS NUMA VARIAVEL INT

E PRECISO DA DIVISÃO DO TOTAL DE HORAS PELO Nº DE DESLOCAMENTOS

Desde já agradeço a quempuder me dar um aluz.

 

Henrique

 

 

 

 

   
Tiranossauro
não registrado
ENUNCIADA !
Postada em 01/04/2012 21:45 hs   
Porque não converte tudo em segundos, divide por 5, e depois converte de novo em horas, minutos e segundos:


Dim vHMS As String
Dim vsegundos As Long
Dim vNHMS As String
Dim vH As Long
Dim vM As Long
Dim vs As String

vHMS = "26:10:15"

vsegundos = Val(Mid(vHMS, 7, 2))
vsegundos = vsegundos + (Val(Mid(vHMS, 4, 2)) * 60)
vsegundos = vsegundos + (Val(Mid(vHMS, 1, 2)) * (60 * 60))
vsegundos = vsegundos / 5
vH = Int(Val(vsegundos) / (60 * 60))
vM = Int((vsegundos - (vH * 60 * 60)) / 60)
vs = vsegundos - (vM * 60) - (vH * 60 * 60)

vNHMS = Format(vH, "00") & ":" & Format(vM, "00") & ":" & Format(vs, "00")
   
SRick
LAVRAS
MG - BRASIL
ENUNCIADA !
Postada em 02/04/2012 10:54 hs            
Obrigado Tiranossauro, vou tentar adequar ao meu código, porém o meu código tem o valor total em horas com variavel tipo date.
 
Pergunto, como trasformar valor tipo date para string?
 
Henrique
   
Tiranossauro
não registrado
ENUNCIADA !
Postada em 02/04/2012 11:30 hs   
Não entendi de que forma armazenas isto na variável Date.
Pergunto pelo fato de, no caso deste exemplo, ter 26 horas .. e o formato datetime não aceitaria a hora 26 ....

explique melhor.
   
SRick
LAVRAS
MG - BRASIL
ENUNCIADA !
Postada em 02/04/2012 12:56 hs            
Olá Tiranossauro, testei o seu exemplo e funcionou 100%, só que como meu código não estou conseguindo adequá-lo, vou inserir o código abaixo para você me dar uma luz, como posso fazer.
----------------------------
segue o código:
 
Dim RESP As New ADODB.Recordset
Private Sub CommandButton1_Click()
'On Error GoTo fora
If Text2.Text = "" Or Text3.Text = "" Then
       MsgBox "Informe uma data válida", vbExclamation, "Informação de Datas"
       Text2.SetFocus
     Exit Sub
    End If
Dim dtp As Date
Dim dtp2 As Date
dtp = Text3.Text
dtp2 = Text2.Text
 If CDate(dtp) > CDate(dtp2) Then
       MsgBox "A data inicial não pode ser maior que a data final", vbExclamation, "Informação de Datas"
       Text1.SetFocus
     Exit Sub
    End If
Dim totalhours As Long, totalminutes As Long, totalseconds As Long
Dim days As Long, hours As Long, minutes As Long, seconds As Long
Dim interval As Variant, j As Integer
RESP.MoveMin
Do While Not RESP.EOF
If RESP!Data_Deslocamento >= dtp And RESP!Data_Deslocamento <= dtp2 Then
  interval = interval + RESP!Total_Horas
End If
RESP.MoveNext
Loop
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
seconds = totalseconds Mod 60
hora = Str(totalhours) & ":"
AumentaZero = Right$("0" & Trim(Str(Trim(minutes))) & ":", 3)
hora = hora & AumentaZero
AumentaZero = Right$("0" & Trim(Str(Trim(seconds))), 3)
hora = hora & AumentaZero
 
"0bs. a variavel hora vai receber o somatorio das horas
'aqui é o seu código Tiranossauro--------------------------------------

Dim vHMS As String
Dim vsegundos As Long
Dim vNHMS As String
Dim vH As Long
Dim vM As Long
Dim vs As String
'=======================
vHMS = "26:10:15"   >>>>> AQUI QUE EU PRECISO ENTRAR COM A VARIAVEL hora.
vsegundos = Val(Mid(vHMS, 7, 2))
vsegundos = vsegundos + (Val(Mid(vHMS, 4, 2)) * 60)
vsegundos = vsegundos + (Val(Mid(vHMS, 1, 2)) * (60 * 60))
vsegundos = vsegundos / 5
vH = Int(Val(vsegundos) / (60 * 60))
vM = Int((vsegundos - (vH * 60 * 60)) / 60)
vs = vsegundos - (vM * 60) - (vH * 60 * 60)
vNHMS = Format(vH, "00") & ":" & Format(vM, "00") & ":" & Format(vs, "00")
 
  
 
Label1.Caption = vNHMS & "  Horas medias"

Exit Sub
'fora:
'     MsgBox "Ocorreu um erro no processamento, verifique os campos data", vbExclamation, "Erro na digiração das datas"
End Sub
Private Sub Form_Load()
On Error GoTo ABRE
'Abre a Conexão
Conecta True
'Abre o Recordset
RESP.CursorLocation = adUseClient
RESP.Open "Select * From Plantao", Conexao, adOpenKeyset, adLockOptimistic, adCmdText
   If RESP.BOF Or RESP.EOF Then
      Exit Sub
   End If
   Exit Sub
ABRE:
  MsgBox "Ocorreu um erro durante a abertura do arquivo Plantão"
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
CampoDATA Text3, KeyAscii
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
CampoDATA Text2, KeyAscii
End Sub

 
 
 
   
Tiranossauro
não registrado
ENUNCIADA !
Postada em 02/04/2012 13:15 hs   
interval não pode ser variável, é uma palavra reservada, vai ter problemas com isto
procure não usar estes nomes de variáveis .. days, hours, minutes, etc


totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
seconds = totalseconds Mod 60
hora = Str(totalhours) &
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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