Enviar consulta select a una preview despues de presentarla en un grid.

222 views
Skip to first unread message

TheNewInquirer

unread,
Feb 9, 2012, 1:52:40 PM2/9/12
to Comunidad de Visual Foxpro en Español
Tengo un grid que muestra los datos de una consulta select generada en
un cursor.

Antes, cuando usaba filtros, mostraba los datos "filtrados" en el grid
y dejaba un "triste boton de comando IMPRIMIR" para que el usuario
hiciera click y entonces mostrara un archivo de informe generado en
una vista preliminar.

En el archivo de informes usaba el entorno de datos e insertaba los
campos de la tabla de origen, pero ahora, que se trata de un cursor,
ya no sé como hacerlo..

De antemano, gracias!

TheNewInquirer

unread,
Feb 9, 2012, 2:15:06 PM2/9/12
to Comunidad de Visual Foxpro en Español
Pongo aqui un comentario de Intel man, para ayudar a que este tema
quede organizado.


On 9 feb, 12:52, Intel Man <intel_man_in...@hotmail.com> wrote:> Hola,
no se si esto ya te contestaron:> > > Como envío los datos generados
en una consulta SELECT a un archivo de> > informe con solo que el
usuario presione un boton de comando> > IMPRIMIR ?...> > Pero puedes
hacer lo siguiente:> > Luego de haber generado tu select, llamas a tu
reporte> > report form tu_reporte> > Y en tu reporte en la parte de
campos a jalar harias referencia a los campos de esta manera:> >
micursor.campo1> micursor.campo2> etc> > Espero te sirva> >
Saludos>  > > > Date: Mon, 6 Feb 2012 13:52:11 -0800> > Subject: [vfp]
Re: Evitar ruptura de tablas nativas mediante usar cursores> > From:
fresassincr...@gmail.com> > To: publice...@googlegroups.com> > >
Ya puedo enviar datos de una consulta a un grid a través de un
cursor.> > > Lo hago, según me indicaron con esto:> > > En el evento
Load del form:> > Use mitabla IN 0> > > La propiedad Recorsource del
grid1 en la precarga es mitabla y muestra> > los datos de la tabla
original en su orden normal.> > > En un boton de comando del form
referenciado al grid:> > > Thisform.grid1.recordsource = ' '> > >
SELECT campo1, campo2 FROM mitabla INTO CURSOR micursor  ORDER BY> >
campodeorden> > > thisform.grid1.recordsource = 'micursor'> >
thisform.grid1.refresh()> > > Mi error era que en INTO CURSOR ponia
otra vez "mitabla" en vez de> > "micursor". Ahora entiendo que el
cursor debe tener OTRO NOMBRE ya que> > se trata de practicamente otra
tabla, solo que temporal(o solo en> > memoria).> > > Soy nuevo en esto
de los cursores y el desarrollo robusto.> > > Ahora bien..> > > Cuando
uso filtros, puesto que estos hacen referencia a la tabla de> >
origen, solo pongo un Boton de Comando que tiene el código que llama
a> > un archivo de informe y lo presenta en vista preliminar.> > >
REPORT FORM "resumenordenado.frx" TO PRINTER PROMPT PREVIEW> > >
Cuando uso filtros, puesto que estos solo le dejar ver los datos> >
filtrados al comando REPORT FROM de su origen de datos que es la> >
tabla, solo presentará dichos datos filtrados en pantalla y no TODA
LA> > TABLA.> > > Como envío los datos generados en una consulta
SELECT a un archivo de> > informe con solo que el usuario presione un
boton de comando> > IMPRIMIR ?...> > > No quisiera volver a teclear la
consulta en el INIT del entorno de> > datos del archivo de informe.> >
> No soy de la idea de "duplicar codigo" (como en este caso, en el
form> > y luego en el init del entorno de dato del report).> > > Hay
alguna otra forma "mas limpia" de trabajarlo?..> > > Gracias a todos!

Jose Antonio Blasco

unread,
Feb 10, 2012, 10:11:46 AM2/10/12
to publice...@googlegroups.com
Os adjunto una utilidad que genera un report automático partiendo de
un cursor, realiza la presentacion preliminar y al salir elimina el
report generado automaticamente.

Recordar cambiar la extensión por 'prg'.

Un saludo.

El día 9 de febrero de 2012 20:15, TheNewInquirer
<thenewin...@gmail.com> escribió:

--
Jose A. Blasco
Zaragoza - España

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi

autorepo.pr_

TheNewInquirer

unread,
Feb 10, 2012, 10:18:33 AM2/10/12
to Comunidad de Visual Foxpro en Español
Gracias JA Blasco.

Sé que esto debe funcionar a todas luces!!

Sin embargo, quisiera aprender a "hacerlo con mis propias manos" y
entender los por qués.

Muy amable, de todas formas por compartir sus desarrollos con un
novato.

Saludos!

TheNewInquirer

