• 0
Sign in to follow this  
Calesi

Como Somar Horas Corridas Além De 24h?

Question

Olá,

O Excell permite formatar um campo Data/Hora para somar além de 24 horas (você pode somar 24 + 24 e obter 48 horas).

Como fazer o mesmo no Access (versão 2003)?

O objetivo é criar formulários e relatórios para somar horas de trabalho aplicadas a um job qualquer.

Por exemplo: no campo Hora que criei, posso inserir, digamos, uma estimativa de 5 horas/dia para um projeto. Num campo para totalizar isso ao longo de uma semana tenho os seguintes resultados:

5 horas x 4 dias = 20horas (20:00)

mas:

5 horas x 5 dias = 1 hora (01:00), pois o Access entende isso como 1 dia + 1 hora e retorna apenas a porção hora da coisa.

Já tentei formatar como número e usar uma máscara, mas o resultado é o mesmo... Tentei usar o Format mas também não deu certo (na verdade, dá um pauzinho...).

Para um relatório de horas, o que interessa é o total aplicado em horas corridas, ou seja, 25 horas, no exemplo acima.

Alguém sabe como fazer isso no Ac 2003?

ou

Alguém tem a versão mais nova pra informar se essa deficiência já foi sanada?

Obrigado,

Cassiano

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

.... criar formulários e relatórios para somar horas de trabalho aplicadas a um job qualquer.... o que interessa é o total aplicado em horas corridas...

Olá,

Sobre esse problema, encontrei dois ou três caminhos, mas não consigo implementá-los porque envolvem programação no Access Basic (módulos) e isso é algo que nunca fiz. Tentei, mas deu um ou outro pau... Por isso, procuro alguém que possa me ajudar via chat (podemos fechar um custo/hora pra isso, imagino duas ou três sessões de 1 hora...).

O suporte da Microsoft me mandou o seguinte artigo:

Problema

*********

Cliente informa que não consegue somar horas acumuladas, só soma até 24 horas e quer saber se tem como fazer isso, pois precisa criar um relatório de horas e não está conseguindo somar mais de 24 hrs.

=====================================

Como dica enviei doc. http://support.microsoft.com/kb/210604/pt-br

Informei que caso será encerrado, pois como envolve programação foge do escopo do suporte gratuito.

=====================================

Em paralelo, acabei chegando no site do Macoratti, que me mandou a dica abaixo (eliminei os endereços de e-mail, ok?):

---------- Forwarded message ----------

From: Macoratti <[email protected]>

Date: Mar 7, 2007 10:48 PM

Subject: Re: VB interage com Access para somar horas acumuladas?

To: "Cassiano > xxxx <[email protected]>

Olá,

Veja abaixo se te ajuda:

Você precisa converter as horas em formato decimal.

Vamos supor que você tenha duas caixas de texto no seu

formulário, txtHoraInicial e txtHoraFinal, e na

terceira caixa de texto txtHorasTrabalhadas, com a

seguinte fórmula

=HoraDecimal(txtHoraFinal)-HoraDecimal(txtInicial)

onde HoraDecimal é a seguinte função:

Public Function HoraDecimal(dHora As Variant)

'Converte data/hora para formato decimal

'Autor: Carlos Moura - [email protected]

Dim lngDia As Long, intervalo As Double

Dim H1 As Long, H2 As Double, dblHora As Double

If VarType(dHora) < 7 And VarType(dHora) > 5 Then Exit

Function

intervalo = CDbl(dHora)

lngDia = Int(intervalo)

H1 = lngDia * 24

dblHora = (intervalo - lngDia)

H2 = dblHora * 24

HoraDecimal = Format(H1 + H2, "#0.00")

End Function

Fonte: www.espacoaccess.com

------------------------------------------------------------

Segui as orientações, mas ao tentar visualizar o resultado num formulário, recebo isso: #Nome?

Se coloco a função numa consulta, recebo a informação que a "Função [NomeDaFunção] está indefinida na expressão."

Ou seja, parecem probleminhas simples de saber programar ou chamar os módulos de forma correta.

Alguma idéia?

C.

Share this post


Link to post
Share on other sites
  • 0

Na caixa de texto onde você informa a ultima parte do dado necessário para realizar o calculo, você tenha feito na propriedade "Após atualizar" dessa caixa de texto um codigo assim:

me.seuCampoResultado.value=HoraDecimal(xxxxxxxx)

Observe que como o resultado será retornado em decimal, a caixa de texto resultado deve ter o formato número.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this