14 Replies Latest reply: Apr 10, 2015 1:44 PM by Normélio Junior RSS

    Calcular intervalo entre horas.

    Marcos Santos

      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.

        • Re: Calcular intervalo entre horas.
          Robert Mika

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

           

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

           

          Caso contrário postar seus dados

            • Re: Calcular intervalo entre horas.
              Marcos Santos

              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.

                • Re: Calcular intervalo entre horas.
                  Robert Mika

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

                    • Re: Calcular intervalo entre horas.
                      Marcos Santos

                      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.

                        • Re: Calcular intervalo entre horas.
                          Normélio Junior

                          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

                            • Re: Calcular intervalo entre horas.
                              Marcos Santos

                              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.

                                • Re: Calcular intervalo entre horas.
                                  Normélio Junior

                                  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!

                                    • Re: Calcular intervalo entre horas.
                                      Marcos Santos

                                      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 
                                        • Re: Calcular intervalo entre horas.
                                          Normélio Junior

                                          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!

                                          • Re: Calcular intervalo entre horas.
                                            Normélio Junior

                                            Boa tarde!

                                             

                                            Marcos, eu alterei novamente o Script e a expressão que calcula as horas.

                                            Como não temos um data real de ponto, eu tive que criar uma, usei a seguinte regra, se o horário de entrada é maior que o horário de saída no mesmo numero de período e data de período, então quer dizer que virou o dia trabalhando, sendo assim, eu adiciono um dia a mais na data período, criando assim a data ponto, caso a entrada for menor ou igual  saída, uso a própria data período.

                                             

                                            Aqui nos meus testes funcionou de forma satisfatória, até inseri um período a mais para uma outra matrícula, para poder testar melhor, e atendeu.

                                             

                                            Estou a disposição.

                                            Segue anexo arquivo qvw.

                                             

                                            Abraço!

                                              • Re: Calcular intervalo entre horas.
                                                Marcos Santos

                                                    Bom dia Nórmelio, no exemplo está funcionando normalmente, porém ao passar a mesma lógica para o meu aplicativo não funciona, acho que pode ser o formato dos números que está interferindo, pois no exemplo eles são separados por ponto (1.00), e no meu aplicativo são separados por vírgula (1,00) , mesmo formatando para trocar a vírgula por ponto não está dando certo, fiz um teste no exemplo que você me mandou colocando vírgulas no lugar dos pontos e também não funcionou. Segue em anexo o meu aplicativo com os Qvd's caso queira analisar.

                                                  • Re: Calcular intervalo entre horas.
                                                    Normélio Junior

                                                    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!