MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


5 participantes

    [Resolvido]Calculo de Horas

    Luís Augusto
    Luís Augusto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 28/10/2011

    [Resolvido]Calculo de Horas Empty [Resolvido]Calculo de Horas

    Mensagem  Luís Augusto 21/1/2012, 01:57

    Boa noite pessoal. Primeiramente devo ressaltar que fiz uma pesquisa "Calculo de Horas" e "Horas" no forum porém, depois de ler muitos tópicos cheguei a conclusão de que nenhum dos casos que vi atende à minha necessidade.

    Alguém teria conhecimento de um exemplo que fizesse um calculo de horas com campos tipo Data Geral (dd/mm/yyyy hh:nn:ss) considerando os dias trabalhados?

    A situação é a seguinte: tenho um formulário com dois (02) campos do tipo data/hora.

    1°_ "Data_Abertura" formatado como (Data Geral) conforme supracitado com valor padrão =Agora()

    2°_ "Data_Conclusão" formatado como (Data Geral) o seu valor está associado ao evento (cboStatus_AfterUpdate()) Me.Data_Conclusão = Now

    Até ai seria uma questão comum como os outros tópicos que pesquisei.

    O problema que o calculo deve considerar o fato que trabalhamos de segunda à sexta com as seguintes observações:

    Inicio do turno: 06:45:00
    Parada para Almoço: 11:00:00
    Retorno do Almoço: 11:50:00
    Termino do turno : 16:20:00

    Outra observação importante, nem sempre terminamos nossas tarefas no mesmo dia que a iniciamos, portanto, o resultado deve ser exibido em total de horas trabalhadas naquele projeto, ex: 33:55:59.

    Certo da colaboração de vocês, desde já muito obrigado.




    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  Avelino Sampaio 21/1/2012, 07:10

    Olá

    Veja uma explicação de como trabalhar com data e hora

    Calculo com horas

    Sucesso!


    Última edição por Avelino Sampaio em 21/1/2012, 07:12, editado 1 vez(es)


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  Alexandre Neves 21/1/2012, 09:16

    Bom dia, Luís

    crie um loop
    No primeiro dia, faça o cálculo a partir da hora inicial
    nos dias intermédios, soma as horas de trabalho diário
    no último dia, calcula a partir da hora final
    Luís Augusto
    Luís Augusto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 28/10/2011

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  Luís Augusto 21/1/2012, 14:13

    Muito obrigado pela ajuda caros colegas, mas devo ressaltar que sou iniciante mesmo; por enquanto estou limitado à algumas funções no que se diz respeito ao VBA. Tenho uma qualidade, sou um pesquisador incansável.
    Encontrei um exemplo perdido aqui no meu computador (daqueles que nós fazemos download acreditando que um dia será necessário) de um desenvolvedor chamado Plínio Mabesi. Este exemplo é exelente e acredito que faz tudo aquilo que pretendo, só tem um porém, não consigo enchegar por mais que seja simples, uma maneira de adaptálo ao meu BD.
    Alguém com disponibilidade poderia me ajudar com esta tarefa?
    Segue em anexo o exemplo encontrado.

    Antes que alguém me diga para procurar o autor do BD para me ajudar, parece que ele cobra R$ para tal finalidade, é justo, pois os seus exemplos são de alta qualidade, mas no momento não tenho $ como me associar à uma dívida.
    Conto com a compreensão de todos, obrigado.

    Anexos
    [Resolvido]Calculo de Horas AttachmentExpediente.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (32 Kb) Baixado 182 vez(es)
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  criquio 22/1/2012, 01:01

    Acredito que você tenha campos para marcar a hora de entrada e saída e tambem saída e volta do almoço, correto? Caso não tenha, acredito que a melhor forma de se trabalhar com esse tipo de caso seja fazendo isso. Assim você pode calcular o tempo trabalhado por dia e depois, no final do projeto, somar tudo. Até mesmo para evitar trabalho excessivo para verificar se tem feriado, sábado e domingo entre a data inicial e final, bem como possíveis variações de horas trabalhadas de um dia para outro.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Luís Augusto
    Luís Augusto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 28/10/2011

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  Luís Augusto 22/1/2012, 02:11

    Muito obrigado pelo interesse em me ajudar Críquio.

    Em resposta a sua pergunta; não;
    O meu formulário se baseia apenas na "Data_Abertura" e Data_Conclusão como o exemplo do Plínio é baseado na "DataHoraInicial" e "TempoTarefa" para retornar o valor de uma expressão na consulta. Veja a consulta: DataHoraFinal: CData(dataFinalTarefa(DataHoraInicial;TempoTarefa))

    Os valores do café e do almoço são declarados em uma variável no Módulo e podem ser editados, veja a função abaixo.

    Function dataFinalTarefa(argDataInicial As Date, argTempo As String) As Variant
    '===========================================================
    'Função que calcula uma data e hora final a partir de uma data
    'e hora inicial somando-se uma quantidade de horas referentes
    'a uma tarefa.
    '
    'Autor: Plinio Mabesi
    'Contato: pliniomabesi@gmail.com
    'Novembro - 2009
    '
    '===========================================================

    Dim horaInicial As Double, horaFinal As Double
    Dim inicioExpediente As Double, fimExpediente As Double
    Dim inicioCafe As Double, fimCafe As Double
    Dim inicioAlmoco As Double, fimAlmoco As Double
    Dim TempoTarefa As Double
    Dim totalExpediente As Double
    Dim totalCafe As Double
    Dim totalAlmoco As Double
    Dim restante As Double
    Dim numeroDias As Integer
    Dim teste As Double
    Dim i As Integer

    'Configuração dos dados iniciais. Para personalizar
    'basta alterar os valores a serem utilizados.
    inicioExpediente = converteHoraDouble("07:00")
    inicioCafe = converteHoraDouble("09:00")
    fimCafe = converteHoraDouble("09:15")
    inicioAlmoco = converteHoraDouble("11:30")
    fimAlmoco = converteHoraDouble("12:30")
    fimExpediente = converteHoraDouble("17:00")

    TempoTarefa = converteHoraDouble(argTempo)

    totalCafe = fimCafe - inicioCafe
    totalAlmoco = fimAlmoco - inicioAlmoco
    totalExpediente = fimExpediente - inicioExpediente - totalAlmoco - totalCafe

    horaInicial = converteHoraDouble(Format(Hour(argDataInicial), "00") & ":" & Format(Minute(argDataInicial), "00"))

    numeroDias = ((horaInicial + TempoTarefa - inicioExpediente) * 10000) \ ((totalExpediente + 0.0001) * 10000)

    If horaInicial < inicioExpediente Or horaInicial > fimExpediente Or (horaInicial >= inicioCafe And horaInicial < fimCafe) Or (horaInicial >= inicioAlmoco And horaInicial < fimAlmoco) Then
    dataFinalTarefa = "Hora inicial inválida!"
    Exit Function
    End If

    dataFinalTarefa = argDataInicial

    For i = 1 To numeroDias

    Do
    dataFinalTarefa = dataFinalTarefa + 1
    Loop Until diaUtil(dataFinalTarefa)

    Next i

    horaFinal = horaInicial + TempoTarefa

    If horaInicial < inicioCafe And horaFinal > inicioCafe Then
    horaFinal = horaFinal + totalCafe
    End If

    If horaInicial < inicioAlmoco And horaFinal > inicioAlmoco Then
    horaFinal = horaFinal + totalAlmoco
    End If

    If horaFinal > fimExpediente Then
    horaFinal = horaFinal - fimExpediente
    horaFinal = Round(horaFinal, 3) - Round(((horaFinal * 1000) \ (totalExpediente * 1000)) * totalExpediente, 3)
    horaFinal = horaFinal + inicioExpediente
    End If

    If horaFinal > inicioCafe And numeroDias > 0 Then

    horaFinal = horaFinal + totalCafe

    If horaFinal > inicioAlmoco Then

    horaFinal = horaFinal + totalAlmoco

    If horaFinal > fimExpediente Then
    restante = horaFinal - fimExpediente
    horaFinal = inicioExpediente + restante
    Do
    dataFinalTarefa = dataFinalTarefa + 1
    Loop Until diaUtil(dataFinalTarefa)
    End If

    End If

    ElseIf horaFinal = inicioExpediente Then
    horaFinal = fimExpediente
    End If

    dataFinalTarefa = CDate(Day(dataFinalTarefa) & "/" & Month(dataFinalTarefa) & "/" & Year(dataFinalTarefa) & _
    " " & Fix(horaFinal) & ":" & Round((horaFinal - Fix(horaFinal)) * 60))

    End Function



    Quanto Módulo que trata os feriados coisa e tal, talvez não tenhamos que mexer.
    A alteração que necessito é apenas inverter o calculo que o Plínio fez. Sua base de calculo (em grosso modo) é a seguinte:

    DataHoraInicial + TempoTarefa = DataHoraFinal com formato (dd/mm/yyyy hh:nn:ss)


    O que necessito é saber o tempo que gastei com determinada tarefa:

    DataHoraFinal - DataHoraInicial = TempoTarefa


    De antemão, peço sinceras descupas pelo tamanho da resposta.

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  criquio 7/3/2012, 20:21

    Estou passando o tópico a Resolvido. Se necessário, reabra por gentileza.
    Caso já tenha resolvido, favor dar um retorno.
    Grato:
    A moderação.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    miguel_team
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 24/11/2012

    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  miguel_team 6/4/2017, 23:18

    Olá,

    Muito obrigado pelo post.Excelente!

    Ao introduzir a data/hora, se superior a data fimExpediente dá erro! Eu precisava que passa-se para o dia útil seguinte iniciando na hora inicioExpediente.

    Podem-me ajudar?

    Obrigado

    Conteúdo patrocinado


    [Resolvido]Calculo de Horas Empty Re: [Resolvido]Calculo de Horas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 20:12