FoxPro/Visual FoxPro - Solo time()

   
Vista:

Solo time()

Publicado por Novice (15 intervenciones) el 04/04/2012 19:50:48
He leido varios articulos sobre esto pero cada vez me enredo mas, podrian aclararme como guardar solo la hora, y hacer operaciones...
Lo q tengo es un campo con formato y inputmask de 99:99 y value=time(), la guardo en un campo tipo caracter de 8 pero no puedo hacer las operaciones, podrian ayudarme... como seguir de aki en adelante o como hacerlo de forma correcta, porfavor, ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Angel

Solo time()

Publicado por Angel (11 intervenciones) el 05/04/2012 08:39:00
para realizar operaciones en ese tipo de dato, tienes que reducirlo todo a segundos
y hacer las sumas y restas siempre en segundos, una vez calculado el resultado lo regresas a horas, minutos y segundos
ejemplo:
sea la hora 05:30:15
y deseo sumarle 40 minutos y saber cual seria el resultado
entonces transformo lo primero a segundos asi:
5*3600+30*60+15=19815 segundos
luego 40 minutos en segundos son: 40*60=2400 segundos
ahora sumamos 19815+2400=22215 segundos
y ahora la operación inversa:
22215/60=6.170833333333333, quitamos el entero, serian 6 horas
0.170833333333333*60=10.25, quitamos el entero, serian 10 minutos
0.25*60=15, serian 15 segundos
quedando: 06:10:15, osea 06:10:15 es lo mismo que 22215 segundos
verficamos:
6*3600+10*60+15=22215 segundos
esto quiere decir que como dijimos al principio:
05:30:15 + 40 minutos es igual a 06:10:15
y efectivamente, a simple vista nos damos cuenta que es correcto
***************************************************************************
no se como estes trabajando actualmente pero hoy por hoy existe el tipo de dato datetime, el cual nos ahorra todo el proceso anterior, pudiendo sumar y restar sin mayor trabajo y obtener los datos deseados en todo momento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo time()

Publicado por Novice (15 intervenciones) el 06/04/2012 23:47:55
Hola, gracias por la respuesta, esta muy bien; lo del datetime noc como usarlo, xq solo quiero guardar la hora, sin la fecha, el campo de texto tiene el fomrato e inputmask de 99:99:99 para mejor manejo del usuario, pero al guardar me sale error... me podiras explicar un poco mejor desd el principio para hacerlo??? jejeje porfavor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Solo time()

Publicado por Angel (11 intervenciones) el 08/04/2012 09:48:22
supongo que la tabla que manejas tiene un campo caracter de 8 digitos
el cual esta destinado a guardar datos como por ejemplo:
"04:30:20"
"11:45:00"
"15:24:50"
entiendo que en el formulario vinculas el campo a un textbox,
al cual estas dando el formato 99:99:99 en la propiedad Inputmaxk
luego utilizas la propiedad value para asignar la hora actual mediante TIME()
en modo diseño debes escribir en value lo siguiente: =TIME()
y si es por código, en el evento Init del control: This.Value=TIME()
despues de haber hecho las operaciones de suma y/o resta como explique anteriormente,
vas a tener tres valores numericos que son la hora, los minutos y los segundos
vamos a suponer que las variables son nHoras, nMinutos y nSegundos,
entonces solo tienes que transformarlos, concatenarlos y darle la forma: hh:mm:ss para finalmente asignarle el valor resultante al control textbox,
por ejemplo asi:
Thisform.txtTuControl.Value=TRANSFORM(nHoras,"@L 99")+":"+TRANSFORM(nMinutos,"@L 99")+TRANSFORM(nSegundos,"@L 99")
si el control que usas es texto, asegurate siempre de guardar texto en el mismo tambien,
no tiene porque haber error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo time()

Publicado por Novice (15 intervenciones) el 09/04/2012 17:12:47
Ok, gracias, lo voy a probar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo time()

Publicado por Novice (15 intervenciones) el 09/04/2012 20:13:05
Hola, mira t muestro lo q estoy haciendo, guardo y todo normal en campos entrada y salida de 5 de longitud, tipo caracter, en formato 99:99 para solo poner HH:MM, y en el valid del segundo campo hago esto para extraer las horas y minutos y convertirlo para hacer la operacion q me dijist pero no me sale :s ...

VAL(SUBSTR(thisform.text2.value,1,2))*3600 + VAL(SUBSTR(thisform.text2.value,4,2))*60 = thisform.texto4.Value
VAL(SUBSTR(thisform.text3.value,1,2))*3600 + VAL(SUBSTR(thisform.text3.value,4,2))*60 = thisform.texto5.Value

thisform.texto4.value - thisform.texto5.value

como ves nose como manejarlo, el problema esta enq nose como extraer y dond guardar o como manejar lo extraido, se q el codigo esta mal, pero soy nuevo en esto... sigue ayudando porfa...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo time()

Publicado por Novice (15 intervenciones) el 11/04/2012 16:39:41
Gracias amigo, me estaba complicando la existencia con esta pequeñes jejejejeje, todo perfect, Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo time()

Publicado por jejejej (1 intervención) el 10/04/2012 20:24:57
22215/60=6.170833333333333????? jajajaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Solo time()

Publicado por Angel (11 intervenciones) el 11/04/2012 08:27:50
Fé de erratas:
dice:
22215/60=6.170833333333333
debe decir:
22215/3600=6.170833333333333
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo time()

Publicado por Novice (15 intervenciones) el 11/04/2012 16:43:47
jajajaja si todos nos equivocamos, yo mass, por eso pude mejorarlo, creo jejejeje, gracias, muchas gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar