enviar una variable local a un reporte??

776 views
Skip to first unread message

Saul Piña Hernandez

unread,
Mar 15, 2015, 4:17:28 PM3/15/15
to publice...@googlegroups.com
Tengo un par de fechas inicial y final y deseo que se muestren en un reporte luego de ejecutar una consulta de un cursor, como se puede lograr esto?

debo declarar las variables en publicas?  existe otra forma tambien que no sea por thisform.fechainicial.value??

gracias.

Víctor Hugo Espínola Domínguez

unread,
Mar 15, 2015, 4:28:22 PM3/15/15
to publice...@googlegroups.com
Hola Saúl

Declara las variables como privadas  en el método o procedimiento desde donde invocas al report.

PRIVATE pdFecIni, pdFecFin

pdFecIni  = DATE(2015, 1, 1)
pdFecFin = DATE()
REPORT FORM tuReport.frx ...

Dentro del report tuReport.frx puedes usar esas variables

Saludos,
Víctor.
Lambaré - Paraguay.



Saul Piña Hernandez

unread,
Mar 15, 2015, 4:57:10 PM3/15/15
to publice...@googlegroups.com
Error:

Variable pdFechaInicial is not found

Víctor Hugo Espínola Domínguez

unread,
Mar 15, 2015, 5:26:39 PM3/15/15
to publice...@googlegroups.com
Hola Saúl

Los comandos PRIVATE, STORE y REPORT FORM  DEBEN estar en el mismo módulo.

Podemos ver el código que estás usando?

Saludos,
Víctor.
Lambaré - Paraguay.

Eric Natareno Guerra

unread,
Mar 15, 2015, 10:38:28 PM3/15/15
to publicesvfoxpro

Yo lo hago de esta forma
En el formulario coloco dos textbox uno para fecha inicial y otro fecha final
En el controlsource de cada textbox colocas los nombres de variables y en el init de los mismos le asignas valores ya sean vacíos o fecha del día etc
En el reporte colocas textbox con los nombres de variables utilizados  en tu formulario. Esta es mi humilde opinión

Víctor Hugo Espínola Domínguez

unread,
Mar 16, 2015, 9:19:11 AM3/16/15
to publice...@googlegroups.com
Hola Eric

Tú le llamas papas y yo patatas ;-)

Saludos,
Víctor.
Lambaré - Paraguay.

Antonio Meza

unread,
Mar 16, 2015, 3:26:18 PM3/16/15
to publice...@googlegroups.com
Hola saul, si no quieres complicarte tanto, y tienes un textbox1 con una fecha y un textbox2 con otra fecha en tu formulario, lo único que tienes que hacer es en el reporte asignarle el valor del VALUE de cada textbox en tu control tipo Campo de tu reporte, ejemplo:

thisform.textbox1.value

saludos
Antonio Meza

HernanCano

unread,
Mar 16, 2015, 8:31:03 PM3/16/15
to publice...@googlegroups.com
A ver, Saúl:

¿Las declaraste privadas (como te dijo Víctor) y aún así te sale el error? ¿Seguro?

Muéstranos el código que usas entonces.....

Antonio.xt

unread,
Mar 17, 2015, 10:17:49 AM3/17/15
to publice...@googlegroups.com

Saul, incluso puedes declarar las variables como LOCAL y puedes usarlas en el reporte, siempre y cuando mandes llamar el reporte en el mismo metodo donde declaraste las variables.

No sera que estas declarando las variables en un metodo del formulario, y luego llamas a un procedimiento y este es el que manda llamar el reporte? Si es asi las variables Locales ya no tienen alcance, pero las Privadas si.


Fidel Charny

unread,
Mar 17, 2015, 10:24:17 AM3/17/15
to publice...@googlegroups.com
Zas! se me fueron a la pileta las variables LOCAL !!!!!!!
Espero que lo que dice Antonio.xt no sea cierto !!!!

Antonio.xt

unread,
Mar 17, 2015, 10:36:34 AM3/17/15
to publice...@googlegroups.com

Pero pues asi es Fidel, de hecho tengo unos formularios para reportes y algunas variables las uso de ese modo.

Haz la prueba...

Luis Maria Guayan

unread,
Mar 17, 2015, 11:03:02 AM3/17/15
to publice...@googlegroups.com
Antonio: Unicamente pasan a otro método o procedimiento las variables PRIVADAS, no LOCALES

Si usas variables sin declarar, VFP automáticamente las crea como PRIVADAS y seguramente es lo que a tí te está ocurriendo


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

Víctor Hugo Espínola Domínguez

