Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 19-01-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Wink 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

Código 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

asi mismo cuenta con los siguientes métodos

Código 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

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í:

Código 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;

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.
Archivos Adjuntos
Tipo de Archivo: zip DeviReporter.zip (21,0 KB, 100 visitas)
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #3  
Antiguo 19-01-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Muchas gracias por facilitar el código con el ejemplo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 19-01-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Para que compile con D7 hay que eliminar las referencias que pongo en negrita.

Código Delphi [-]
{*******************************************************}
{                                                       }
{       Gestor de reportes planos                       }
{       Objeto común de datos DATASET                   }
{                                                       }
{       David Untama Huarachi                           }
{                                                       }
{       e-mail: david_uh@hotmail.com                    }
{       web: http://daviduh.awardspace.com              }
{                                                       }
{*******************************************************}
unit Unit_frmPreview;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  StdCtrls, ExtCtrls, Buttons,  QRPrntr, ComCtrls, QRCtrls,
  QuickRpt, DB, ZAbstractRODataset, ZDataset, ZConnection;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 19-01-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
de nada, mi deseo es que podamos especializar un control de reportes a partir de esta idea
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #6  
Antiguo 19-01-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
uyy se me escapo es que como la aplicacion usaba zeos se qeudaron las referencias gracias por el dato
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #7  
Antiguo 04-04-2010
cuan cuan is offline
Registrado
 
Registrado: feb 2008
Posts: 2
Poder: 0
cuan Va por buen camino
problema con la aplicacion

Buen Dia Amigo oiga Soy nuevo el delphi y baje la aplicacion solo que estoy usando Windows 7 y el archivo Zipeado no trae los archivos .PAS y no me permite ver el codigo cual puede ser la solución? mi correo es zell_idp@ yahoo.com
Responder Con Cita
  #8  
Antiguo 04-04-2010
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
No me gustan los previus
Responder Con Cita
  #9  
Antiguo 04-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por cuan Ver Mensaje
Buen Dia Amigo oiga Soy nuevo el delphi y baje la aplicacion solo que estoy usando Windows 7 y el archivo Zipeado no trae los archivos .PAS y no me permite ver el codigo cual puede ser la solución? mi correo es zell_idp@ yahoo.com
Cita:
Archive: /home/antonio/Escritorio/Descargas/DeviReporter.zip
testing: DeviReporter/aseo.bat OK
testing: DeviReporter/personal.DB OK
testing: DeviReporter/Unit_DM.dfm OK
testing: DeviReporter/Unit_frmPreview.dfm OK
testing: DeviReporter/Unit_frmPrueba.dfm OK
testing: DeviReporter/Reporteador.dpr OK
testing: DeviReporter/Unit_DM.pas OK
testing: DeviReporter/Unit_frmPreview.pas OK
testing: DeviReporter/Unit_frmPrueba.pas OK
testing: DeviReporter/Unit_vars.pas OK
testing: DeviReporter/Reporteador.res OK
testing: DeviReporter/ OK
No errors detected in compressed data of /home/antonio/Escritorio/Descargas/DeviReporter.zip.
Esos son .pas
Responder Con Cita
  #10  
Antiguo 04-04-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Gracias David, sin duda una solución sencilla y práctica. Las mejores soluciones no tienen que ser complejas o enormes. Lo que cuenta es la idea. Me preguntaba si la estas liberando con algún tipo de licencia, lo cual te recomendaria para que no se pierda la escencia de tu trabajo y las colaboraciones de otros hagan que tu idea inicial se mantenga y crezca. Puede ser Open Source o GNU-GPL. Yo me apunto para hacer la version compatible con controles DevExpress, en cuanto lo tenga te lo mando y lo publico (Sería DeviReportes 4 DevExpress).

Yo tengo código por cierto para hacer los clásicos catálogos, es decir, un formulario que muestra una rejilla con na lista y trae lo necesario para hacer CRUD, mediante otro formulario se edita el registro y se guarda. El problema es que como trabajmos con Zeos y Devexpress así como está no les serviría a muchos pero si gustan lo publico para que le hagan los cambios pertienentes.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #11  
Antiguo 04-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por AzidRain Ver Mensaje
[..] Me preguntaba si la estas liberando con algún tipo de licencia, lo cual te recomendaria para que no se pierda la escencia de tu trabajo y las colaboraciones de otros hagan que tu idea inicial se mantenga y crezca. Puede ser Open Source o GNU-GPL. Yo me apunto para hacer la version compatible con controles DevExpress, en cuanto lo tenga te lo mando y lo publico (Sería DeviReportes 4 DevExpress).[..]
DevExpress es todo lo contrario a open source y gpl
Responder Con Cita
  #12  
Antiguo 05-04-2010
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
Cita:
Empezado por AzidRain Ver Mensaje
Gracias David, sin duda una solución sencilla y práctica. Las mejores soluciones no tienen que ser complejas o enormes. Lo que cuenta es la idea. Me preguntaba si la estas liberando con algún tipo de licencia, lo cual te recomendaria para que no se pierda la escencia de tu trabajo y las colaboraciones de otros hagan que tu idea inicial se mantenga y crezca. Puede ser Open Source o GNU-GPL. Yo me apunto para hacer la version compatible con controles DevExpress, en cuanto lo tenga te lo mando y lo publico (Sería DeviReportes 4 DevExpress).

Yo tengo código por cierto para hacer los clásicos catálogos, es decir, un formulario que muestra una rejilla con na lista y trae lo necesario para hacer CRUD, mediante otro formulario se edita el registro y se guarda. El problema es que como trabajmos con Zeos y Devexpress así como está no les serviría a muchos pero si gustan lo publico para que le hagan los cambios pertienentes.

Me interesa la versión para DevExpress....espero lo puedas publicar amigo AzidRain y tambien tu formulario para hace CRUD. Gracias por adelantado.
Responder Con Cita
  #13  
Antiguo 05-04-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola a todos.

Este formulario lo adjunto a todos mis proyectos. Permite lo mismo que david comenta, generar listados a tutiplén simplemente haciendo una llamada a la función generar listado. Sirve para todo tipo de listados vamos a llamarlos genéricos. Cómo suelo hacerlo: pongo un formulario con todas las consultas que se me ocurran y un botón para imprimirlas.
Huelga decir que se puede llamar desde cualquier formulario en el que se incluya en uses la unit correspondiente.

Esta es la llamada a la función que generar los listados.

FrmQuick.GenerarListado( Mostrar, Dataset, TituloListado, Empresa,
Condicionesfiltros,
CamposTotales,GrupoTotalesRuptura, anchocampos;

siendo
Mostrar boolean siq quieres que salga la ventana de selección o directamente el informe
Dataset el origen de los datos, en este caso MDOQuery
TituloListado el string con el título
Empresa string con el nombre de la empresa
Condicionesfiltros string con los filtros del listado. Fecha desde hasta, datos del clinte tal o cual, ...
Campostotales string campos que queremos totalizar separados por ;
grupoTotalesRuptura string campos por los que queremos romper y mostar totales separados por ;
anchocampos string anchos que queremos en los campos separados por ;

Qué se puede hacer. Convertir en un objeto el listado en lugar de una función y darle otro aspecto.

Esper que a alguien le valga.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Reporteador.zip (94,4 KB, 40 visitas)
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #14  
Antiguo 05-04-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Thumbs up Fantastica idea

Gracias, es un problema la interfaz de QReport para los usuarios convencionales.
Es una gran idea, espero le den seguimiento.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 19:09:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi