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

3 participantes

    Cálculo entre horas

    avatar
    thiago_mariani
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 20/06/2013

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  thiago_mariani 9/7/2013, 12:20

    Boa tarde
    Utilizei o seguinte código: =Int(DifData("n";[HORA_INICIO];[HORA_FINAL])/60) & ":" & DifData("n";[HORA_INICIO];[HORA_FINAL])-Int(DifData("n";[HORA_INICIO];[HORA_FINAL])/60)

    a principio em algumas situações funcionou sem problemas. Exemplo:

    das 8:15 as 9:60 - me retornou 00:55
    porem das 11:00 ao 12 - me retornou 1:59

    o que pode estar errado?

    Depois em outro campo preciso dividir esse tempo por uma quantidade. EX.:

    qtd = 10
    hi=08:00
    hf=10:00
    diferenca=02:00

    divisao = 12 min
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  good guy 9/7/2013, 12:44

    Olá Thiago,

    Tente com este exemplo, fazendo as alterações necessárias:

    Desde já há algum tempo vinha me debatendo com este tema. Como somar horas de uma forma simples, isto é, criar uma função que somasse as horas trabalhadas por um empregado? Descobri que poderia utilizar a função DSum para somar as horas pelo menos até completar 24 horas.


    TotalHoras = Format(DSum("DIFERENCA", "tblFuncHoraNormal"), "hh:mm:ss") 'TotalHoras é o nome de uma caixa de texto que receberá o valor total do somatório das horas. DIFERENCA é o nome de uma caixa de texto que receberá a quantidade de horas trabalhadas durante uma semana, digamos, desde que não ultrapasse 24 horas.

    Vou tentar elucidar com o seguinte exemplo. Suponhamos que você contrate um eletricista para trabalhar pelo menos 2(duas) horas por dia ao longo de uma semana em sua casa. Crie uma tabela com os seguintes campos IDNOME(NumeraçãoAutomática), NOME(Texto), DATA(Data/Hora), HORAINICIO(Data/Hora), HORAFIM(Data/Hora) e DIFERENCA(Data/Hora).
    Crie agora um formulário tabular e no evento Ao Entrar do campo DIFERENCA, coloque o seguinte código:


    Private Sub DIFERENCA_Enter()
    'Código de Eduardo Machado (Good Guy)
    On Error Resume Next
    Dim sIntervalo As Date  'Intervalo da hora do almoço

    If HORAFINAL - HORAINICIAL >= #8:00:00 AM# Then
    sIntervalo = "01:00:00"
    DIFERENCA = (HORAFINAL - HORAINICIAL) - sIntervalo

    ElseIf (HORAFINAL - HORAINICIAL) >= #6:00:00 AM# And (HORAFINAL - HORAINICIAL) < #8:00:00 AM# Then
    sIntervalo = "00:15:00" 'Intervalo do café da manhã
    DIFERENCA = (HORAFINAL - HORAINICIAL) - sIntervalo

    ElseIf HORAINICIAL >= #10:00:00 AM# And HORAINICIAL <= #11:59:59 AM# And HORAFINAL = #1:00:00 PM# Then
    sIntervalo = "00:00:00"
    DIFERENCA = (HORAFINAL - HORAINICIAL) - sIntervalo

    ElseIf HORAINICIAL >= #6:00:00 PM# And HORAINICIAL <= #11:59:59 PM# And HORAFINAL <= #6:00:00 AM# Then
    sIntervalo = "01:00:00" 'Intervalo da hora de jantar
    DIFERENCA = (HORAFINAL - HORAINICIAL) - sIntervalo

    Else
    DIFERENCA = (HORAFINAL - HORAINICIAL)
    End If
    End Sub

    No Rodapé do formulário, coloque uma caixa de texto com o nome TotalHoras

    Bem, a partir de agora é opcional, ou você cria um botão para o código para calcular a soma ou coloque o código no evento Ao Sair do campo DIFERENCA.

    Private Sub DIFERENCA_Exit(Cancel As Integer)
    TotalHoras = Format(DSum("DIFERENCA", "tblFuncHoraNormal"), "hh:mm:ss")
    End Sub

    Fonte: http://www.goodguyaccessvba.com.br/dicas_vba_ii_17.html

    Para realizar o cálculo dividindo o resultado da diferença de horas pela quantidade:

    Exemplo:

    a-) Horainicial :  8:00 horas    HoraFinal :  08:12 horas

    total = Format(([valor2] - [valor1]) * 24, "#0.0")

    total = 0,2

    Divida este valor pela quantidade. Não esqueça de definir o tipo de valor das caixas de texto para hora normal ou hora abrevidada na propriedade das caixas de texto.







    Última edição por good guy em 9/7/2013, 13:31, editado 5 vez(es)
    avatar
    thiago_mariani
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 20/06/2013

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  thiago_mariani 9/7/2013, 12:53

    Boa tarde!
    COm a ajuda consegui realizar os calculos corretamente porem preciso que este valor de hora seja dividido por um valor de outro campo.

    digamos que eu tenha 5 peças e gastei 30 min para fazer as 5. Tenho que dividir os 30 min por 5 para obter o tempo de cada peça.

    Como fazer?
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  good guy 9/7/2013, 13:28

    Olá Thiago,

    Veja minha resposta acima, pois acrescentei o cálculo que você deseja no final.
    avatar
    thiago_mariani
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 20/06/2013

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  thiago_mariani 9/7/2013, 13:40

    Quero que o valor da divisao ja apareça assim que abrir o relatorio.
    Este campo: divisao foi criado somete p/ o relatorio e nao esta em nenhuma tabela.

    Onde coloco este codigo:

    Private Sub DIFERENCA_Exit(Cancel As Integer)
    TotalHoras = Format(DSum("DIFERENCA", "tblFuncHoraNormal"), "hh:mm:ss")
    End Sub

    Obg
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  good guy 9/7/2013, 14:01

    Olá Thiago,

    Tente no evento Form_Load.
    avatar
    thiago_mariani
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 20/06/2013

    Cálculo entre horas Empty Re: Cálculo entre horas

    Mensagem  thiago_mariani 9/7/2013, 19:19

    Como este calculo esta sendo realizado em um relatório, desenho obter no final a soma de todas esses tempos calculados. Exemplo
    00:10
    00:10
    00:15
    00:15

    total = 00:50

    como obter?
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Cálculo entre horas Empty Re: Cálculo entre horas

    Mensagem  Avelino Sampaio 10/7/2013, 03:17

    Olá!

    Experimente:

    código: =Int(DifData("n";[HORA_INICIO];[HORA_FINAL])/60) & ":" & (DifData("n";[HORA_INICIO];[HORA_FINAL]) mod 60)

    Campo que receberá a divisão por dez:

    Resultado: =Format([código]/10;"hh:nn:ss")

    No relatório, se a soma nunca ultrapassar as 24 horas , pode usar a função soma() direto.  Exemplo:

    =Format(Soma([NomeDoCampoTempo]);"Hora abreviada")

    se o campo for calculado, use o calculo direto na função soma()

    =Format(Soma([código]/10);"Hora abreviada")

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    thiago_mariani
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 20/06/2013

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  thiago_mariani 10/7/2013, 06:23

    Bom dia Avelino.
    Em algumas situações a soma irá exceder as 24:00h e em outras não.

    Como proceder?

    Avelino, segue em anexo o banco de dados. Terias como dar uma olhada nos relatórios?

    Obrigado
    Anexos
    Cálculo entre horas Attachmentapontamento.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (346 Kb) Baixado 71 vez(es)


    Última edição por thiago_mariani em 10/7/2013, 06:51, editado 1 vez(es)
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Cálculo entre horas Empty Re: Cálculo entre horas

    Mensagem  Avelino Sampaio 10/7/2013, 06:51

    Já te passei, em outro fórum, o meu artigo que mostra funções que permite o trabalho acime de 24 horas.

    http://www.usandoaccess.com.br/tutoriais/tuto49.asp?id=1#inicio

    No exemplo fornecido tem um relatório exemplo que realiza esta soma. Estude o código utilizado.

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    thiago_mariani
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 20/06/2013

    Cálculo entre horas Empty Cálculo entre horas

    Mensagem  thiago_mariani 10/7/2013, 08:24

    Avelino.
    Na minha resposta anterior esta o banco de dados que quero fazer.
    Terias como verificá-lo para min?

    Obg.

      Data/hora atual: 10/8/2022, 13:06