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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Cálculo com horas
PH1959
Pontos: 2843
SÃO JOSÉ DOS CAMPOS
SP - BRASIL
ENUNCIADA !
Postada em 11/12/2006 12:03 hs            
Alvaro,
suponha:
text1(1)  --- data entrada
text1(2) --- hora entrada
depois na sequencia..
text1(3) ..data saida almoço..
text1(4) ...hora saida almoço
até aí ok né?
valores inseridos SEMPRE sem pontuações ex
dia 10/12/2006 será inserido 10122006
hora 7:54 será inserida 0754
(a formatação vc vai fazer no evento lost focus)
ex baseado nos valores q vc passou acima
 
entr      almoço entr      saida     entr     extra
08:00 - 11:30 - 12:30 - 18:00 - 18:00 - 05:00
teriamos ainda os texts de datas..
dataentr      datasaidaalmoço dataentralmoço      datasaida     dataentrextra     datasaídaextra
teriamos na sequencia..
10122006   dataentr 
10122006     datasaidaalmoço
10122006dataentralmoço 
10122006datasaida 
10122006dataentrextra 
11122006datasaídaextra
 
a totalização é feita comparando-se primeiramente as datas de entrada/saída de cada intervalo SE as datas forem iguais calculam-se as horas normalmente
ex
10122006   dataentr 
10122006     datasaidaalmoço
entr      saídaalmoço
0800 -    1130
Mesma data...
hora saida - hora entrada =3:30
 
no caso do extra asdatas são diferentes
portanto:
10122006dataentrextra 
11122006datasaídaextra
datasaidaextra-dataentradaextra=1 (dia)
entr     extra
18:00 - 05:00
 
Horasaída= 05:00+24:00
Horasaída=29:00
horasaídaextra-horaentradaextra=29:00-18:00
(ou sejam 11:00)
 
Eu costumo trabalhar estes valores como números e não como datas e horas pq o vb entende horas somente de 0- 24 h ele não entenderia 29 H.
sempre converto os valores para numeros e DECIMAIS para facilitar as operações matematicas
 
 
 
 
 
 
 
 
 
 
   
Cardoso G
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
ENUNCIADA !
Postada em 13/12/2006 14:02 hs            
ph1959 entao faça para entrada=11:35 saida=12:00 , com numero isso nao daria certo
 
   
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 14/12/2006 07:52 hs            
PH1959 e Cardoso desculpem não ter respondido antes, é que tive que sair para ir a um cliente e também não queria perder a lógica do cálculo com as horas, bom vocês mais do que eu sabem né, rssss!!!
Queria agradecer a ajudar de vocês para tentar solucionar o meu problema, PH1959 queria falar também que descobri o porque eu não estava conseguindo usar aquele exemplo que consegui do macoratti, era porque a variável que criei não era uma variável date e sim string e quando ele tentava ler aquela variável como data ele não conseguia, então após mudar para date ficou muito mais fácil, inclusive cheguei até colocar essa dica aqui no site, más parece que deu algum problema e não foi publicada, mandei um e-mail e o pessoal do suporte ja estão vendo o que aconteceu !!
 
Para você ver como que ficou o meu código
Tenho um botão chamado calcular e nele coloquei esse código
 
    If HoraFinal > HoraInicial Then 'horario normal, ou seja entra e sai no mesmo dia
        horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    Else
        'entrando a noite e saindo de manhã
        horas_trabalhadas = Format((1 + HoraFinal - HoraInicial) * 24, "#0.0")
    End If
Precisei apenas disso, e quando faço o lançamento eu utilizo apenas o horário, ou seja, se o funcionário entrou ás 07:00 e saiu ás 17:00 entra no primeiro caso, agora se ele entra ás 22:00 e saiu ás 05:00 entra no segundo caso
Basicamente é isso, depois se o pessoal do vbweb não conseguir achar as minhas dicas e se vc quiser ver como que ficou o código eu te passo, más pretendo colocar a parte principal desse código nas dicas, pois o cálculo ficou bem simples e rápido
 
Abraço e mais uma vez agradeço pela ajuda
 
 
Obs: Deixarei o tópico aberto mais alguns dias caso você ou outra pessoa queira dar mais alguma sujestão ou falar algo, ok ?!
TÓPICO EDITADO
 
Cardoso G
não registrado
ENUNCIADA !
Postada em 14/12/2006 10:22 hs   
Alvaro , coloque aqui o codigo pra gente ver como ficou
   
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 14/12/2006 10:57 hs            
Cardoso ficou assim
 
