Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Calcular intervalo entre horas.

Bom dia, tenho a seguinte situação, existe na empresa um turno onde os funcionários entram as 21:00 Hrs e saem as 01:30 Hrs,

porem se eu tentar calcular o intervalo entre essas horas para pegar o total de horas trabalhadas o retorno vai ser negativo, por exemplo:

01:30 - 21:00 =  - 19:30

Gostaria de saber se existe alguma maneira de se tratar essa situação. Qualquer duvida estou a disposição.

1 Solution

Accepted Solutions
offjunior
Creator
Creator

Boa tarde Marcos!

Revisei o arquivo que você me enviou, criei uma nova aba com as duas tabelas agora funcionando.

Oque fiz foi apenas corrigir um formula em uma expressão que parecia estar alterada do que eu lhe enviei no arquivo anterior. Também, deve lhe ter passado despercebido os acentos em alguns campos, que na minha aplicação tinham acento e na sua não, então as formulas não funcionavam corretamente.

Ai observando alguns resultados, pude verificar que havia algumas diferentes entre horas no período e horas no mês, logo percebi que se devia a alguma falha na extração dos qvds ou pode ser que está assim mesmo em seu banco de dados, pois encontrei registros sem data de entrada mas com data de saída e o contrário também (oque é válido para a data atual) mas não nos serve para cálculos de horas, então eu filtrei pra que esses registros não venham pra Aplicação. Também filtrei para que não venha registros com o campo P8_TPMARCA e PG_TPMARCA nulos, por que também estava ocorrendo. Para exemplo se quiser retirar os filtros que fiz na extração e ver oque estou citando, use a matrícula 000078

Feito isso, tudo funcionou normalmente.

Use esse mesmo qvw para ler seus qvds, não copie coisa desse para o outro que você vai se perder e novamente não irá funcionar.

Única alteração que deverá fazer para voltar a funcionar igualzinho ao que você me enviou, é voltar o nome dos caminhos onde estão os QVDs.

Segue anexo QVW.

Abraço!

View solution in original post

14 Replies
robert_mika
Master III
Master III

Dépense em seu formato de dados , mas tente :

if(saem<entram,(1-entram)+saem,saem-entram)

Caso contrário postar seus dados

Not applicable
Author

Bom dia Robert, tentei da maneira que você me passou mas não obtive o resultado esperado, estou enviando um exemplo para que fique mais fácil o entendimento. offjunior‌ Vou utilizar seu exemplo para demonstrar o problema.

robert_mika
Master III
Master III

interval(if(HOR_SAÍDA<HOR_ENTRADA,(1-HOR_ENTRADA)+HOR_SAÍDA,HOR_SAÍDA-HOR_ENTRADA))

Not applicable
Author

Robert, no exemplo que te enviei funcionou com essa função, porém apenas por data, quando tento listar por mês ele continua trazendo o total negativo. Estou enviando um exemplo atualizado onde estou tentando listar o total mensal.

offjunior
Creator
Creator

Bom dia Amigo!

Eu fiz algumas alterações rápidas, que podem parecer um pouco confusa, mas se ficar atento, podes ver que eu fiz alterações no script de carga, também inclui dimensões calculadas no gráfico e fiz alterações também nas expressões.

Perceba que uma das coisas que alterei no script é a data ponto, eu vi que você havia adicionado uma hora ponto de saída as 01:30 da madrugada, porem a data ponto você não mudou para o próximo dia, esse foi um ponto, o restante está de fácil visualização.

Estou a disposição.

Segue anexo arquivo qvw.

Abraço

Not applicable
Author

Bom dia Normélio, funcionou por data porém por mês ele esta trazendo um valor total diferente, até tentei entender o que você fez mas pra mim ficou um pouco complexo, estou enviando o Qvw modificado para que liste por mês, caso queira analisar.

offjunior
Creator
Creator

Acho que resolvi.

Mudei apenas a expressão, adicionei um AGGR pra que respeite todos os campos "Chaves" e não some tudo de qualquer forma.

Segue arquivo anexo.

Abraço!

Not applicable
Author

Normélio, no exemplo funcionou perfeitamente, porém no meu aplicativo não, acho que o problema pode ser o seguinte, a minha tabela tem um campo que salva a data do apontamento, "DataApon" esse campo leva em consideração apenas uma data por exemplo o registro de ponto das 01:30 vai ser gravado na mesma data dos registros das 16:00, 20:00 e 21:00, e no exemplo o registro das 01:30 está na data real em que foi registrado.

Datas do exemplo:

0101,     001837, 20150401,  16.00,  ENTRADA,   001
0101,     001837, 20150401,  20.00,  SAÍDA,     001
0101,     001837, 20150401,  21.00,  ENTRADA,   002
0101,     001837, 20150402,  1.30,   SAÍDA,     002 

Datas do meu aplicativo:

0101,     001837, 20150401,  16.00,  ENTRADA,   001
0101,     001837, 20150401,  20.00,  SAÍDA,     001
0101,     001837, 20150401,  21.00,  ENTRADA,   002
0101,     001837, 20150401,  1.30,   SAÍDA,     002 
offjunior
Creator
Creator

Entendi.

Você tem certeza disso, que não existe uma data real do apontamento?

Vou tentar fazer alguma coisa pra você, a tarde eu lhe retorno, OK!

Abraço!