unread,
Mar 17, 2015, 11:16:48 AM3/17/15
to publice...@googlegroups.com
Lo que dicen los integrantes del dúo "Los Antonios" es increíblemente cierto!, jamás se me habría ocurrido la idea de probar si no hubiera sido por este hilo.

Este tipo de debilidades o fallas de los lenguajes no deberían ser utilizadas porque:

- Puede que no funcione en otros lenguajes.
- Puede no funcionar en futuras versiones del mismo (No es el caso de VFP).
- Es una mala práctica.


Saludos,
Víctor.
Lambaré - Paraguay.

Antonio.xt

unread,
Mar 17, 2015, 11:21:10 AM3/17/15
to publice...@googlegroups.com

No master, asi no es como lo estoy usando, si se que si no se declaran las variables se crean como privadas, lo que yo hago es declararlas como locales y en ese mismo metodo llamo al reporte en donde uso esas variables.

Inlcuyo un ejemplo del codigo que uso:

LOCAL lcNombre_rep, lcFiltros
lcNombre_rep = Thisform.Container1.cmbReporte.Value
lcFiltros = ""

*La variable lcFiltros se llena con los filtros que se hayan seleccionado como fecha inicial y final, cliente, estatus, etc. o los filtros necesarios.

*Se hacen algunos calculo y se genera el cursor para el reporte.

REPORT FORM Rep_Prest01 PREVIEW

Y en el reporte Rep_Prest01 uso las variables lcNombre_rep, lcFiltros en la cabecera.

Martin Paredes

unread,
Mar 17, 2015, 11:33:48 AM3/17/15
to publice...@googlegroups.com
PRIVATE MyDate
MyDate = <some date here>
REPORT FORM MyReport TO PRINTER
   && The report will be able to use MyDate

Salds...
Mapasac, 
General Escobedo, N.L. Mexico

El domingo, 15 de marzo de 2015, 14:17:28 (UTC-6), Saul Piña Hernandez escribió:

Antonio.xt

unread,
Mar 17, 2015, 11:50:07 AM3/17/15
to publice...@googlegroups.com

Victor, pero porque llamarlas "debilidades" o "fallas", quiero pensar que los creadores de VFP incluyeron eso para facilitarnos los desarrollos a los que usamos esta herramienta.

- Puede que no funcione en otros lenguajes. -  Bueno, cuando uno maneja otro lenguaje debe conocer el alcance de sus variables. Es como no usar el IIF porque otros lenguajes no lo tienen.
- Puede no funcionar en futuras versiones del mismo (No es el caso de VFP). -  Es este caso es VFP, y si hubiera una nueva version y ya no funcione, pues hay que cambiar la forma; a veces no podemos adelantarnos y no usar algo pensando en que ya no funcionara en un futuro.
- Es una mala práctica. -  Este es motivo para no usar las variables de ese modo, ya que trato de apegarme a las buenas practicas, pero necesitaria mas argumentos para considerarlo una mala practica.

Jairo Miranda

unread,
Mar 17, 2015, 12:34:05 PM3/17/15
to publicesvfoxpro
Yo las declaro directamente el el Select SQL con un  vble As xVble  , si es texto space(10) as texto, si es numérica  00000000.00 as numero y las relleno con datos en un SCAN  o se puede hacer directamente .

JM

Víctor Hugo Espínola Domínguez

unread,
Mar 17, 2015, 12:39:43 PM3/17/15
to publice...@googlegroups.com
Hola Antonio

Considero que es una "falla" porque el uso de una variable local fuera de su ámbito no debería estar permitido.

Hacer referencia a THISFORM en un report como mínimo puede ser calificado de incongruente.

Saludos locales y/o privados,
Víctor.
Lambaré - Paraguay.

Antonio.xt

unread,
Mar 17, 2015, 12:49:06 PM3/17/15
to publice...@googlegroups.com


Bueno Victor, en eso estamos de acuerdo, a mi tampoco me parece usar Thisform en un reporte, yo no lo uso de esa manera, y mi ejemplo no fue asi.

Pero una variable local creada en el mismo metodo que llama el reporte, digo, si el lenguaje lo incluye y te lo permite.

Saúl Piña

unread,
Mar 17, 2015, 1:29:18 PM3/17/15
to publice...@googlegroups.com
Perdon, si ya funciona, bueno, en la pc de mi trabajo funciona bien el Private en el Load del form.

En la pc de mi casa, es que no me funcionó...

Luis Maria Guayan

unread,
Mar 17, 2015, 2:33:24 PM3/17/15
to publice...@googlegroups.com
Ese es tu error, no deberias declarar la variable PRIVATE en el método LOAD.