unread,
Feb 10, 2012, 10:28:47 AM2/10/12
to Comunidad de Visual Foxpro en Español
Jajaja! Me equivoqué... Pensé al leer de primera mano que se trataba
de una app pero es un prg y puedo ver todo el código.

Perdon..

Aun así, todo ese código que se muy interesante, con los filtros que
usaba se reducía a una triste linea en el evento click de un botón de
comando IMPRIMIR:

REPORT FORM "quincenaactual.frx" TO PRINTER PROMPT PREVIEW

Me pregunto si no existe algo así pero usando cursores y consultas
select...

De todos modos, aclaro que no menosprecio "las horas de trabajo"
invertidas en generar el código que se me obsequió. Al contrario,
gracias por su amabilidad.

Saludos!

Jose Antonio Blasco

unread,
Feb 10, 2012, 10:56:43 AM2/10/12
to publice...@googlegroups.com
Bueno, es que el concepto es diferente. Lo que te evita el código que
te pasé, es tener que diseñar un report para cada consulta que quieras
imprimir. Es cierto que sólo sirve para listar el resultado de una
consulta, sin posibilidad de agrupar o dar totales.

De todas formas, gracias por tus palabras y un saludo.

El día 10 de febrero de 2012 16:28, TheNewInquirer
<thenewin...@gmail.com> escribió:

--

TheNewInquirer

unread,
Feb 20, 2012, 10:00:33 AM2/20/12
to Comunidad de Visual Foxpro en Español
Ya logré que al presionar un boton de comando, los datos se tomen del
cursor.

Solo cambié manualmente, el origen de datos de los campos del informe,
direccionándolos al nombre de mi cursor y quite algunos campos memos,
porque marcaba error.

Sé que los datos del cursor ahora se envían a la vista preliminar
porque veo el primer dato filtrado, o el primer dato arrojado por la
consulta select, en la preview.

El problema ahora es que SE REPITE el mismo dato en las 10 hojas del
reporte, en vez de presentarlos tal y como aparecen en el grid que
contiene la consulta generada por el cursor.

Como le hago para que pueda ver tal cual los datos generados mediante
una consulta select hacia un cursor y luego enviados a un grid, pero
ahora en la vista preliminar, con solo que el usuario presione un
boton "imprimir"?...

Samuel San Miguel

unread,
Feb 20, 2012, 10:13:02 AM2/20/12
to publice...@googlegroups.com
La forma mas simple es que en tus campos del reporte, no lo amarres con los campos de una tabla: es decir no hagas esto :
Tabla1.Campo1
Sólo tienes que colocar el nombre del campo   Campo1.
De esta forma cualquier Cursor que generes y tenga la misma estructura de campos que colocaste en tus controles del reporte, será transparente para el reporte.

En otras palabras no necesitas utilizar ENTORNO DE DATOS.

Saludos.

Intel Man

unread,
Feb 20, 2012, 10:39:57 AM2/20/12
to publice...@googlegroups.com
Hola, tienes tu campo de tu cursor generado por tu select en la banda detalle?
antes de ir al reporte deberiar posicionarte en el area de trabajo de tu cursor, algo como esto:

select tu_cursor
report form tu_reporte

Saludos


> Date: Mon, 20 Feb 2012 07:00:33 -0800
> Subject: [vfp] Re: Enviar consulta select a una preview despues de presentarla en un grid.
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com

TheNewInquirer --

unread,
Feb 20, 2012, 12:00:38 PM2/20/12
to publice...@googlegroups.com
Mi tabla se llama sepdec
Mi cursor csepdec

El codigo en el boton imprime filtro es:

select csepdec
REPORT FORM "resumen.frx" TO PRINTER PROMPT PREVIEW

El codigo en el boton imprime reporte es:

selec sepdec
REPORT FORM "resumenfiltro.frx" TO PRINTER PROMPT PREVIEW

El boton subtotales genera la consulta hacia un cursor y lo pasa al grid.

Los campos están en la banda detalle apuntando al cursor.

Aun no pruebo escribir solo los campos..

Gracias!
subtotales.JPG

TheNewInquirer

unread,
Feb 20, 2012, 12:17:11 PM2/20/12
to Comunidad de Visual Foxpro en Español
Fantastico!! Ya salió!

Escribi solo los campos y no mas NO.

Luego le di click derecho sobre un area vacia de la banda detalle,
entorno de datos, borre la tabla que aparecía de forma grafica en el
entorno datos, luego volvi a ejecutar el formulario, click en el boton
imprime filtro y Buuuuuuum!

Sale el reporte mostrando la consulta y casi casi como volando jeje!..

A veces ya me han dado la solución antes. Ya me habian dicho que
quitara el entorno de datos, pero me faltaban otros pasos y tal vez no
entendí desde el inicio a que se referian con "quitar el entorno de
datos".

Ahora entiendo que se referian a:

1. Direccionar el origen de datos de los campos, a "solo los campos".
2. Borrar el dibujo de la tabla que aparece en la pantalla del entorno
de datos de banda detalle del informe.

Gracias a todos!
Reply all
Reply to author
Forward
0 new messages