Restar Fechas

400 views
Skip to first unread message

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 6:35:37 AM3/2/15
to publice...@googlegroups.com
Buenos Días 

Necesito Restar dos Fechas en un informe, lo he echo así cafecha_inicia - cafecha_finaliza    y me lanza un numero negativo  EJ. -35   

Me resto el segundo

Como puedo hacer que me reste y salga en positivo y que ademas diga si es minutos o segundos

saludos

Francisco ji

unread,
Mar 2, 2015, 6:48:42 AM3/2/15
to publice...@googlegroups.com
Hola, solo haz la resta al revés.  cafecha_finaliza -  cafecha_inicia
 
No lo probé, espero te ayude.
 

Date: Mon, 2 Mar 2015 03:35:37 -0800
From: lezcan...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Restar Fechas

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 7:03:20 AM3/2/15
to publice...@googlegroups.com
Si funciona me sale en positivo pero es un numero entero ahora neecsito que me diga minutos y segundos

--

Rubén Lezcano

Euro Nava

unread,
Mar 2, 2015, 7:05:17 AM3/2/15
to publice...@googlegroups.com

Hazlo al revés cafecha_finaliza - cafecha_inicia

 

 

Saludos

 

 

 

El presente correo y sus anexos son exclusivamente para el uso de los destinatarios indicados en el encabezado del mismo, pueden contener información confidencial y/o privilegiada. Si usted por error ha recibido la presente correspondencia agradezco hacer omisión de esta y hacerme del conocimiento por esta misma vía    

 

