Como fazer Cálculos com Data e Hora superior a 24H no Access
Se você quer realmente aprender a trabalhar e fazer cálculos com Data e Horas no Access, veja na íntegra este artigo. Como fazer Cálculos com Data e Hora superior a 24H no Access
O grande detalhe para fazer cálculos com Data e Hora é entender como este tipo de dado funciona no Access.
Este tipo de dado é considerado como Ponto Flutuante, ou seja, é um tipo de dado que pode ser representado por meio de uma notação científica.
Exemplo: 52,345 = 0,52345 x 10^5
Mas isso tem muita importância. O mais importante é saber que as Datas e Horas são tratadas como números pelo Access.
Para auxiliar esta compreensão, vou utilizar a consulta do Access e a Função CDup() ou Cdbl() para comprovar o que estamos falando.
Na consulta acima, a função CDup() em Português ou CDbl() em Inglês para ser utilizada em nível de VBA, ela transforma o valor que esta no formato de Data/Hora no formato de número.
Assim, ao executarmos a consulta teremos o seguinte resultado:
No Access, os valores que estão a Esquerda da vírgula, representam as Datas e os valores que estão a Direita da vírgula representam as Horas, ou seja:
- No 1º registro: 42504 representa 14/05/2016 e 0,5833333333 representa 14:00
- No 2º registro: 42899 representa 13/06/2017 e 0,75 representa 18:00
- No 3º registro: 43326 representa 14/08/2018 e 0,9166666667 representa 22:00
Para tirarmos a “prova dos 9”, vou fazer o processo inverso. Vou utilizar a funão CData() para converte o número em Data/Hora
Assim, ao executarmos a consulta voltaremos ao resultado anterior que está definido no campo Data.
Até aqui tudo normal, não é mesmo???
Agora vamos incrementar mais este tutorial!!
Com base nas formações acima, fica mais fácil calcular, por exemplo as horas trabalhadas de um colaborador dentro da empresa.
Vamos mostrar uma nova tabela com as seguintes informações abaixo:
Vamos calcular as horas trabalhadas destes 4 colaboradores. Para isto vamos calcular a diferença e incluir a função CData() para converter o resultado em formato de Data/Hora
Após executarmos a consulta teremos o total calculado das horas trabalhadas de cada colaborador.
Agora vamos adicionar mais um registro, no caso, as horas trabalhadas do colaborador Kleber Caetano que neste mesmo dia entrou as 17:30 e só saiu as 2 horas da manhã do dia 01/01/2020. Ao executarmos a consulta teremos o seguinte resultado:
Note que o cálculo esta correto, embora o colaborador tenha saído no dia seguinte. Neste caso a Data é o campo da esquerda da vírgula e neste caso ele é maior que a DataEntrada, fazendo o calculo normalmente de 08:30 de horas trabalhadas.
Agora se fosse o calculo das Horas. Como ficaria estes calculos???
Repare que as horas trabalhadas do colaborador Kleber Caetano está incorreta. O Access não consegue entender este cálculo, uma vez que a fórmula que utilizamos é a diferença entre a HoraSaida e a HorraEntrada.
Para resolvermos esta situação, temos que adicionar 1 dia ao término do trabalho. Teremos que criar uma condicional para saber se a HoraSaida é menor que a HoraEntrada. Para estes caso devemos adicionar 1 dia. Veja no exemplo abaixo:
Segue o Construtor de Expressões para entender melhor a fórmula criada:
Agora vamos calcular o total de horas trabalhadas deste 5 colaboradores.
Ao executarmos esta nova consulta para calcular esta soma, o Access automaticamente transforma esta Data para numero. Isto acontece porque o Access não calcula quando ultrapassa 24 horas. Neste caso, o resultado da soma será:
Quando transformamos este resultado para o formato Data/Hora, teremos o seguinte resultado:
O que o Access fez na verdade para chegar neste resultado??
Vamos lá….O resultado da soma das horas trabalhadas dos 5 colaboradores darão, calculando manualmente, 52 Horas.
Assim, como a soma ultrapassa as 24 horas, o Access adiciona 2 dia à data e subtraiu as 24 horas no cálculo referente às horas, ficando assim:
2 dia (52 Horas – 48 Horas) = 2,166666667
Assim vamos transformar este número em formato de Data
CData(2) = 01/01/1900 e CData(0,166666667) = 04:00
E como poderemos resolver esta situação. Uma saída é transformarmos todos os horários para segundo. Para isso, usaremos a função DifData() no campo calculado chamado de Total2.
Segue o Construtor de Expressões para entender melhor a fórmula criada:
Ao executarmos a consulta teremos os horários transformados para segundos e do tio inteiro longo
Agora basta somar o campo Total2, que representa o Total de Horas trabalhadas em segundos e depois formatar este campo para hh:mm
Até o próximo tutorial!
Um forte abraço!
Aldir Oliveira
Permalink
Aldir, o conteúdo sobre calculo de horas no access ficou excelente, bem esclarecedor, agradeço por este conhecimento, sigo inscrito no seu canal e acompanhando todos os vídeos sobre access, muito obrigado e sucesso.
Permalink
Luiz! Este é meu intuito…Compartilhar com a comunidade o conhecimento desta ferramenta tão magnífica e pouco explorada. Obrigado pelo Retorno!
Permalink
Boa dia Amigo
Gostaria de calcular a horas entre duas datas em uma tabela
estou com dificuldade
Agradeço desde já
Permalink
Opa! Para que eu possa compreender, descreva aqui a sua dúvida, blz? Abs
Permalink
Obrigado pelo tutorial, muito bom, só não entendi como formatar o total de segundos, para chegar a 52 horas..
Abraços
Permalink
Em breve irei fazer um vídeo sobre isso. Fique ligado no canal.