Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/04/2010, 08:47
Avatar de erbuson
erbuson
 
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Sumar filas en un MSFlexgrid

Una posible solución podrían ser estas dos funciones:

Código vb:
Ver original
  1. Public Function hhmmss(ByVal FechaInicio As Date, ByVal FechaFin As Date) As String
  2.   ' Recibe dos fechas y devuelve su diferencia en Horas, Minutos y Segundos en formato hhhhhh:mm:ss
  3.  ' una cadena de 12 dígitos para ser mas facil tomar lo deseado con Mid$
  4.  ' Hor = Mid$(1,6)   ' Min = Mid$(8,2)   ' Seg = Mid$(11,2)
  5.  Dim Calculos As Long, h As Long, m As Long, s As Long
  6.   If Not IsDate(FechaInicio) Or Not IsDate(FechaFin) Then GoTo Aviso
  7.   Calculos = DateDiff("s", FechaInicio, FechaFin)
  8.   s = Calculos Mod 60
  9.   Calculos = (Calculos - s) / 60
  10.   m = Calculos Mod 60
  11.   h = (Calculos - m) / 60
  12.   hhmmss = Right$(Str$(h + 1000000), 6) & ":" & Right$(Str$(m + 100), 2) & ":" & Right$(Str$(s + 100), 2)
  13.   Exit Function
  14. Aviso:
  15.   MsgBox "Se ha recibido un valor de fecha incorrecto"
  16. End Function

Código vb:
Ver original
  1. Public Function Sumahhmmss(ByVal Sumando1 As String, Sumando2 As String) As String
  2.   ' Suma dos valores obtenidos de hhmmss y los devuelve en uno solo
  3.  Dim h As Long, m As Long, s As Long
  4.   h = Val(Mid$(Sumando1, 1, 6)) + Val(Mid$(Sumando2, 1, 6))
  5.   m = Val(Mid$(Sumando1, 8, 2)) + Val(Mid$(Sumando2, 8, 2))
  6.   s = Val(Mid$(Sumando1, 11, 2)) + Val(Mid$(Sumando2, 11, 2))
  7.   If s > 59 Then s = s - 60: m = m + 1
  8.   If m > 59 Then m = m - 60: h = h + 1
  9.   Sumahhmmss = Right$(Str$(h + 1000000), 6) & ":" & Right$(Str$(m + 100), 2) & ":" & Right$(Str$(s + 100), 2)
  10. End Function

Para probarlo es suficiente con insertar un command1 y modificar este código
Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.   ' Para probar toma la fecha actual y la misma con un añadido de horas que será las devueltas
  3.  MsgBox "Horas = " & hhmmss(Now, Now + CDate("12:59:15"))
  4.   ' Las Suma dos veces para probar
  5.  MsgBox "Sumas = " & Sumahhmmss(hhmmss(Now, Now + CDate("12:59:15")), hhmmss(Now, Now + CDate("12:59:15")))
  6. End Sub

Probad y si hay errores avisad o corregid.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...