GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    somar horas
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
<MarcosSantos>
postado
pq quando crio uma consulta para somar horas me retorna um valor errado! ex, tenho 10 registro com horario inicial e horário final, criei uma consulta para diminuir ver a diferença de horas e somar quando o registro for o mesmo, o resultado é totalmente diferente
 
Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Pleno

postado Hide Post
Olá!
Não sei se entendi muito bem, mas na tentativa de ajudar vou mandar um exemplo que soma meses a uma data, é só adaptar.

Para adiantar, sugiro utilizar as funções
DateDiff e DateAdd.
Um abraço
Big Grin
 
Postagens: 258 | Localização: Florianópolis SC | Registrado: 31 January 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Pleno

postado Hide Post
OOPSS!!!
Desculpe, estava mandando o exemplo errado, vou mandar o exemplo que faz cálculo entre tempos(acha a diferença entre tempos). OK? Big Grin

por enquanto isto ajuda?

Function CalculaHora(INÍCIO, TÉRMINO) As Double
Dim dblDifHoras As Double
If IsNull(INÍCIO - TÉRMINO) Then Exit Function
dblDifHoras = DateDiff("n", INÍCIO, TÉRMINO)
CalculaHora = dblDifHoras / 60
End Function

Um abraço
 
Postagens: 258 | Localização: Florianópolis SC | Registrado: 31 January 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
<wag.e>
postado
Amigo José,

Essa função não é confiavel para calculo de horas em alguns casos que não me recordo ela vai trazer valores errados a função usada para calcular diferença de horario a FormatInterval.

Public Function FormatInterval(ByVal Interval As Variant, Fmt As String)
On Error Resume Next
Dim Days As Long, Hours As Long, Minutes As Long, Seconds As Long
If VarType(Interval) < 7 And VarType[Interval) > 5 Then Exit Function
Days = Int(Interval)
Interval = Interval - Days
If Interval > #11:59:59 PM# Then
Days = Days + 1
Interval = 0#
End If
Interval = Interval * 24
Hours = Int(Interval)
Interval = Interval - Hours
If Interval > 3599# / 3600# Then
Hours = Hours + 1
Interval = 0#
End If
Interval = Interval * 60
Minutes = Int(Interval)
Interval = Interval - Minutes
If Interval > 59# / 60# Then
Minutes = Minutes + 1
Interval = 0#
End If
Seconds = Int(Interval * 60 + 0.5)
If Seconds = 60 Then
Minutes = Minutes + 1
Seconds = 0
End If
If Minutes > 59 Then
Hours = Hours + 1
Minutes = Minutes - 60
End If
If Hours > 23 Then
Days = Days + 1
Hours = Hours - 24
End If
Select Case Fmt
Case "D H"
FormatInterval = Days & IIf(Days > 1, " Days ", " Day ") & Hours & IIf(Hours > 1, " Hours", " Hour")
Case "D H:MM"
FormatInterval = Days & IIf(Days > 1, " Days ", " Day ") & Hours & ":" & Format(Minutes, "00")
Case "D HH:MM"
FormatInterval = Days & IIf(Days > 1, " Days ", " Day ") & Format(Hours, "00") & ":" & Format(Minutes, "00")
Case "D H:MM:SS"
FormatInterval = Days & IIf(Days > 1, " Days ", " Day ") & Hours & ":" & Format(Minutes, "00") & ":" & Format(Seconds, "00")
Case "D HH:MM:SS"
FormatInterval = Days & IIf(Days > 1, " Days ", " Day ") & Format(Hours, "00") & ":" & Format(Minutes, "00") & ":" & Format(Seconds, "00")
Case "H M"
Hours = Hours + Days * 24
FormatInterval = Hours & IIf(Hours > 1, " Hours ", " Hour ") & Minutes & IIf(Minutes > 1, " Minutes", " Minute")
Case "H:MM"
Hours = Hours + Days * 24
FormatInterval = Hours & ":" & Format(Minutes, "00")
Case "H:MM:SS"
Hours = Hours + Days * 24
FormatInterval = Hours & ":" & Format(Minutes, "00") & ":" & Format(Seconds, "00")
Case "M S"
Minutes = Minutes + (Hours + Days * 24) * 60
FormatInterval = Minutes & IIf(Minutes > 1, " Minutes ", " Minute ") & Seconds & IIf(Seconds > 1, " Seconds", " Second")
Case Else
FormatInterval = Null
End Select
End Function

se alguém tiver duvida envio um exemplo.

grande abraço
 
Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Pleno

postado Hide Post
OK meu caro wag.e
É que você está anos Luz na minha frente, vou passar a usar a tua função.
Um abraço
Obrigado
Se puder mandar o exemplo agradeço
 
Postagens: 258 | Localização: Florianópolis SC | Registrado: 31 January 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
<wag.e>
postado
Amigos,

já enviei o exemplo para os dois, grande abraço......
 
Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

postado Hide Post
Wag.e , estaou com problemas de calculos de horas também, poderia fazer a gentileza de me mandar o BD de exemplo para meu e-mail
juniormeireles@bol.com.br. desde já, agradeço.
 
Postagens: 50 | Registrado: 04 July 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Pleno

postado Hide Post
quote:
Wag.e

Wag.e, voce poderia enviar este exemplo para mim tambem?
Desde ja agradeço sua atenção.
JSantos
js.sj@terra.com.br
 
Postagens: 153 | Registrado: 27 September 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

postado Hide Post
Eu tive muita dificuldade deste assunto também e encontrei a seguinte solução:

Adicionei meis esse campo na consulta.

=Formato(Int(Soma(Formato([seu_campo];"hh")))+Int((Soma(Formato([seu_campo];"nn")))/60);"00") & ":" & Formato((Soma(Formato([seu_campo];"nn")))-Int((Soma(Formato([seu_campo];"nn")))/60)*60;"00")


Augusto Albuquerque
Windows XP
Office 2000
MSN: dhelp@hotmail.com
 
Postagens: 116 | Localização: São Paulo - Capital | Registrado: 11 September 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post
Simplificando a vida Feliz

O Access, armazena o tipo de dado Data/Hora como um número de precisão dupla (Double), de ponto flutuante (de até 15 casas decimais). O valor à esquerda do decimal representa a data e o valor à direita representa a hora como uma fração de um dia (24 horas). Por exemplo:

ം 1 representa a data 01/01/1900 00:00:00 (os números negativos são anteriores a esta data)
ം 38620,9999884259 representa a data 25/09/2005 23:59:59
ം 08:30 = 0,354166666666667
ം 11:45 = 0,489583333333333
ം 0,489583333333333 - 0,354166666666667 = 0,135416666666666 = 03:15

Para visualizar corretamente a totalização das horas, use na consulta a seguinte expressão:

Exp1: Int(Soma([HoraFinal]-[HoraInicial])*24 ) & “:” & Formato(Soma([HoraFinal]-[HoraInicial]);"nn")

Abraços cordiais.


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1579 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
 Tópico Anterior | Próximo Tópico powered by eve community  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    somar horas

©