Visualización de informes
Hola amigo que más agradezco como siempre tu ayuda y compromiso con nosotros... Y tengo unas dudas de las cuales espero me resuelvas.
1. Esta vez tengo problemas para imprimir un informe (solo el registro que se visualiza en ese momento) copie este código y nada...
set filter to nrofactura=thisform.txtnrofactura.value
go Top
Report Form cotizacion To Print
Me dice que el informe no existe pero como no va ha exixtir si ya lo cree y pasa cada rato
2. Necesito visualizar el informe en HTML y en JPG o TIFF he intentado miles de tutoriales pero nada la verdad no me salen, hasta he copiado algunas "clases" y "prg" y la verdad algunas cosas no las entiendo pero no trabaja... Agradezco tu ayuda y espero una explicación o ejemplo de la forma más fácil...
Pdta: que hacer con el problema de que el no ubica el informe...
fargoz
1. Esta vez tengo problemas para imprimir un informe (solo el registro que se visualiza en ese momento) copie este código y nada...
set filter to nrofactura=thisform.txtnrofactura.value
go Top
Report Form cotizacion To Print
Me dice que el informe no existe pero como no va ha exixtir si ya lo cree y pasa cada rato
2. Necesito visualizar el informe en HTML y en JPG o TIFF he intentado miles de tutoriales pero nada la verdad no me salen, hasta he copiado algunas "clases" y "prg" y la verdad algunas cosas no las entiendo pero no trabaja... Agradezco tu ayuda y espero una explicación o ejemplo de la forma más fácil...
Pdta: que hacer con el problema de que el no ubica el informe...
fargoz
1 Respuesta
Respuesta de ravenn
1
1
ravenn, Me alegra poder estar de regreso. A la orden para sus consultas....
Tal como va tu caso, quiero preguntarte algo: ¿Al "llamar al informe" quieres mandarlo directamente a imprimir o lo quieres visualizar (vista previa)? Veo que en el REPORT FORM es como si quieres mandarlo directamente a la impresora. Bueno... en el caso que así sea, va así:
1. Proba esto:
SELECT tutabla
SET FILTER TO nrofactura = VAL(THISFORM.Txtnrofactura.Value)
REPORT FORM "cotizacion.frx" TO PRINTER NOCONSOLE
**--NOCONSOLE suprime eco del reporte en ventana del cual se llama--**
Si te dice que el informe no existe, es porque tal vez, haces referencia incorrecta de el. Asegurate tener establecido el directorio de visual foxpro correctamente, es decir, coincidente con la carpeta donde tienes tu proyecto. Para eso, escribí en la ventana de comandos SET DEFAULT TO "laruta completa de tu directorio" cada vez que inicies tu proyecto. O podes crear un .prg y escribir alli el set default y establecelo como programa principal. Luego solo lo "corres" cada vez que inicies sesión! Ves! :D :D :D Ahorras tiempo en lugar de estar escribiendo en la ven. De comandos!
2. Para reportes a HTML: En el evento click del boton (por ejemplo) pone esto:
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM tureporte OBJECT ox
Luego, busca el reporte en tu carpeta directorio con formato HTM.
Para sacar los reportes en varios formatos (PDF [ES EL QUE YO RECOMIENDO], jpg O TIFF) podes descargarte el driver de una "impresora virtual". La instalas y la pones como predeterminada. Al mandar a imprimir tus reportes, te arroja los mismos (reportes) en el formato que querrás!
Para muestra, un botón.. proba esta! Bajala y procede!
http://bullzip-pdf-printer.softonic.com/
Un informe desde visual fox... pues no se puede "visualizar" directamente en los formatos que pedís...! Debes convertirlos a través de una impresora virtual! Ves! Es fácil y sencillisisisisisisiiiimoo!
Estoy a tus ordenes cualquier cosa!
1. Proba esto:
SELECT tutabla
SET FILTER TO nrofactura = VAL(THISFORM.Txtnrofactura.Value)
REPORT FORM "cotizacion.frx" TO PRINTER NOCONSOLE
**--NOCONSOLE suprime eco del reporte en ventana del cual se llama--**
Si te dice que el informe no existe, es porque tal vez, haces referencia incorrecta de el. Asegurate tener establecido el directorio de visual foxpro correctamente, es decir, coincidente con la carpeta donde tienes tu proyecto. Para eso, escribí en la ventana de comandos SET DEFAULT TO "laruta completa de tu directorio" cada vez que inicies tu proyecto. O podes crear un .prg y escribir alli el set default y establecelo como programa principal. Luego solo lo "corres" cada vez que inicies sesión! Ves! :D :D :D Ahorras tiempo en lugar de estar escribiendo en la ven. De comandos!
2. Para reportes a HTML: En el evento click del boton (por ejemplo) pone esto:
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM tureporte OBJECT ox
Luego, busca el reporte en tu carpeta directorio con formato HTM.
Para sacar los reportes en varios formatos (PDF [ES EL QUE YO RECOMIENDO], jpg O TIFF) podes descargarte el driver de una "impresora virtual". La instalas y la pones como predeterminada. Al mandar a imprimir tus reportes, te arroja los mismos (reportes) en el formato que querrás!
Para muestra, un botón.. proba esta! Bajala y procede!
http://bullzip-pdf-printer.softonic.com/
Un informe desde visual fox... pues no se puede "visualizar" directamente en los formatos que pedís...! Debes convertirlos a través de una impresora virtual! Ves! Es fácil y sencillisisisisisisiiiimoo!
Estoy a tus ordenes cualquier cosa!
Ok Raveen más que complacido solo 3 complementos más:
1a. ¿Qué se hace para que visualice el formulario?
1b. ¿Qué se hace para que uno asigne la impresora en la cual desea imprimir?
2a. Me parece excelente que guarde los archivos HTML pero como hago para que cuando uno cree el ejevutable el tengo un lugar donde solo guarda esos archivos html ojala mis documnetos del equipo.
2b. Para que no solo guarde los archivos HTMl sino para ahí mismo abra el archivo.
fargoz
Gracias...
1a. ¿Qué se hace para que visualice el formulario?
1b. ¿Qué se hace para que uno asigne la impresora en la cual desea imprimir?
2a. Me parece excelente que guarde los archivos HTML pero como hago para que cuando uno cree el ejevutable el tengo un lugar donde solo guarda esos archivos html ojala mis documnetos del equipo.
2b. Para que no solo guarde los archivos HTMl sino para ahí mismo abra el archivo.
fargoz
Gracias...
Pues va así:
1a. REPORT FORM "tureporte.frx" PREVIEW
Aclaro... podes crear una ventana de visualización aparte, para que ahí cargues en form. Para eso, usas DEFINE WINDOW, estables la ventana con sus propiedades y cargas el form. SUponete que la window se llama "vistaprevia":
REPORT FORM "tureporte.frx." PREVIEW WINDOS vistapevia IN WINDOW vistaprevia
Para saber mas sobre como definir la ventana, aki esta bien explicado:
http://msdn.microsoft.com/es-es/library/cc467094(v=vs.71).aspx
1b. Para visualizar las porpiedades de impresion antes imprimir, usas PROMPT
REPORT FORM "tureporte.frx" TO PRINTER PROMPT
2a. Al final del codigo, establece un COPY FILE " " TO, asi:
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM tureporte OBJECT ox
COPY FILE MyHTMLOutput TO "ruta destino para guardar"
Si te fijas bien, la var ox te da el nombre del archivo (ox.TargetFileName = 'MyHTMLOutput' )que se guardara... ese mismo nombre lo pones en el copy file y le estableces la ruta! Y listo!
1a. REPORT FORM "tureporte.frx" PREVIEW
Aclaro... podes crear una ventana de visualización aparte, para que ahí cargues en form. Para eso, usas DEFINE WINDOW, estables la ventana con sus propiedades y cargas el form. SUponete que la window se llama "vistaprevia":
REPORT FORM "tureporte.frx." PREVIEW WINDOS vistapevia IN WINDOW vistaprevia
Para saber mas sobre como definir la ventana, aki esta bien explicado:
http://msdn.microsoft.com/es-es/library/cc467094(v=vs.71).aspx
1b. Para visualizar las porpiedades de impresion antes imprimir, usas PROMPT
REPORT FORM "tureporte.frx" TO PRINTER PROMPT
2a. Al final del codigo, establece un COPY FILE " " TO, asi:
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM tureporte OBJECT ox
COPY FILE MyHTMLOutput TO "ruta destino para guardar"
Si te fijas bien, la var ox te da el nombre del archivo (ox.TargetFileName = 'MyHTMLOutput' )que se guardara... ese mismo nombre lo pones en el copy file y le estableces la ruta! Y listo!
Hola de nuevo muchas gracias.. solo tengo incovennientes en el paso 2.
Resulta que el sistema me informa que el reporte no existe y lo tengo anclado como lo sugeriste ( set default To "Ruta" ) pero la verdad funciona.
La forma de imprimir funciona perfectamente, pero no funciona el HTML. Ademas aparte de que guarde que habrá el HTML inmediatamente.
Men muy agradecido
fargoz
Resulta que el sistema me informa que el reporte no existe y lo tengo anclado como lo sugeriste ( set default To "Ruta" ) pero la verdad funciona.
La forma de imprimir funciona perfectamente, pero no funciona el HTML. Ademas aparte de que guarde que habrá el HTML inmediatamente.
Men muy agradecido
fargoz
Muéstrame el código que usas, en donde te da error que el reporte no existe. Cópialo en esta ventana para ver si es ahí el problema.
Respecto al HTML... ¿cómo qué no funciona? ¿Qué problema te da?
Para que el html te abra proba esto: después del código anterior:
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute("C:\establece la ruta de ubicacion del archivo\MYHTMLOUTPUT.htm")
loShel = NULL
RELEASE loShell
*ELSE
* MESSAGEBOX("No se pudo generar el archivo HTML",16,"Error")
*ENDIF
loHtml = NULL
RELEASE loHtml
A mi me funciona bien y lo abre! :D :D: D Proba y me contas!
Respecto al HTML... ¿cómo qué no funciona? ¿Qué problema te da?
Para que el html te abra proba esto: después del código anterior:
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute("C:\establece la ruta de ubicacion del archivo\MYHTMLOUTPUT.htm")
loShel = NULL
RELEASE loShell
*ELSE
* MESSAGEBOX("No se pudo generar el archivo HTML",16,"Error")
*ENDIF
loHtml = NULL
RELEASE loHtml
A mi me funciona bien y lo abre! :D :D: D Proba y me contas!
Ohhh! Aclaro... este codigoultimo lo tome de portal fox:
http://www.portalfox.com/index.php?name=News&file=article&sid=1966&mode=nested&order=0&thold=0
Una excelente colaboración del maestro Luis Marua Guayan respecto al tema! Todos los créditos para el Sr. Guayan! :D :D :D
http://www.portalfox.com/index.php?name=News&file=article&sid=1966&mode=nested&order=0&thold=0
Una excelente colaboración del maestro Luis Marua Guayan respecto al tema! Todos los créditos para el Sr. Guayan! :D :D :D
El error esta en la ultima parte " menciona que es no existe, pero el imprime el reporte normal
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM cotizacion1 OBJECT ox
COPY FILE MyHTMLOutput TO "E:\Mis Documentos"
*-- Aseguramos que el HTML no existe--* ERASE MyHTMLOutput.HTM *-- Crear la clase listener SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER' ox = CREATEOBJECT('htmlListener') *--Configuramos algunas porpiedades ox.TargetFileName = 'MyHTMLOutput' *-- Llamamos el reporte REPORT FORM cotizacion1 OBJECT ox COPY FILE MyHTMLOutput TO "E:\Mis Documentos"
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM cotizacion1 OBJECT ox
COPY FILE MyHTMLOutput TO "E:\Mis Documentos"
*-- Aseguramos que el HTML no existe--* ERASE MyHTMLOutput.HTM *-- Crear la clase listener SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER' ox = CREATEOBJECT('htmlListener') *--Configuramos algunas porpiedades ox.TargetFileName = 'MyHTMLOutput' *-- Llamamos el reporte REPORT FORM cotizacion1 OBJECT ox COPY FILE MyHTMLOutput TO "E:\Mis Documentos"
¿Cómo va eso? "menciona que es no existe, ¿pero el imprime el reporte normal"? Asegurate de tener el reporte en tu carpeta directorio! Sabes... hace esto... anda al administrador de proyectos, selecciona la pestaña DOCUMENTS, desplegá los reportes y selecciona el reporte al que tratas de hacer referencia y ahí mismo, te aparece (más abajito) description y el path (ruta de directorio del reporte). Asegurate que este correcto en tu carpeta de directorio. Caso contrario... ahí esta el error. Asegurate de agregarlo a tu carpeta! :D
Casi si esta correto, compila tu proyecto. Cerralo, volverlo a ejecutar. Cuando inicie nuevamente, ejecuta SET DEFAULT TO "ruta de carpeta directorio". Proba. Si te sigue dando error, hace esto: copia la ruta de acceso de tu reporte completa y pégala en el código, de modo que te quede más o menos así:
REPORT FORM "C:\USERS\Raven\Proyectosfox\proyecto1\mireporte.frx" OBJECT ox
Ves! Hace referencia a la ruta completa. Asegurateeeee que copies bien dicha ruta! Ejecuta y así ya no debe darte errores! :D :D :D
Cualquier cosa, me avisas! :)
Casi si esta correto, compila tu proyecto. Cerralo, volverlo a ejecutar. Cuando inicie nuevamente, ejecuta SET DEFAULT TO "ruta de carpeta directorio". Proba. Si te sigue dando error, hace esto: copia la ruta de acceso de tu reporte completa y pégala en el código, de modo que te quede más o menos así:
REPORT FORM "C:\USERS\Raven\Proyectosfox\proyecto1\mireporte.frx" OBJECT ox
Ves! Hace referencia a la ruta completa. Asegurateeeee que copies bien dicha ruta! Ejecuta y así ya no debe darte errores! :D :D :D
Cualquier cosa, me avisas! :)
Que pena Raveen creo que no me supe explicar lo anterior ya me lo habías explicado y muchas gracias.
El problema es con el botón que generara el archivo HTML, al darle click para que trabaje el archivo me sale esta información...
windows no puede en encontrar el archivo E: Documentos/MYHTMLOUTPUT.html entonces para que trabajara copie el archivo MYHTMLOUTPUT.html que se había generado antes y trabaja.
Creo que se debe a esto...
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
Eso afectara mi proyecto después, debido a que ese archivo inicialmente no estará en otro sistema, he informara de nuevo dicho problema.
Resumen...
Si el archivo MYHTMLOUTPUT.html inicialmente no esta en mis documentos no trabaja
FARGOZ
El problema es con el botón que generara el archivo HTML, al darle click para que trabaje el archivo me sale esta información...
windows no puede en encontrar el archivo E: Documentos/MYHTMLOUTPUT.html entonces para que trabajara copie el archivo MYHTMLOUTPUT.html que se había generado antes y trabaja.
Creo que se debe a esto...
*-- Aseguramos que el HTML no existe--*
ERASE MyHTMLOutput.HTM
Eso afectara mi proyecto después, debido a que ese archivo inicialmente no estará en otro sistema, he informara de nuevo dicho problema.
Resumen...
Si el archivo MYHTMLOUTPUT.html inicialmente no esta en mis documentos no trabaja
FARGOZ
Ok! Prueba el código sin ejecutar el ERASE! Esta linea es para asegurarse que el archivo que se copiara no se duplique... es decir que si ya existes, lo sobreescribe! Ves! Entonces solo quita la sentencia! Y proba! :D :D :D Yo ya lo he probado y me funciona 100%! Avisame!
Te envío el código usado...
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM cotizacion1 OBJECT ox
COPY FILE MyHTMLOutput TO "E:\Mis Documentos\MYHTMLOUTPUT.htm"
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute("E:\Mis Documentos\MYHTMLOUTPUT.htm")
loShel = NULL
RELEASE loShell
*ELSE
*MESSAGEBOX("No se pudo generar el archivo HTML",16,"Error")
*ENDIF
loHtml = NULL
RELEASE loHtml
*-- Aseguramos que el HTML no existe--* *ERASE MyHTMLOutput.HTM *-- Crear la clase listener SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER' ox = CREATEOBJECT('htmlListener') *--Configuramos algunas porpiedades ox.TargetFileName = 'MyHTMLOutput' *-- Llamamos el reporte REPORT FORM cotizacion1 OBJECT ox *COPY FILE MyHTMLOutput TO "E:\Mis Documentos\MYHTMLOUTPUT.htm" loShell = CREATEOBJECT("Shell.Application") loShell.ShellExecute("E:\Mis Documentos\MYHTMLOUTPUT.htm") loShel = NULL RELEASE loShell *ELSE *MESSAGEBOX("No se pudo generar el archivo HTML",16,"Error") *ENDIF loHtml = NULL RELEASE loHtml
Nada men q pena molestarlo pero muestra error aca...
COPY FILE MyHTMLOutput TO "E:\Mis Documentos\MYHTMLOUTPUT.htm"
*-- Crear la clase listener
SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER'
ox = CREATEOBJECT('htmlListener')
*--Configuramos algunas porpiedades
ox.TargetFileName = 'MyHTMLOutput'
*-- Llamamos el reporte
REPORT FORM cotizacion1 OBJECT ox
COPY FILE MyHTMLOutput TO "E:\Mis Documentos\MYHTMLOUTPUT.htm"
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute("E:\Mis Documentos\MYHTMLOUTPUT.htm")
loShel = NULL
RELEASE loShell
*ELSE
*MESSAGEBOX("No se pudo generar el archivo HTML",16,"Error")
*ENDIF
loHtml = NULL
RELEASE loHtml
*-- Aseguramos que el HTML no existe--* *ERASE MyHTMLOutput.HTM *-- Crear la clase listener SET CLASSLIB TO HOME() + 'FFC\_REPORTLISTENER' ox = CREATEOBJECT('htmlListener') *--Configuramos algunas porpiedades ox.TargetFileName = 'MyHTMLOutput' *-- Llamamos el reporte REPORT FORM cotizacion1 OBJECT ox *COPY FILE MyHTMLOutput TO "E:\Mis Documentos\MYHTMLOUTPUT.htm" loShell = CREATEOBJECT("Shell.Application") loShell.ShellExecute("E:\Mis Documentos\MYHTMLOUTPUT.htm") loShel = NULL RELEASE loShell *ELSE *MESSAGEBOX("No se pudo generar el archivo HTML",16,"Error") *ENDIF loHtml = NULL RELEASE loHtml
Nada men q pena molestarlo pero muestra error aca...
COPY FILE MyHTMLOutput TO "E:\Mis Documentos\MYHTMLOUTPUT.htm"
Ohhhhhhhhhhhh no te preocupes! No es ninguna molestia jaja! Puedes preguntarme todo lo que quieras... que estoy aquí para ayudar! Hagamos algo... mira... a mi me funciona bien! Entonces... si keres, puedo disenar un proyecto sencillo, donde te muestre como se hace con un reporte, un form y una tabla... sencillito! Dame tu correo y mañana lo voy a hacer... y en la tarde o la noche, te lo envío! ¿Te parece? Así lo probasss e interactuas con el... para que podas analizarlo y tomar lo que necesites! ¿Qué dices?
Saludos! :D
Desde Managua, Nicaragua! :D :D :D
Que andes bien! :)
Saludos! :D
Desde Managua, Nicaragua! :D :D :D
Que andes bien! :)
Ok men muy agradecido...
[email protected]
[email protected]
- Compartir respuesta
- Anónimo
ahora mismo