Autor |
Mensaje |
Miembro
Asiduo
 
|
#1 Publicado: 13 Ene 2015 07:10
Hola a todos, tengo un problema cuando quiero calcular tiempos, tengo hora de entrada y hora de salida en formato hora, hago el calculo hora salida - hora entrada en formato hora, el problema es cuando la hora de salida es despues de 23:59:59, calculo la hora al introducirla con Case( Self=Time(24;0;0); Time(24;0;1); Self=Time(0;0;0); Time(0;0;1); Self=Time(0;0;0); Time(0;0;1); Self > Time(24;0;0); Self - Time(24;0;0) + 1;
Self)
pero no calcula bien el tiempo, me podeis ayudar, gracias. Alguna formula para controlar la hora a partir de las doce.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Nacho
windows
|
Miembro
Constante
  
|
#2 Publicado: 13 Ene 2015 09:16 - Editado por: Tarantelo
Hola,
Para poder realizar cálculos de horas que puedan rebasar las 24 horas, es mejor utilizar TIMESTAMP.
Guardas la hora de inicio en un campo FECHA y HORA, asignándole el Get ( CurrentTimeStamp ) y cuando quieras calcular el tiempo transcurrido simplemente tienes que restar Get ( CurrentTimeStamp ) - el campo donde guardaste el anterior TimeStamp. Eso te devuelve el tiempo en formato horas:minutos:segundos, ten en cuenta que las horas pueden ser miles.
Un saludo
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 Pro (64 Bits), FM Pro 15 Adv
|
Miembro
Asiduo
 
|
#3 Publicado: 14 Ene 2015 06:12
Gracias por responder, voy a probar de esta forma, lo que pasa es que del año 2014 ya tengo 9000registros para procesar y ya tenían asignada su hora inicio y hora fin, pero voy a hacer una formula para poder llegar al cálculo que me hace falta, gracias.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Nacho
windows
|
Miembro
Constante
  
|
#4 Publicado: 14 Ene 2015 09:15
Si también tienes una fecha de inicio, puedes crear el campo TIMESTAMP con Timestamp ( fecha ; hora )
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 Pro (64 Bits), FM Pro 15 Adv
|
Miembro
Asiduo
 
|
#5 Publicado: 15 Ene 2015 06:15
Gracias, he adaptado una función personalizada de briandunning.com y lo calcula de maravilla, ya he adaptado todos los registros, hay funciones muy buenas y mediante el uso de let y case las adaptas a tus cálculos
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Nacho
windows
|
Miembro
Constante
  
|
#6 Publicado: 15 Ene 2015 09:01
Me alegro de que lo solucionases, creo que sería interesante que las personas que piden ayuda en un foro y que no consigan solucionar el problema con la ayuda prestada, expongan la solución que encontraron. Eso permitiría que futuros usuarios que tengan el mismo problema, puedan solucionarlo. Pones que utilizaste una función personalizada y dices de donde la sacaste, pero podrías poner la función que utilizaste para evitar tener que buscar 1611 funciones disponibles a fecha de hoy.
Es una recomendación.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 Pro (64 Bits), FM Pro 15 Adv
|
Miembro
Asiduo
 
|
#7 Publicado: 16 Ene 2015 06:13
Es la función ElapsedTime, tomo el valor de la hora de inicio y hora final de la operación y lo paso a otro campo de cálculo para convertirlo a timestamp, así después con esta función trato estos nuevos campos. Este es el código de la función en sí
// Input must be TimeStamp fields not strings. Format is a string
Let ( [
ElapsedSeconds = TStampEnd - TStampBegin ; Days = Int ( ElapsedSeconds / 86400 ) ; Hours = Int ( ( ElapsedSeconds - ( Days*86400 ) ) / 3600 ) ; Minutes = Int ( ( ElapsedSeconds - ( ( Days * 86400 ) + ( Hours * 3600 ) ) ) / 60 ); Seconds = Int ( ElapsedSeconds - ( ( Days * 86400 ) + ( Hours * 3600 ) + (Minutes * 60 ) ) ) ; ElapsedDays = ElapsedSeconds / 86400 ; ElapsedHours = ElapsedSeconds / 3600 ; ElapsedMinutes = ElapsedSeconds / 60
] ;
Case (
Format = "Seconds" ; // Result is in number or time format ElapsedSeconds ;
Format = "Minutes" ; // Result is a string ElapsedMinutes & " minutos" ;
Format = "Hours" ; // Result is a string ElapsedHours & " horas" ;
Format = "Days" ; // Result is a string ElapsedDays & " días" ;
Format = "String" ; // Result is a string If ( Days = 1 ; Days & " día, " ; Days & " dias, " ) & If ( Hours = 1 ; Hours & " hora, " ; Hours & " horas, " ) & If ( Minutes = 1 ; Minutes & " minuto, " ; Minutes & " minutos, " ) & If ( Seconds = 1 ; Seconds & " segundo, " ; Seconds & " segundos." )
) )
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Nacho
windows
|
Miembro
Asiduo
 
|
#8 Publicado: 16 Ene 2015 06:16
Una captura de los campos
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Nacho
windows
|
Miembro
Asiduo
 
|
#9 Publicado: 16 Ene 2015 06:21
subo la tabla
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Nacho
windows
|
Miembro
Constante
  
|
#10 Publicado: 17 Ene 2015 10:39
Gracias por el aporte
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 Pro (64 Bits), FM Pro 15 Adv
|