eu tenho um for - next, onde muda o numero do n, como sabem eu estou trabalhando com arrays tanto no text como no label
 
Então a cada passagem ele compara qual é o dia da semana e com isso eu direciono eu para um determinado lugar
 
    If Label1(N).Caption = "sáb" Or Label1(N).Caption = "dom" Or Label1(N).Caption = "fer" Then GoTo Continua2
   
    HoraInicial = TxtEntrada1(N).Text
    HoraFinal = TxtSaida2(N).Text
   
    If HoraFinal > HoraInicial Then 'horario normal
        horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    Else
        'entrando a noite e saindo de manhã
        horas_trabalhadas = Format((1 + HoraFinal - HoraInicial) * 24, "#0.0")
    End If
   
    If Label1(N).Caption <> "sex" Then
        horas_trabalhadas = 10 - horas_trabalhadas '9 horas + 1 de almoço
    Else
        horas_trabalhadas = 9 - horas_trabalhadas '8 horas + 1 de almoço
    End If
    TotalDesconto = TotalDesconto + horas_trabalhadas
    Label5(N).Caption = horas_trabalhadas
    'Cálculo de hora extra normal
    If TxtExtra1(N).Text = "" Then GoTo Continua
    HoraInicial = TxtExtra1(N).Text
    HoraFinal = TxtExtra2(N).Text
    If HoraFinal > HoraInicial Then
        horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    Else
        horas_trabalhadas = Format((1 + HoraFinal - HoraInicial) * 24, "#0.0")
    End If
    TotalExtra = TotalExtra + horas_trabalhadas
    Label8(N).Caption = horas_trabalhadas
    GoTo Continua
Continua2:
    'sab - dom - fer
    HoraInicial = TxtEntrada1(N).Text
    HoraFinal = TxtSaida2(N).Text
    horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    If Label1(N).Caption = "sáb" Then
        Sabado = Sabado + horas_trabalhadas
    Else
        DiaTrabalhoFolga = DiaTrabalhoFolga + 1
        DomingoeFeriado = DomingoeFeriado + horas_trabalhadas
    End If
    Label8(N).Caption = horas_trabalhadas
Continua:
next
 
Senão entenderem algo é só me falar
 
Abraço a todos
   
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 14/12/2006 10:59 hs            
O código ficou assim:
eu tenho um for - next, onde muda o numero do n, como sabem eu estou trabalhando com arrays tanto no text como no label
 
Então a cada passagem ele compara qual é o dia da semana e com isso eu direciono eu para um determinado lugar
 
    If Label1(N).Caption = "sáb" Or Label1(N).Caption = "dom" Or Label1(N).Caption = "fer" Then GoTo Continua2
   
    HoraInicial = TxtEntrada1(N).Text
    HoraFinal = TxtSaida2(N).Text
   
    If HoraFinal > HoraInicial Then 'horario normal
        horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    Else
        'entrando a noite e saindo de manhã
        horas_trabalhadas = Format((1 + HoraFinal - HoraInicial) * 24, "#0.0")
    End If
   
    If Label1(N).Caption <> "sex" Then
        horas_trabalhadas = 10 - horas_trabalhadas '9 horas + 1 de almoço
    Else
        horas_trabalhadas = 9 - horas_trabalhadas '8 horas + 1 de almoço
    End If
    TotalDesconto = TotalDesconto + horas_trabalhadas
    Label5(N).Caption = horas_trabalhadas
    'Cálculo de hora extra normal
    If TxtExtra1(N).Text = "" Then GoTo Continua
    HoraInicial = TxtExtra1(N).Text
    HoraFinal = TxtExtra2(N).Text
    If HoraFinal > HoraInicial Then
        horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    Else
        horas_trabalhadas = Format((1 + HoraFinal - HoraInicial) * 24, "#0.0")
    End If
    TotalExtra = TotalExtra + horas_trabalhadas
    Label8(N).Caption = horas_trabalhadas
    GoTo Continua
Continua2:
    'sab - dom - fer
    HoraInicial = TxtEntrada1(N).Text
    HoraFinal = TxtSaida2(N).Text
    horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
    If Label1(N).Caption = "sáb" Then
        Sabado = Sabado + horas_trabalhadas
    Else
        DiaTrabalhoFolga = DiaTrabalhoFolga + 1
        DomingoeFeriado = DomingoeFeriado + horas_trabalhadas
    End If
    Label8(N).Caption = horas_trabalhadas
Continua:
next
 
Senão entenderem algo é só me falar
 
Abraço a todos
   
Página(s): 2/4     « ANTERIOR    PRÓXIMA »

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