Tiempos en Ejecución
Como haría para controlar tiempos, necesito saber como haría desde que ejecuto hasta que termine de ingresar los datos en un formulario por ejemplo que me haya demorado 45 segundos en procesar la información. Me los muestre en un datawindow o en un campo tiempo de mi dw.
1 Respuesta
Respuesta de william4425 Mendez
1
1
william4425 Mendez, 6 años con powerbuilder, hast la versión 12 en clásico
En shred varibales declaras lo sgt...
int ii_tiempo
en el evento open de tu window pones los sgt..
ii_tiempo = 0
timer(1)
en el evento timer de tu window pones esto...
ii_tiempo ++
....x ejemplo...en tu boton guardar...al final d tu scrip pones sto...
dw_1.setitem(dw_1.getrow() , 'tiempo' , ii_tiempo)
int ii_tiempo
en el evento open de tu window pones los sgt..
ii_tiempo = 0
timer(1)
en el evento timer de tu window pones esto...
ii_tiempo ++
....x ejemplo...en tu boton guardar...al final d tu scrip pones sto...
dw_1.setitem(dw_1.getrow() , 'tiempo' , ii_tiempo)
Hola he probado lo que me dices realizo todos los pasos, y al final grabo pero en mi tabla donde tengo el campo tiempo no me genera ningún tiempo. Lo que yo necesito es el tiempo que tardo al ingresar datos a un formulario al final lo grabo, por ejemplo que haya tardado 50 seg en procesar la información al final me lo grabe en el campo de mi tabla. El tipo de dato del campo tiempo tiene que ser necesariamente datetime. O que otra solución ud me daría por que no sale, gracias.
El datetime es un tipo de dato fecha y/o hora... no puedes almacenar algún tiempo... es por eso que debes de usar uno de tipo numérico... en todo caso agrega una columna más... cosa que tienes tiempo de inicio y tiempo final... ahí almacenas la hora en que empezó y la hora en que termino de guardar.
Ahora... veo lo q t envie y hubo un error d mi part... dw_1.setitem(dw_1. Getrow(),'tiempo', ii_tiempo).. eso va antes d tu scrip d guardar.
Ahora... veo lo q t envie y hubo un error d mi part... dw_1.setitem(dw_1. Getrow(),'tiempo', ii_tiempo).. eso va antes d tu scrip d guardar.
Hola con los pasos que me dices funciona pero solo se almacena el tiempo en la primera fila no en las subsiguientes. El tiempo sea más o menos de acuerdo a lo que se tarda en
Ingresar los datos enc el formulario solo se graba en el primer registro que se debe a eso gracias por tu ayuda El tiempo que se almacena se acumula por ejemplo 1 minuto es 100, la pregunta seria si se puede hacer en seg, minutos, horas por ejemplo que se almacene 1:20:32seg que se tardó en procesar
Ingresar los datos enc el formulario solo se graba en el primer registro que se debe a eso gracias por tu ayuda El tiempo que se almacena se acumula por ejemplo 1 minuto es 100, la pregunta seria si se puede hacer en seg, minutos, horas por ejemplo que se almacene 1:20:32seg que se tardó en procesar
Ok... se acumula porque supuse que al momento de gauardar.. la ventana se cerraba... para que se inicia de 0 con un nuevo reg al final de guardar pones esto... ii_tiempo = 0
Con respecto a que se muestre en "formato"... me parece una exageración ponerlo en horas... pero bueno... para que muestres de esa manera... la columna tiempo tendría que star en string.. para que puedas mostrar 01h 08min 27seg...
para eso t creas una funcion en tu window
wf_formatotiempo(integer ai_tiempo) return string
en esa funcion pones los sgt....
int li_hor , li_min , li_seg
string ls_hor , ls_min , ls_seg
li_hor = ai_tiempo / 3600
li_min = mod(ai_tiempo , 3600) / 60
li_seg = mod(ai_tiempo, 60)
ls_hor = replace('00' , 3 - len(string(li_hor)), 3 , string(li_hor))
ls_min = replace('00' , 3 - len(string(li_min)), 3 , string(li_min))
ls_seg = replace('00' , 3 - len(string(li_seg)), 3 , string(li_seg))
return ls_hor + 'h ' + ls_min + 'min ' + ls_seg +'seg'
..x ultimo....la fila q pusiste dw_1.setitem(dw_1.getrow() , 'tiempo' , ii_tiempo)
lo cambias x esa...dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo))
... recuerda que el setitem tiene que ir antes de guardar... y esta linea... ii_tiempo= 0 ... lo pones después de guardar.
pueds ponerlo despues d algun mensaje informando q se guardo correctamente.
pdta...
si quieres q solo se muestren min y seg...reemplaza lo sgt...
li_hor = ai_tiempo / 3600
li_min = mod(ai_tiempo , 3600) / 60
li_seg = mod(ai_tiempo, 60)
...por esto...
li_min = ai_tiempo / 60
li_seg = mod(ai_tiempo, 60)
... y quitas todo lo que tenga que ver con HORA
Con respecto a que se muestre en "formato"... me parece una exageración ponerlo en horas... pero bueno... para que muestres de esa manera... la columna tiempo tendría que star en string.. para que puedas mostrar 01h 08min 27seg...
para eso t creas una funcion en tu window
wf_formatotiempo(integer ai_tiempo) return string
en esa funcion pones los sgt....
int li_hor , li_min , li_seg
string ls_hor , ls_min , ls_seg
li_hor = ai_tiempo / 3600
li_min = mod(ai_tiempo , 3600) / 60
li_seg = mod(ai_tiempo, 60)
ls_hor = replace('00' , 3 - len(string(li_hor)), 3 , string(li_hor))
ls_min = replace('00' , 3 - len(string(li_min)), 3 , string(li_min))
ls_seg = replace('00' , 3 - len(string(li_seg)), 3 , string(li_seg))
return ls_hor + 'h ' + ls_min + 'min ' + ls_seg +'seg'
..x ultimo....la fila q pusiste dw_1.setitem(dw_1.getrow() , 'tiempo' , ii_tiempo)
lo cambias x esa...dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo))
... recuerda que el setitem tiene que ir antes de guardar... y esta linea... ii_tiempo= 0 ... lo pones después de guardar.
pueds ponerlo despues d algun mensaje informando q se guardo correctamente.
pdta...
si quieres q solo se muestren min y seg...reemplaza lo sgt...
li_hor = ai_tiempo / 3600
li_min = mod(ai_tiempo , 3600) / 60
li_seg = mod(ai_tiempo, 60)
...por esto...
li_min = ai_tiempo / 60
li_seg = mod(ai_tiempo, 60)
... y quitas todo lo que tenga que ver con HORA
Hola el tipo de dato tiempo sigue siendo numero o lo cambio.
Hago todos los pasos pero me sigue acumulando por ejemplo 458 no en minutos y segundos. Cree la función y adicione el código que me mandaste pero no hay resultado que puedo estar haciendo mal. Sigo añadiendo estos pasos o los ovio.
shred varibales
int ii_tiempo
evento open
ii_tiempo = 0
timer(1)
evento timer
ii_tiempo ++
En la funcion puse esto tal como me indicaste:
Access Return Type Function Name
public string wf_formatotiempo
Pass by Argument Type Argument Name
value integer ai_tiempo
Throws
int li_min , li_seg
string ls_min , ls_seg
li_min = ai_tiempo / 60
li_seg = mod(ai_tiempo, 60)
////ls_hor = replace('00' , 3 - len(string(li_hor)), 3 , string(li_hor))
ls_min = replace('00' , 3 - len(string(li_min)), 3 , string(li_min))
ls_seg = replace('00' , 3 - len(string(li_seg)), 3 , string(li_seg))
return ls_min + 'min ' + ls_seg +'seg'
Esto puse antes del codigo para guardar: dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo)) y esto despues del codigo para guardar ii_tiempo= 0
He probado con min y seg, A ver si he obviado algo me lo haces llegar, gracias por tu ayuda.
Hago todos los pasos pero me sigue acumulando por ejemplo 458 no en minutos y segundos. Cree la función y adicione el código que me mandaste pero no hay resultado que puedo estar haciendo mal. Sigo añadiendo estos pasos o los ovio.
shred varibales
int ii_tiempo
evento open
ii_tiempo = 0
timer(1)
evento timer
ii_tiempo ++
En la funcion puse esto tal como me indicaste:
Access Return Type Function Name
public string wf_formatotiempo
Pass by Argument Type Argument Name
value integer ai_tiempo
Throws
int li_min , li_seg
string ls_min , ls_seg
li_min = ai_tiempo / 60
li_seg = mod(ai_tiempo, 60)
////ls_hor = replace('00' , 3 - len(string(li_hor)), 3 , string(li_hor))
ls_min = replace('00' , 3 - len(string(li_min)), 3 , string(li_min))
ls_seg = replace('00' , 3 - len(string(li_seg)), 3 , string(li_seg))
return ls_min + 'min ' + ls_seg +'seg'
Esto puse antes del codigo para guardar: dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo)) y esto despues del codigo para guardar ii_tiempo= 0
He probado con min y seg, A ver si he obviado algo me lo haces llegar, gracias por tu ayuda.
Cambia el tipo de dato a cadena... esto tendría que ir en tu botón guardar...
dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo))
if dw_1.update() = 1 then
commit;
//pueds ponerle un messagebox en esta linea
ii_tiempo = 0
//limpias los campos
else
rollback;
end if
... lo que has hecho esta bien... no entiendo porque no t sale... bueno... si continua así... no podre hacer más por ti... yo lo he hecho así y todo me sale ok... suerte
dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo))
if dw_1.update() = 1 then
commit;
//pueds ponerle un messagebox en esta linea
ii_tiempo = 0
//limpias los campos
else
rollback;
end if
... lo que has hecho esta bien... no entiendo porque no t sale... bueno... si continua así... no podre hacer más por ti... yo lo he hecho así y todo me sale ok... suerte
Hola tuve que cambiar el tipo de dato a cadena y hice lo que me dijiste pero ahora si almacena en el dw_1 por ejemplo 00min 13seg pero la dificultad es que en la base de datos el campo esta vacío a que se debe eso solo cuando después de grabar solo se visualiza en el dw no emn la BD, te estaré agradecido la ultima ayuda
Mmmmmm... con ese codigo q t envie de guardar no deberia d ocurrir ese problema... como lo stas guardando... tienes mas codigo en tu boton guardar ¿? ¿?
Pongo el código que me dijiste este:
dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo))
if dw_1.update() = 1 then
commit;
//pueds ponerle un messagebox en esta linea
ii_tiempo = 0
//limpias los campos
else
rollback;
end if
Solo en ejecución se ve en el dw en el campo tiempo 00min 09seg pero no en la base de datos, voy a a la BD y esta vacío el campo, bueno te agradezco tu esfuerzo de repente hice algo mal.
dw_1.setitem(dw_1.getrow() , 'tiempo' , wf_formatotiempo(ii_tiempo))
if dw_1.update() = 1 then
commit;
//pueds ponerle un messagebox en esta linea
ii_tiempo = 0
//limpias los campos
else
rollback;
end if
Solo en ejecución se ve en el dw en el campo tiempo 00min 09seg pero no en la base de datos, voy a a la BD y esta vacío el campo, bueno te agradezco tu esfuerzo de repente hice algo mal.
- Compartir respuesta
- Anónimo
ahora mismo