Bendito el Hombre que ha sido llamado por Cristo para ser el soldado del ejército en cuya mano empuñe como arma la palabra de Dios

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 7:10:27 AM3/2/15
to publice...@googlegroups.com
si Euro pero me da 3529 el resultado
y necesito saber el minuto y segundo pero en el informe
saludos
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 7:38:17 AM3/2/15
to publice...@googlegroups.com
Este es el resultado, pero claro yo necesito que me diga si es minutos o segundos, en el informe y no se como hacerlo :(

Gracias chicos por vuestra colaboración
--

Rubén Lezcano

Sin título.png

Carlos Alfaro

unread,
Mar 2, 2015, 7:53:48 AM3/2/15
to publice...@googlegroups.com

Saludos estimado Ruben:

 

El numero que ves, aunque no lo dice, son segundos.

 

El siguiente paso será que le apliques el factor para convertirlo a minutos y a cada uno lo nombres como corresponde.

 

Normalmente el factor lo enseñan en primaria.

 

En cuanto a tu reporte tendría que ser algo así:

Los comandos que te van a ser de utilidad son:

 

Minutos = int(cafecha_finaliza – cafecha_inicia)

Segundos = mod(cafecha_finaliza – cafecha_inicia,60)

 

Feliz día.

 

Carlos Alfaro

Ricardo Peña

unread,
Mar 2, 2015, 7:56:05 AM3/2/15
to GRUPO-VFP GRUPO-VFP
La diferencia de dos datetime te da en segundos.
 
Con un poco de matemáticas lo obtienes:
 
minutos=(a-b)/60
horas = minutos/60
días=horas/24
 
y así sucesivamente

Ricardo Luis Peña
Analista de Sistemas
BA - Argentina
011-15-4440-7378
 

Date: Mon, 2 Mar 2015 13:38:01 +0100

Subject: Re: [vfp] Restar Fechas

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 7:57:23 AM3/2/15
to publice...@googlegroups.com
Pero donde realizo la operación matemática en el reporte o en la consulta?

Saludos
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 8:00:49 AM3/2/15
to publice...@googlegroups.com
Esto es mi consulta
SELECT p.pedidokey, p.jinez,  po.cajero_inicia, po.cafecha_inicia, po.cajero_finaliza, po.cafecha_finaliza ;
FROM pe p ;
left JOIN po ON p.pedidokey=po.pedidokey WHERE po.cafecha_inicia >= ?M.Desde AND po.cafecha_inicia <= ?M.Hasta ; 
order BY po.cafecha_inicia ;
into cursor consultacomprobar

Aqui muestra en el reporte

REPORT FORM c:\MPP\informes\informes_comprobador.frx PREVIEW noconsole to printer


Donde realizo el calculo matemático en el reporte o en la consulta

Saludos



--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 8:06:07 AM3/2/15
to publice...@googlegroups.com
Como se aprecia en la imagen que subí hay numero enteros en el reporte y lo que neesito que me diga es la diferencia de Ejemplo:  10 hs con 45 min y 12 segundos  ó     45 minutos y 12 segundos    eso debe de imprimir 

Se puede poner así en un reporte?

saludos



Carlos Alfaro

unread,
Mar 2, 2015, 8:28:03 AM3/2/15
to publice...@googlegroups.com

Yo prefiero aplicarlo en el reporte, solo coloco en la casilla de campo o field la formula que te escribí.

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 8:31:49 AM3/2/15
to publice...@googlegroups.com
Carlos, de antemano muchas gracias, solo comentarte que he pegado esto en la caja de tex del reporte Minutos = int(cafecha_finaliza – cafecha_inicia)

Segundos = mod(cafecha_finaliza – cafecha_inicia,60)

Y me daerror


saludos

--

Rubén Lezcano

Carlos Alfaro

unread,
Mar 2, 2015, 8:46:56 AM3/2/15
to publice...@googlegroups.com

En reporte debes escribir solamente int(cafecha_finaliza – cafecha_inicia)

 

En el reporte queres que diga 

Carlos Alfaro

unread,
Mar 2, 2015, 8:55:57 AM3/2/15
to publice...@googlegroups.com

Perdon, por error le di enviar, todavía faltaba, si queres que en el reporte diga:

 

XX horas, YY minutos y ZZ segundos, tendrías que concatenarlo, por ejemplo:

 

STR(INT(cafecha_finaliza – cafecha_inicia /3600),3) + ' horas ' + STR(mod(INT(cafecha_finaliza – cafecha_inicia /60),60),2) + ' minutos ' + STR(MOD(cafecha_finaliza – cafecha_inicia,60),2) + ' segundos'

 

Espero que lo podas entender.

 

Bendiciones.

 

Carlos Alfaro

 

From: Carlos Alfaro [mailto:calf...@yahoo.com.ar]
Sent: lunes, 02 de marzo de 2015 07:47 a.m.
To: 'publice...@googlegroups.com'
Subject: RE: [vfp] Restar Fechas

 

En reporte debes escribir solamente int(cafecha_finaliza – cafecha_inicia)

 

En el reporte queres que diga 

 

 

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 8:56:12 AM3/2/15
to publice...@googlegroups.com
Uno tiene int y el otro el mod

Y lo necesito todo junto
--

Rubén Lezcano

Sin título.png

Carlos Alfaro

unread,
Mar 2, 2015, 8:58:31 AM3/2/15
to publice...@googlegroups.com

Sabes como hacer un procedimiento y llamarlo desde el reporte?

 

From: Carlos Alfaro [mailto:calf...@yahoo.com.ar]
Sent: lunes, 02 de marzo de 2015 07:56 a.m.
To: 'publice...@googlegroups.com'
Subject: RE: [vfp] Restar Fechas

 

Perdon, por error le di enviar, todavía faltaba, si queres que en el reporte diga:

 

XX horas, YY minutos y ZZ segundos, tendrías que concatenarlo, por ejemplo:

 

STR(INT(cafecha_finaliza – cafecha_inicia /3600),3) + ' horas ' + STR(mod(INT(cafecha_finaliza – cafecha_inicia /60),60),2) + ' minutos ' + STR(MOD(cafecha_finaliza – cafecha_inicia,60),2) + ' segundos'

 

Espero que lo podas entender.

 

Bendiciones.

 

Carlos Alfaro

 

From: Carlos Alfaro [mailto:calf...@yahoo.com.ar]
Sent: lunes, 02 de marzo de 2015 07:47 a.m.
To: 'publice...@googlegroups.com'
Subject: RE: [vfp] Restar Fechas

 

En reporte debes escribir solamente int(cafecha_finaliza – cafecha_inicia)

 

En el reporte queres que diga 

 

 

Andrés Oscar Gimbatti

unread,
Mar 2, 2015, 8:59:46 AM3/2/15
to publice...@googlegroups.com
Te paso una función que alguna vez encontre por ahi:

*----------------------------------------------------------------
* pasa segundos a horas con formato HH:MM:SS
*----------------------------------------------------------------
FUNCTION sectohour
LPARAMETERS m.parm1 
LOCAL m.dummy,m.hora,m.minuto,m.segundo 
m.parm1 = INT(m.parm1) 
m.hora = INT(m.parm1/3600) 
m.parm1 = m.parm1 - (m.hora*3600) 
m.minuto = INT(m.parm1/60) 
m.segundo = m.parm1 - (m.minuto*60) 
m.parm1 = STRTRAN(STR(m.hora,2,0)+":"+STR(m.minuto,2,0)+":"+STR(m.segundo,2,0)," ","0") 
IF m.parm1 = "0" 
m.parm1 = SUBSTR(m.parm1,3) 
IF m.parm1 = "0" 
m.parm1 = SUBSTR(m.parm1,2) 
ENDIF 
ENDIF 
RETURN m.parm1
ENDFUNC 

Ej.:
lresultado = sectohour(3156) 

el resultado es 00:52:36

Saludos

Luis Maria Guayan

unread,
Mar 2, 2015, 9:28:33 AM3/2/15
to publice...@googlegroups.com
--- Trabajar con fechas y horas en Visual FoxPro --
http://comunidadvfp.blogspot.com/2014/09/trabajar-con-fechas-y-horas-en-visual.html

Luis María Guayán
Tucumán, Argentina
_____________________________
http://comunidadvfp.blogspot.com

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 9:35:59 AM3/2/15
to publice...@googlegroups.com
Carlos muchas gracias, eso es lo que necesito, en el informe pero me da un error "No coincide los tipos de datos"  por que será?

--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 9:40:40 AM3/2/15
to publice...@googlegroups.com
no se hacer el procedimiento amigo hace poco inicie en fox
--

Rubén Lezcano

Carlos Alfaro

unread,
Mar 2, 2015, 9:52:45 AM3/2/15
to publice...@googlegroups.com

En el campo o field del reporte que tipo de datos le dijiste que mostrará?

 

Debe ser tipo carácter.

 

Voy a hacer un pequeño cambio a los comandos que te envié.

 

STR(INT((cafecha_finaliza – cafecha_inicia) /3600),3) + ' horas ' + STR(mod(INT((cafecha_finaliza – cafecha_inicia) /60),60),2) + ' minutos ' + STR(MOD(cafecha_finaliza – cafecha_inicia,60),2) + ' segundos'

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 10:03:59 AM3/2/15
to publice...@googlegroups.com
Seeeeee Carlitosss eres un genio colega es justamente lo  que necesitaba, y se podría concatenar días?

Muchiiiiiisimas gracias
--

Rubén Lezcano

Carlos Alfaro

unread,
Mar 2, 2015, 10:59:47 AM3/2/15
to publice...@googlegroups.com

Si vas a extenderlo mas, lo recomendable es usar una función o procedimiento y llamarlo desde el campo o field del reporte.

 

Ya tenemos claro que acabas de empezar con Fox, pero que experiencia tenés en programación?

 

Bendiciones.

 

Carlos Alfaro

Rubén Dario Lezcano Salinas

unread,
Mar 2, 2015, 11:10:21 AM3/2/15
to publice...@googlegroups.com
Experiencia como 1 año jeje en visual basic pero me gusta mas foxpro
--

Rubén Lezcano

Carlos Alfaro

unread,
Mar 2, 2015, 12:11:54 PM3/2/15
to publice...@googlegroups.com

Ya viste el link que te compartió el amigo Luis Ma. Guayan?

 

Seguramente tiene una función.

 

Para poderla llamar desde el reporte debes realizar lo siguiente:

·         Crear la función o procedimiento, por ejemplo:

o   Procedure de_segundos_a_tiempos

o   L_parameters fecha_final, fecha_inicial

o   * La rutina de conversión de segundos a: minutos, horas y días.

o   L_retval = ‘’ &&la variable en la que se colocará la concatenación, esta debe ser tipo carácter.

o   Return l_retval

·         Definir la función o procedimiento con set procedure

·         En el campo o field del reporte llamar a la funcion o procedimiento, por ejemplo:

o   de_segundos_a_tiempos(cafecha_finaliza,cafecha_inicia)

 

Buen dia.

Reply all
Reply to author
Forward
0 new messages