Ir para conteúdo
Fórum Script Brasil
  • 0

Como Somar Horas Corridas Além De 24h?


Calesi

Pergunta

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

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 <xxxxxx@xxxxxx.com>

Date: Mar 7, 2007 10:48 PM

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

To: "Cassiano > xxxx <xxxxx@xxxxx.xxx>

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 - xxxx@xxx.com.br

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.

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...