Debes declarar la variable como PRIVATE
, en el mismo método que llama el informe !!!


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

Saúl Piña

unread,
Mar 17, 2015, 2:37:42 PM3/17/15
to publice...@googlegroups.com
Gracias Luis Maria, seguramente es el origen del mal.

gracias de nuevo.

Rafael Carballo

unread,
Mar 20, 2015, 11:36:33 AM3/20/15
to publice...@googlegroups.com
En algunas ocasiones yo he tenido problemas con algunas variables cuando el nombre de la variable es igual al un campo de una tabla o de un cursor perdiendoce esta en cualquier lugar que se encuentra en igualdad. 

Otra forma es hacer un debug con set step on antes de iniciar el informe y ver el contenido de la variable que trae en ese momento o recorrer el debug desde el inicio de la variable hasta el final del reporte.


El domingo, 15 de marzo de 2015, 14:17:28 (UTC-6), Saul Piña Hernandez escribió:

Jose Mario

unread,
Mar 23, 2015, 10:36:25 AM3/23/15
to publice...@googlegroups.com
publicas en load 

o utilizando

_Screen.AddProperty("Titulo")
_Screen.Titulo = "Este es el título de mi aplicación"
? _Screen.Titulo 




El domingo, 15 de marzo de 2015, 14:28:22 (UTC-6), Víctor Hugo escribió:

integral

unread,
Mar 23, 2015, 11:58:24 AM3/23/15
to publice...@googlegroups.com

Estimado Amigo :

Con relación a tu pregunta te muestro la forma como lo soluciono, esto lo vengo realizando desde que programaba en VFP 6.0  (Ver imágenes Adjuntas)

Tan solo creas 2 varias en tu reporte y estas deberá estar creadas en tu programa principal.

Saludos,

INTEGRAL
Form_Fechas.jpg
Variable_Reporte.jpg

Hitiel Hernández

unread,
Mar 23, 2015, 12:39:20 PM3/23/15
to publice...@googlegroups.com
solo una duda, PRIVATE tiene el mismo alcance que LOCAL, digo en la definición de variables
--
Sabiduría ante todo; adquiere sabiduría

Mario Oviedo

unread,
Mar 23, 2015, 12:00:18 PM3/23/15
to publice...@googlegroups.com
pero no muestras como las declaras, en tu form
publicas o como

Ricardo Pina

unread,
Mar 23, 2015, 2:00:17 PM3/23/15
to Grupo VFP
Hola Hitiel

Jugando con el ejemplo de VFP9 podrás ver las diferrencias entre variables private y local
*** Program example demonstrating PRIVATE ***
SET TALK OFF
val1 = 10
val2 = 15

DO down
? val1, val2  && Displays 10, 15

PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? '   Val1   Val2'
? val1, val2  && Displays 50, 100
RETURN

Cambiando la definición como LOCAL de val2
*** Program example demonstrating PRIVATE *** SET TALK OFF LOCAL val2
val1 = 10 val2 = 15 DO down ? val1, val2 && Displays 10, 100 PROCEDURE down PRIVATE val1 val1 = 50 val2 = 100 ? ' Val1 Val2' ? val1, val2 && Displays 50, 100 RETURN


Cambiando la definición como PRIVATE de val2
*** Program example demonstrating PRIVATE *** SET TALK OFF PRIVATE val2
val1 = 10 val2 = 15 DO down ? val1, val2 && Displays 10, 100 PROCEDURE down PRIVATE val1 val1 = 50 val2 = 100 ? ' Val1 Val2' ? val1, val2 && Displays 50, 100 RETURN


Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Hitiel Hernández

unread,
Mar 23, 2015, 2:34:03 PM3/23/15
to publice...@googlegroups.com
Gracias Ricardo por tomarte la molestia de explicarme, la realidad desconocía el asunto.

integral

unread,
Mar 23, 2015, 3:25:03 PM3/23/15
to publice...@googlegroups.com
Respondiendo al Amigo JOSE :

Las declaro publicas en el LOAD

PUBLIC Fech_Ini, Fech_Fin, 

atte.,

INTEGRAL

Mario Oviedo

unread,
Mar 23, 2015, 6:22:21 PM3/23/15
to publice...@googlegroups.com
ok, asi era

Mario Oviedo

unread,
Mar 23, 2015, 6:23:05 PM3/23/15
to publice...@googlegroups.com
pero entonces no es necesario crear variables en los reportes, esa mismas variable te sirven para imprimirlas en los reportes
Reply all
Reply to author
Forward
0 new messages