SOMAR HORA EM ACCESS
Boa noite galera,
Está ocorrendo o seguinte, tenho um banco Access (2013) e preciso realizar a soma de todos os registros de um campo no formato Data-Hora (Hora abreviada). Porém, a soma não está saindo de forma correta.
Gostaria de saber como eu posso fazer para realizar esta soma, como por exemplo: 04:06 + 06:15 = 10:21, já que um simples SUM(horEntrada) não está funcionando.
Obrigado.
Está ocorrendo o seguinte, tenho um banco Access (2013) e preciso realizar a soma de todos os registros de um campo no formato Data-Hora (Hora abreviada). Porém, a soma não está saindo de forma correta.
Gostaria de saber como eu posso fazer para realizar esta soma, como por exemplo: 04:06 + 06:15 = 10:21, já que um simples SUM(horEntrada) não está funcionando.
Obrigado.
Um campo do tipo Data/Hora não é uma representação de um valor, mas sim de um momento, de um instante, de forma que, mesmo quando você formata como hora abreviada, o campo ainda armazena a data e a hora.
Desse modo, a Sum não funcionaria, pois não se trata de uma função para data/hora, como DateAdd, por exemplo.
Se o que você precisa é somar a quantidade de horas e / ou minutos, o tipo de dados adequado é o inteiro, ao invés de um Date/Time.
Desse modo, a Sum não funcionaria, pois não se trata de uma função para data/hora, como DateAdd, por exemplo.
Se o que você precisa é somar a quantidade de horas e / ou minutos, o tipo de dados adequado é o inteiro, ao invés de um Date/Time.
teria que converter para decimal, mais no seu caso vc queria pesquisar entre horas e somar valor total entre elas?
No caso eu não quero saber o valor entre as horas, somente somar mesmo, como por exemplo: 01:10 + 01:55 = 03:05
Tentei fazer a soma transformando o campo em inteiro mas também não consegui. Alguém teria mais alguma ideia?
Tentei fazer a soma transformando o campo em inteiro mas também não consegui. Alguém teria mais alguma ideia?
Qual programa está usando?
Citação::
Qual programa está usando?
VB6 com Access 2013.
transforma em minutos, soma os minutos e depois transforma em horário normal.
Eu tive um problema parecido com o seu, no meu caso eu convertia o tempo em segundos, efetuava a soma e depois voltava ele para o formato hora:minuto:segundo, com isso, era mais fácil de poder calcular e também fazer comparação se um determinado caso tinha estourado ou não o prazo (usando como unidade o tempo e segundos).
Citação::
transforma em minutos, soma os minutos e depois transforma em horário normal.
Citação::
Eu tive um problema parecido com o seu, no meu caso eu convertia o tempo em segundos, efetuava a soma e depois voltava ele para o formato hora:minuto:segundo, com isso, era mais fácil de poder calcular e também fazer comparação se um determinado caso tinha estourado ou não o prazo (usando como unidade o tempo e segundos).
Como eu posso fazer isso?
Este é um exemplo que testei agora e funcionou. O [ô]Option Explicit tem que estar deste jeito isto por causa de variasvéis
não declarada,ai você faz tudo direito
Private Sub Command6_Click()
Set Cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim hours As Long, minutes As Long
Dim totalhours As Long, totalminutes As Long
Dim interval As Variant
interval = #12:00:00 AM#
[ô]With Adodc1
Cnn.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Tabelas2.mdb;Persist Security Info=False[Ô]
rst.Open [Ô]Select * From Horas[Ô], Cnn
While Not rst.EOF
interval = interval + rst![HorSaEn]
rst.MoveNext
Wend
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
Text1.Text = totalhours & [Ô] hours and [Ô] & minutes & [Ô] minutes[Ô]
Text2.Text = totalhours & [Ô]:[Ô] & Format(minutes, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seconds, [Ô]00[Ô])
rst.Close
End Sub
não declarada,ai você faz tudo direito
Private Sub Command6_Click()
Set Cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim hours As Long, minutes As Long
Dim totalhours As Long, totalminutes As Long
Dim interval As Variant
interval = #12:00:00 AM#
[ô]With Adodc1
Cnn.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\Tabelas2.mdb;Persist Security Info=False[Ô]
rst.Open [Ô]Select * From Horas[Ô], Cnn
While Not rst.EOF
interval = interval + rst![HorSaEn]
rst.MoveNext
Wend
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
Text1.Text = totalhours & [Ô] hours and [Ô] & minutes & [Ô] minutes[Ô]
Text2.Text = totalhours & [Ô]:[Ô] & Format(minutes, [Ô]00[Ô]) & [Ô]:[Ô] & Format(seconds, [Ô]00[Ô])
rst.Close
End Sub
Faça seu login para responder