Programación en Visual Foxpro. Horas transcurridas entre entrada y salida de datos informáticos

Saludos! Tengo un sistema en isual fox que captura hora de entrada y hora de salida yo quiero saber cuantas horas han transcurrido en dichas horas y almacenarlas en una base... Estoy iniciándome en esto de la programación en visual ... Gracias

1 respuesta

Respuesta
1
Usa esta función
* Funcion .......: DifHMS
* Creada ........: Julio 16, 2003 By Sukos
* Uso ...........: Obtiene la diferencia en Horas, Minutos y Segundos entre dos Horas
* Llamada .......: DifHMS(,)
* Donde .........: = Expresion de Hora Inicial, en formato "HH:MM:SS"
* = Expresion de Hora Final, en formato "HH:MM:SS"
* Observaciones .: Si la Hora Inicial es mayor que la Hora Final esta funcion supone que el proceso inicio
* antes de la medianoche y concluyo despues de las 0 horas, en este caso realiza la
* operacion tomando en cuenta desde la Hora inicial hasta la medianoche mas lo que resulte
* de la medianoche hasta la hora final.
* Ejemplo .......: DifHMS("00:00:05","00:00:05") -----> Devuelve "00:00:00"
* DifHMS("16:00:10","17:00:15") -----> Devuelve "01:00:05"
* DifHMS("23:59:58","00:00:05") -----> Devuelve "00:00:07"
* Notas .........: Si se usa en un metodo de formularios, solamente convierte a comentario
* la primera linea agregandole un "*" al inicio y la llamas con "Objeto.DifHMS(,)"
* --------------------------------------------------------------------------------------------------------------------------
Func DifHMS(Vl_Hora1, Vl_Hora2)
Local Vl_Resp, Vl_Hh1, Vl_Mm1, Vl_Ss1, Vl_Hh2, Vl_Mm2, Vl_Ss2
Local Vl_HoraCompl1, Vl_HoraCompl2, Vl_DifTiempo, Vl_DifHh, Vl_DifMm, Vl_DifSs
Vl_Hh1=Int(Val(SubStr(Vl_Hora1,1,2)))
Vl_Mm1=Int(Val(SubStr(Vl_Hora1,4,2)))
Vl_Ss1=Int(Val(SubStr(Vl_Hora1,7,2)))
Vl_Hh2=Int(Val(SubStr(Vl_Hora2,1,2)))
Vl_Mm2=Int(Val(SubStr(Vl_Hora2,4,2)))
Vl_Ss2=Int(Val(SubStr(Vl_Hora2,7,2)))
Vl_HoraCompl1=DateTime(100,1,1,Vl_Hh1,Vl_Mm1,Vl_Ss1)
Vl_HoraCompl2=DateTime(100,1,1,Vl_Hh2,Vl_Mm2,Vl_Ss2)
Vl_HoraCero1=DateTime(100,1,1,23,59,59)
Vl_HoraCero2=DateTime(100,1,1,0,0,0)
If Vl_HoraCompl1=Vl_HoraCompl2
Store 0 To Vl_DifHh, Vl_DifMm, Vl_DifSs
Else
If Vl_HoraCompl1
Vl_DifTiempo=Vl_HoraCompl2-Vl_HoraCompl1
Else
Vl_DifTiempo=(Vl_HoraCero1-Vl_HoraCompl1)+(Vl_HoraCompl2-Vl_HoraCero2)+1
EndIf
Vl_DifHh=Int(Vl_DifTiempo/3600) && Calcula las Horas
Vl_DifTiempo=Int(Vl_DifTiempo%3600) && Quita las horas obtenidas
Vl_DifMm=Int(Vl_DifTiempo/60) && Calcula los minutos
Vl_DifSs=Int(Vl_DifTiempo%60) && Calcula los Segundos
EndIf
Vl_Resp=PadL(Vl_DifHh,2,"0")+":"+PadL(Vl_DifMm,2,"0")+":"+PadL(Vl_DifSs,2,"0")
Retu Vl_Resp
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas