Método 1: Con Html
Es una forma indirecta de conseguir realizar informes, pero si sabes html y css, te puede servir para conseguir buenos resultados.
Este método consiste en crear o usar una plantilla hecha en html, la cual la rellenamos con los datos con los cuales queremos hacer el informe, y podemos verlo en nuestro navegador o directamente hacer un pdf (mediante el programa wkhtmltopdf).
Vamos a hacer un ejemplo muy simple:
Construimos un nuevo proyecto, al que añadimos un textArea, con el nombre "TextArea1" y un boton al que llamaremos "ButtonImprimir".
Añadimos el siguiente código :
Public
Sub
ButtonImprimir_Click()
Dim
cadena As
String
cadena =
"<html><body>"
cadena &=
TextArea1.text
cadena &=
"</body></html>"
File.Save(User.home
&
"/texto.html",
cadena)
Exec ["wkhtmltopdf",
User.home
&
"/texto.html",
User.home
&
"/texto.pdf"]
Wait
Exec ["evince",
User.home
&
"/texto.pdf"]
End
Al ejecutarlo, si pulsamos el boton "imprimir", abriremos el pdf (texto.pdf) con evince (el visor que viene por defecto en gnome de pdf), obtendremos un salida como esta:
Simplemente se escribe lo que haya en el textarea.
Si escribimos en el textarea el siguiente código:
<h1>Hola</h1><br>
Esto es un texto de <b>prueba</b> de informe en html.</br>
El resultado del pdf obtenido es el siguiente:
Como veis es sencillo, sabiendo html realizar informes. Si además le añades hojas de estilos (css), prodeis conseguir mejores resultados.
Descarga del código fuente del ejemplo: enlace de descarga
Ejemplo de clase para imprimir resultados de consultas de bases de datos:
http://jsbsan.blogspot.com.es/2012/04/informehtml-crear-informes-rapidos-de.html
Nota:
Para instalar wkhtmltopdf:
$sudo apt-get install wkhtmltopdf
Nota: 24/7/2014 (new)
En algunas páginas html, da problema el wkhtmltopdf, para resolverlo podemos usar un plugin para firefox, que imprimen exactamente como sale en la pantalla del navegador.
Por ejemplo con Screengrab (fix version)
link: https://addons.mozilla.org/en-US/firefox/search/?q=screengrab&appver=28.0&platform=linux
Método 2: El objeto Printer
La forma más básica para imprimir en gambas, es usar la clase Printer.
Es parecido a dibujar en una clase drawingArea:
-->
Public
Sub
Printer1_Draw()
Dim
PRINT_MARGIN As
Float =
Paint.Width
/
Printer1.PaperWidth
*
10
Dim
docV As
String
docV =
TextArea1.Text
'texto a
escribir
Paint.Font
=
Font["Courier"]
Paint.DrawRichText(docV,
PRINT_MARGIN, PRINT_MARGIN -
(Printer1.Page
-
1)
*
(Paint.Height
-
PRINT_MARGIN *
2),
Paint.Width
-
PRINT_MARGIN *
2,
Paint.Height
*
Printer1.Count,
Align.TopNormal)
End
Y en el boton de imprimir:
-->
Public
Sub
ButtonImprimir_Click()
Me.Enabled
=
False
Inc
Application.Busy
Printer1.Print
Dec
Application.Busy
Me.Enabled
=
True
End
Captura de pantalla del ejemplo del objeto Printer, formulario y salida en impresora pdf:
Código Fuente: UsandoPrinter.0.0.1.tar.gz
Fuente: http://www.gambas-es.org/viewtopic.php?f=5&p=15905#p15905
Método 3: gb.report
El componente gb.report, se pueden diseñar gráficamente el contenido de la página del informe que hagamos:
Willicab, hizo en su blog un magnifico ejemplo de creación de reporte de bases de datos con gb.repot desde "cero". Os dejo la dirección url, para que lo podais consultar:
Fuentes:
http://willicab.gnu.org.ve/tutogambas-6-crear-reportes-usando-el-componente-gb-report-en-gambas3-12/
http://willicab.gnu.org.ve/tutogambas-7-crear-reportes-usando-el-componente-gb-report-en-gambas3-22/
Copia espejo:
willicab: gb.report 1 de 2
willicab: gb.report 2 de 2
ejemplo gb.report
Método 4: Clase ClassLatex
Esta clase es un intento por mi parte de añadir otra forma de crear informes, aprovechando la potencia de Latex, y la simplicidad de Gambas para poder programar informes (tanto de bases de datos, gridviews), como documentos completos (insertando imñagenes, destintos tipos de letras, tañamos, índices de contenido, bibliografía, pie de páginas, cabeceras y pies de paginas, etc.)
En esta entrada de mi blog podeis encontrar como usarla y el código fuente:
Fuente: http://jsbsan.blogspot.com/2013/01/creacion-de-informes-la-clase-latex.html
Ejemplo de documento que se puede generar:
Copia Espejo:
Pagina web: post de la clase classlatex
Código fuente: la clase classlatex 0.0.4.tag.gz
Nota:
Para usar la clase classlatex, tienes que tener el paquete pdflatex (por ejemplo viene en la instalación de texmaker)
Hola. Muy buen post.
ResponderEliminarHas usado el metodo report.print?
Cuando lo trato de usar me dice que hace falta informacion.
No, la verdad es que apenas he uso el gb.report. He encontrado muy poca información sobre este componente y pocos ejemplos (el de Willicab es el mejor), visita su blog, a ver si el te puede aclarar más cosas
Eliminarcomo agrego imagenes dentro del pdf
ResponderEliminar¿que metodo de impresion estas usando?, En esta entrada explico varios métodos para imprimir, en cada uno se hace de distinta manera el incluir imágenes.
Eliminarel de objeto printer pero solo paso el texto por que texto es de tipo string y ya he intentado con picture pero no sirve no pasa por favor necesito ayuda
Eliminar+Kenedy Cruz Miranda He hecho un ejemplo de impresion de imagenes y texto con printer, lo puedes ver en http://jsbsan.blogspot.com.es/2015/04/el-objeto-printer-imprimir-una-imagen-y.html
EliminarGracias Hermano!!! pense que no existia esa opcion por que colocaba dim imagen as picture y era image
EliminarYo estoy usando el método de impresión con latex y va de maravilla con la clase que tuviste a bien compartir. !!! Pero me surgió un problema: Al intentar imprimir una tabla de datos mediante TablaGridview. Solo imprime el contenido de la primer hoja. Si son mas de 61 filas, no aparece lo demás, no se si alguien podría ayudarme.
ResponderEliminar