sumar horas en access

17/10/2003 - 17:11 por FORMACION | Informe spam
Por favor necesito sumar horas en access.
Pej: 20:00:25 +21:52:00 + 15:12:00

Preguntas similare

Leer las respuestas

#1 CarCar
17/10/2003 - 18:16 | Informe spam
Hola:

Pues supongo que tendrás que crearte un procedimiento que
lo haga, porque las herramientas que trae Access (a lo
mejor me equivovo) suman fechas y por lo tanto si intentas
sumar las horas que pones te dará el día 2 de enero de
1899...

La siguiente función, por ejemplo, suma 2 horas válidas
que tengan formato fecha:

Function SumaHoras(H1 As Date, H2 As Date) As String
Dim Seg As Integer
Dim Min As Integer
Dim Hor As Integer

Seg = Second(H1) + Second(H2)
Min = Minute(H1) + Minute(H2)
Hor = Hour(H1) + Hour(H2)

If Seg >= 60 Then
Seg = Seg - 60
Min = Min + 1
End If

If Min >= 60 Then
Min = Min - 60
Hor = Hor + 1
End If

SumaHoras = Hor & ":" & Min & ":" & Seg
End Function

Si ejecutas por ejemplo:

?sumahoras("12:55:55","22:56:54")

devuelve en un campo de tipo String (texto) : 35:52:49

Saludos,
CarCar
MVP-Access


Por favor necesito sumar horas en access.
Pej: 20:00:25 +21:52:00 + 15:12:00


.

Respuesta Responder a este mensaje
#2 Eduardo Olaz
17/10/2003 - 19:02 | Informe spam
Aquí te paso el código de una función que tre hace esto.
Ojo, te devuelve una cadena

HorasMinutosSegundos(#20:00:25# + #21:52:00# + #15:12:00#)
te devuelve
66:4:25
_______________________________________________________

Public Function HorasMinutosSegundos(ByVal Fecha As Date) As String
Dim lngHoras As Long
Dim lngMinutos As Long
Dim lngSegundos As Long
If Fecha > 1 Then
lngHoras = (Fecha \ 1) * 24 + DatePart("h", Fecha)
End If
lngHoras = lngHoras + DatePart("h", Fecha)
lngMinutos = DatePart("n", Fecha)
lngSegundos = DatePart("s", Fecha)
HorasMinutosSegundos = CStr(lngHoras) _
& ":" & CStr(lngMinutos) _
& ":" & CStr(lngSegundos)
End Function
_______________________________________________________

Saludos desde la calle Estafeta de Pamplona

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @

"FORMACION" escribió en el mensaje
news:
Por favor necesito sumar horas en access.
Pej: 20:00:25 +21:52:00 + 15:12:00


Respuesta Responder a este mensaje
#3 Emilio
17/10/2003 - 21:01 | Informe spam
Hola
depende de lo que necesites esto puede ser mas sencillo
cdbl(cdate("20:00:25")) +cdbl(cdate("21:52:00")) + cdbl(cdate("15:12:00"))
esto devuelve 2,37806712962963 dias, si lo multiplicas por 24:
57,0736111111111 horas

Saludos a

Emilio


"Eduardo Olaz" <eduardoALGARROBAolaz.net> escribió en el mensaje
news:Ow$
Aquí te paso el código de una función que tre hace esto.
Ojo, te devuelve una cadena

HorasMinutosSegundos(#20:00:25# + #21:52:00# + #15:12:00#)
te devuelve
66:4:25
_______________________________________________________

Public Function HorasMinutosSegundos(ByVal Fecha As Date) As String
Dim lngHoras As Long
Dim lngMinutos As Long
Dim lngSegundos As Long
If Fecha > 1 Then
lngHoras = (Fecha \ 1) * 24 + DatePart("h", Fecha)
End If
lngHoras = lngHoras + DatePart("h", Fecha)
lngMinutos = DatePart("n", Fecha)
lngSegundos = DatePart("s", Fecha)
HorasMinutosSegundos = CStr(lngHoras) _
& ":" & CStr(lngMinutos) _
& ":" & CStr(lngSegundos)
End Function
_______________________________________________________

Saludos desde la calle Estafeta de Pamplona

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @

"FORMACION" escribió en el mensaje
news:
> Por favor necesito sumar horas en access.
> Pej: 20:00:25 +21:52:00 + 15:12:00
>
>


Respuesta Responder a este mensaje
#4 Eduardo Olaz
17/10/2003 - 23:01 | Informe spam
Evidentemente mi código anterior tiene un bug.
Cosas de hacerlo deprisa y sin comprobar. :-(((

Debería devolver 57:04:25 y devuelve y 66:4:25

La línea
lngHoras = (Fecha \ 1) * 24 + DatePart("h", Fecha)
debería ser:
lngHoras = Int(Fecha) * 24

Ahora sí devuelve un valor correcto
El código completo es el siguiente
___________________________________________

Public Function HorasMinutosSegundos( _
ByVal Fecha As Date) _
As String
Dim lngHoras As Long
Dim lngMinutos As Long
Dim lngSegundos As Long
If Fecha > 1 Then
lngHoras = Int(Fecha) * 24
End If
lngHoras = lngHoras + DatePart("h", Fecha)
lngMinutos = DatePart("n", Fecha)
lngSegundos = DatePart("s", Fecha)
HorasMinutosSegundos = CStr(lngHoras) _
& ":" & CStr(lngMinutos) _
& ":" & CStr(lngSegundos)
End Function

___________________________________________

Saludos desde la calle Estafeta de Pamplona

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida