MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Horas/Contagem de Serviços Bugadas

    avatar
    diogoisaias21
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 168
    Registrado : 01/09/2017

    Horas/Contagem de Serviços Bugadas Empty Horas/Contagem de Serviços Bugadas

    Mensagem  diogoisaias21 em 16/12/2020, 01:19

    Tenho esta Tabela com 2 Registos no mesmo Dia

    09:00 - 13:00
    14:00 - 18:00

    Quando Abro o Formulário de Pesquisa, ele aparece em Duplicado, ou seja, conta 4 Registos e ainda 16 Horas, mas isto só acontece quando Executo 2 Registos no mesmo dia da mesma Pessoa.


    Horas/Contagem de Serviços Bugadas Tabela10

    Horas/Contagem de Serviços Bugadas Filtro10

    Horas/Contagem de Serviços Bugadas Ponto_10

    Agora Se eu Mudar o Segundo Registo para Dia 16, Ele já me vai dar tudo Certinho:

    Horas/Contagem de Serviços Bugadas Tabela11


    Horas/Contagem de Serviços Bugadas Filtro11


    Horas/Contagem de Serviços Bugadas Ponto_11

    Porque será que Buga sempre que tenho 2 Registos no mesmo Dia?

    A origem dos Dados do Formulário:

    Horas/Contagem de Serviços Bugadas Form_o10

    Modo Estrutura do Formulário:

    Horas/Contagem de Serviços Bugadas Modo_e10

    Obrigado A quem puder dar aqui uma ajuda <3
    avatar
    diogoisaias21
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 168
    Registrado : 01/09/2017

    Horas/Contagem de Serviços Bugadas Empty Re: Horas/Contagem de Serviços Bugadas

    Mensagem  diogoisaias21 em 16/12/2020, 14:04

    Modulo Usado para a Contagem das Horas
    Código:
       
    Option Compare Database
        Function MontaHora(tSegundos) 'Utilizar o DateDiff especificando em "s" segundos EX: MontaHora(DateDiff("s", Me.DataHoraEntrada, Me.DataHoraSaida))
                Dim Horas As Long, minutos As Long, Segundos As Long
                'Realiza a conversão dos Segundos para obter as Horas, Minutos e Segundos
                Horas = Int(tSegundos / 3600)
                minutos = Int((tSegundos - (Horas * 3600)) / 60)
                Segundos = tSegundos - (Horas * 3600) - (minutos * 60)
                'No final ele monta as horas no formato conhecido (hh:mm:ss)
                MontaHora = Format(Horas, "##00") & ":" & Format(minutos, "00") & ":" & Format(Segundos, "00")
                'ou no formato conhecido (hh:mm)
                'MontaHora = Format(horas, "##00") & ":" & Format(minutos, "00")
       
        End Function
        Public Function ConverteHoras(QuantMinutos As Variant) As String
       
        Dim Horas As Long
        Dim minutos As Long
       
        If IsNull(QuantMinutos) Then
        ConverteHoras = ""
        Exit Function
        End If
       
        Horas = Int(CSng(QuantMinutos / 60))
        minutos = QuantMinutos Mod 60
       
        ConverteHoras = Format(Horas, "##00") & ":" & Format(minutos, "00")
       
        End Function
        Public Function fncSomaHoraII(Horainicio As Variant, Horafim As Variant) As Variant
        Dim hi, hf, shi As Long, shf As Long, totalSegundos As Long, Horas As Long, minutos As Long, Segundos As Long
       
        hi = Split(Horainicio, ":")
        hf = Split(Horafim, ":")
       
        shi = 3600 * hi(0) + 60 * hi(1) + hi(2) 'hora inicio acumulada em segundos
        shf = 3600 * hf(0) + 60 * hf(1) + hf(2) 'hora fim acumulada em segundos
        'ferificar qual é maior
        'se inicio em um dia acabou no outro adicionar um dia em segundos na hora final
        If shf < shi Then
       
        totalSegundos = ((shf + 86400) - shi) / 60 'transforma em mintuos
       
        Else
        totalSegundos = (shf - shi) / 60 'transforma em minutos
        End If
       
        fncSomaHoraII = totalSegundos
       
        End Function
       

      Data/hora atual: 25/1/2021, 03:32