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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Ajuda URGENTE!!!!!!
Josef
FRANCA
SP - BRASIL
ENUNCIADA !
Postada em 18/06/2008 19:14 hs            
Olá pessoal!
 
Estou desenvolvendo um sistema em Visual Basic de um estacionamento, na qual eu tenho dois labels que recebem valores de hora (entrada e saída)
 
Como eu faço para calcular quantas horas a pessoa ficou no estacionamento???
 
Obrigado desde já pela ajuda!!!!!!!!!!
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 18/06/2008 19:31 hs            
use este código
 
Dim Horas As Integer
Dim Minutos As Integer
 
 
Public Function TempoDecor(Entrada As String, Saida As String) As String
Dim Segundos As Long
Dim Dif As Long
Segundos = DateDiff("s", Entrada, Saida)
Dif = Segundos Mod 3600
Horas = Int((Segundos - Dif) / 3600)
Minutos = Int(Dif / 60)
TempoDecor = Horas & ":" & Minutos
End Function
 
 
Sugestão de Uso:
 
 
Private Sub Command1_Click()
lblTempoDecorrido.Caption = TempoDecor(lblEntrada.Caption, lblSaida.Caption)
If Minutos > 30 Then Horas = Horas + 1 ' apos 30 minutos uma hora a mais será cobrada
valor = Horas * 2 ' Dois é o valor da Hora
lblvalor.Caption = Format(valor, "currency")
End Sub
 
 
Pronto colega veja se te ajudei.
 
at+
 
TÓPICO EDITADO
   
Josef
FRANCA
SP - BRASIL
Postada em 18/06/2008 21:56 hs            
Muito obrigado!
 
Foi de grande valia!
 
Eu estava precisando desses códigos para concluir meu TCC de Lógica de Programação!
 
Muito obrigado mesmo!
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 18/06/2008 22:09 hs            
Para entendimento:
 
O DateDiff("s", Entrada, Saida) calcula a diferença entre as horas em segundos
 
para calculo: 01 Hora possui 60 minutos, sendo que cada minuto possui 60 segundos, então uma Hora possui 3600 segundos.
 
o tempo em datediff será de milhares de segundos, então o que eu fiz:
 
Dif = Segundos Mod 3600
 
O código acima retorna o resto do total de Segundos  dividido por 3600, suponha que se passaram 01:10 em segundos seriam 4200 segundos que divididos por 3600 teriam um resto de 600 segundos.
 
 Operação resto é efetuada pelo MOD
EX:
 
resto= 3 mod 2 
resto=1
 
ou seja 3 não pode ser dividido por dois então será retirado um valor até esta operação ser possivel, neste caso foi retirado 1 do 3 ficando 2/2
 
Continuando
 
Dif=600
 
Calculo para Horas
 
Horas = Int((Segundos - Dif) / 3600)
Horas = (4200- 600) / 3600
Horas=3600/3600
Horas=1
 
Calculos para Minutos
 
Minutos = Int(Dif / 60)
Minutos = 600 / 60
Minutos = 10

Então teremos 01 Hora e 10 minutos.

Desculpe estar explicando assim mas você pode ser questionado a respeito

 

 até.

TÓPICO EDITADO
 
Josef
FRANCA
SP - BRASIL
Postada em 18/06/2008 22:26 hs            
TREZE, agradeço o código e a explicação.
 
Fico, portanto, muito grato.
 
Me ajudará bastante, amigo.
 
     
Alexandre Patos
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
Postada em 19/06/2008 07:49 hs            
treze , só uma pequena duvida nessa sua explicação
 
O código acima retorna o resto do total de Segundos  dividido por 3600, suponha que se passaram 01:10 em segundos seriam 4200 segundos que divididos por 3600 teriam um resto de 600 segundos.
 
nao seriam 4200-3600 em vez de 4200/3600 ?
     
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