FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Una Solución práctica para nuestros reportes !!!!!!!!!!!!!!!!!!
Buen dia caballeros
Con el permiso de los amigos moderadores, quisiera poner a disposición de todos una forma de realizar reportes en Delphi usando Qreports de una manera sencilla rápida y sin mucha complicación. Esta aplicación la desarrolle cuando hacia un programa que exigía muchos reportes y facilmente me llenaba de forms con diseñadores de reportes, asi que cogiendo ideas de algunos reportedores, hice esta aplicacion, que a mi juicio deberia estar encapsulada en una DLL y usarla sin problemas en nuestras aplicaciones. Se trata de un archivo Unit_frmPreview.dfm y su respectivo código en el archivo Unit_frmPreview.pas, es un reporteador que muestra un reporte con la interfaz personalizada y no la típica de qreports que esta en inglés, esto lo hice gracias a la guía de personalización del Qreports de Freire, ademas este form cuenta con propiedades adicionales para la gestión de reportes, todas por supuesto manipulables en tiempo de ejecución, las cuales enumero a continuacion <DELPHI> DataSet // especifico aquí el dataset del cual obtener la data Enlazado // de tipo boolean que indica si trabaja en modo enlazado o no True por defecto VerNroRegistros // true/false true: muestra en la parte inferior el nro de registros del reporte </DELPHI> asi mismo cuenta con los siguientes métodos <DELPHI> AddDetail(RotuloColumna, CampoColumna, anchoColumna, alineacion, formato)// //los dos últimos son opcionnales siendo la alineación por defecto //a la izquierda y la máscara o formato '' una cadena vacia // en rotuloColumna: String especificamos el titulo de la columna // en CampoColumna: especificamos el campo de la columna // por supuesto debe estar en el dataset que hayamos especificado // en la propiedad DataSet AgregaCampoSumar(campo, titulo)//Totaliza un 'campo' y le pone un //qrLabel de rotulo con eltexto especificado en 'titulo' SetLinea1(titulo1, titulo2, titulo3, contenido1, contenido2, contenido3) // pone una línea en la sección del titulo osea en la banda QRBand1 // con tres campos del tipo nombre: valor nombre: valor nombre: valor // si solo deseas poner un campo entonces en el resto pones cadenas vacias DisplayRango //muestra el rango de fechas: desde : __/__/__ hasta: __/__/__ //va en la segunda linea en la seccion del titulo VistaPrevia // muestra un preview del informe </DELPHI> Realmente no hay mucha programación lo que creo aqui es realmente util es la forma de crear reportes dinámicamente en ejecución, debo admitir que esta forma la estoy tomando de un reporteador que hacem muchisimo use encontre. tomando muchas cosas prentendí juntarlas en una y tener algo práctico para los reports Bien, para crear un reporte que muestre dos campos de un DataSet lo hacemos así: <DELPHI> var p: Tfrm_Preview; //variable del tipo frm_Preview begin p := Tfrm_Preview.Create(Self); p.TituloInforme := 'Personal de planta'; p.DataSet := Query1; // o cualquier descendiente de TDataSet p.AddDetail('Nombre Empl.','nombre',150); p.AddDetail('Sueldazo','sueldo',80,taRightJustify,'0.0'); p.VistaPrevia; //listo!!! end; </DELPHI> Pudiendo crear varias instancias del tipo del tipo frm_Preview y sin crear reportes en tiempo de diseño. En el Ejemplo que adjunto se pueden ver 4 tipos de reportes donde muestro otras opciones mencionadas anteriormente Hay un botón que dice Flexible el cual genera el reporte tomando los valores de configuracion de un DBGrid, es decir el ancho la alineacion el formato y el titulo de cada campo Reportes no enlazados a datos Lo primero poner la propiedad enlazado a False, Para estos el reporteador usa la matriz DatosRep de tipo string, que debe ser pública a la aplicacion para que el form que llama ponga datos en la matriz y el reporteador las lea y las muestre, esta es una matriz dinámica de dos dimensiones ponemos en la ultima columna el formato por el momento solo dispone de negrita N La verdad no domino programación de componentes, ya que seria ideal encapsular todo ello en un componente, claro depurandolo bien y agregando mas funcionalidades, incluso podriamos enriquecerlo para que pueda hacerce reportes maestro detalle. en el archivo que adjunto pongo dos forms uno es del reporteador y otro del ejemplo con todo el código fuente, el ejemplo usa un dataset de paradox y los componentes BDE pero trabaja con cualqueir de tipo ascendiente TDataSet (Zeos, Ado, IBX). Me gustaría enla medidaqeu fuese poible y con la ayuda de todos repotenciar e implementar bien esto ya a que a todos no ayudaría mucho ya que es altamente reutilizable. Agradecido de antemano por cualquier aporte, duda, u observación y esperando sea de utilidad este post me despido de momento con un fuerte abrazo.
__________________
Yo se que muchas veces te paso ESTO Última edición por david_uh fecha: 19-01-2008 a las 16:01:48. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿ La habilidad para digerir el conocimiento te la da la práctica o la experiencia ? | calogero | Debates | 5 | 28-02-2007 20:48:17 |
Solucion de proxy para jugar Halo 1 en red casera | mamcx | Redes | 2 | 25-09-2006 23:34:51 |
Un GRID para practica de ventas | firecode | OOP | 6 | 25-08-2006 22:13:02 |
solucion parche para access violation | chilenauta | Impresión | 1 | 15-12-2004 03:24:17 |
Solucion para mascaras de dbedit | nefy | Conexión con bases de datos | 1 | 04-12-2003 00:41:29 |
|