LazReport Documentation/es

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es)

PRESENTACIÓN

LazReport es un grupo de componentes que agregan a las aplicaciones la capacidad de generar reportes, usa un diseñador visual para crear reportes basados en bandas e incluye un mecanismo de reportes con previsualizador que ademas incluye un interprete para ejecutar guiones de usuario. El diseñador de reportes puede ser invocado en tiempo de ejecución

LINCENCIA

LazReport se origina en FreeReport 2.32 y gracias a la compañía Fast Reports Inc. esta disponible bajo la licencia LGPL modificada, la misma licencia que usa la libreria LCL de Lazarus. Para mayor información, vea los archivos lazreport/ license.txt, license-rus.txt y licence-lazreport.txt

AUTORES

FreeReport fué creado por la compañía Fast Reports Inc. La adaptación inicial del código a LazReport fue hecha por Olivier Guilbaud, para mayor infomación visite el sitio original de LazReport en SourceForge http://lazreport.sourceforge.net/. La integración en Lazarus y actual encargado del proyecto es Jesús Reyes Aguilar. LazReport no podría haber llegado a su estado actual sin la colaboración de muchos otros desarrolladores, vea el archivo lazreport/doc/contributors.txt

INSTALACIÓN

Para Instalar LazReport en Lazarus:

  1. Abrir el paquete LazReport Package. Menú: Componentes->Abrir archivo de paquete (.lpk)...
  2. Abrir archivo components/lazreport/source/lazreport.lpk
  3. Instalar

La siguiente vez que Lazarus sea iniciado, debería mostrar una separador LazReport en la paleta de componentes.

DOCUMENTACIÓN

El Manual del Desarrollador y La Guia del Usuario específicas para LazReport están aún por escribirse, mientras tanto, la mayoría de las funciones de LazReport están descritas en el Manual del Desarrollador de FreeReport (vea lazreport/doc/fr_eng.sxw en la instalción de Lazarus), Algunas cosas dependientes de la plataforma descritas allí, como objetos OLE, no están implementados en LazReport. También algunos ejemplos o imágenes hacen referencia a ejemplos que están disponibles solamente en Delphi.

Hasta que la documentación especifica para LazReport sea elaborada, ésta página wiki será usada como repositorio de documentación, quizás en el futuro la documentación faltante pueda ser generada desde aquí. Se alienta a los usuarios a que agreguen temas que sientan haya necesidad de documentar, incluso si la descripción o contenido de dichos temas deba ser proporcionado por otros usuarios.

Operadores

Los siguientes operadores están soportados:

Tipo Operador Operador
Logicos >, <, BUT, AND, NOT, =, < >, >=, <=
Aritméticos -, *, +, MOD, /

Funciones

Las siguientes funciones están disponibles:

Funciones de agregación

SUM(<X>) 
Devuelve la suma de valores representados por <X>, que generalmente es un campo de datos.
AVG(<X>) 
Devuelve el promedio de los valore de <X>.
COUNT  
Cuenta la cantidad de ocurrencias o registros.
MIN(<X>) 
Devuelve le menor valor de todos los posibles valores de <X>.
MAX(<X>) 
Devuelve le mayor valor de todos los posibles valores de <X>.

Funciones de formateo

FORMATDATETIME(<X>, <Y>) 
Devuelve una cadena con el valor <Y> (de tipo TDateTime) en el formato <X>. <X> usa la sintaxis default de los formatos de Lazarus.
FORMATFLOAT(<X>, <Y>) 
Devuelve una cadena con el valor numérico <Y> en el formato <X>. <X> usa la sintaxis default de los formatos de Lazarus.
STRTODATE(<X>) 
Devuelve la representación en fecha (tipo TDateTime) de la cadena <X>. <X> debe estar formateada correctamente.
STRTOTIME(<X>) 
Devuelve la representación en tiempo (tipo TDateTime) de la cadena <X>. <X> debe estar formateada correctamente.

Funciones de cadenas

LOWERCASE(<X>) 
Devuelve <X> pasada a minúsculas.
UPPERCASE(<X>) 
Devuelve <X> pasada a mayúsculas.
NAMECASE(<X>)  
Devuelve <X> con una mayúscula inicial en cada palabra.
COPY(<X>, <Y>, <Z>) 
Es similar a la función "copy" de Pascal: devuelve la porción de la cadena <X> desde la posición <Y> contando <Z> letras.

Funciones numéricas

FRAC(<X>)  
Devuelve la parte fraccionaria del número real <X>.
INT(<X>)  
Devuelve la parte entera del número real <X>.
ROUND(<X>) 
Devuelve el número real <X> redondeado al entero inmediato superior.
STR(<X>)  
Devuelve una cadena representando al número <X>.

Funciones lógicas

IF(<X>, <Y>, <Z>) 
Devuelve <Y> si la expresión <X> es verdadera. Si es falsa, devuelve <Z>.

Agregando tus propias funciones

Aunque probablemente no se necesite demasiado, LazReport te permite definir tus propias funciones. Ver LazReport Documentation#Documentation para las funciones ya existentes. Para agregar tus propias funciones:


Filtros de Exportación

Los filtros de exportación de LazReport se invocan usando el siguiente código.

 if TheReport.PrepareReport then
    TheReport.ExportTo(TfrHTMExportFilter, 'exportedfile.html');

Donde TheReport contiene una instancia del componente TfrReport. En este ejemplo se usa TfrHTMExportFilter para generar un archivo llamado 'exportedfile.html'. No es necesario preparar de nuevo el reporte si éste ha sido preparado con anterioridad. Para poder hacer uso de TfrHTMExportFilter el programador debe arrastrar y soltar un componente TfrHTMExportFilter desde el separador LazReport en la paleta de componentes, hacia el Diseñador de Formularios. Como una alternativa se puede añadir manualmente lr_e_htm a la clausula "uses" de la unidad.

A partir de la versión 0.9.6 de LazReport el soporte de filtros de exportación ha sido mejorado, ahora los filtros de exportación pueden tomar parámetros que los usuarios pueden manipular ya sea cambiando los valores directamente o presentando al usuario final alguna interfaz de usuario. Para poder hacer cambios en los parametros, el programador debe crear un manipulador para el evento TfrReport.OnExportFilterSetup, disponible al seleccionar el componente TfrReport en el separador "Eventos" del Inspector de Objetos.

El método manipulador del evento OnExportFilterSetup (de tipo TExportFilterSetup) toma un parámetro "sender" del tipo TfrExportFilter, para poder usar este tipo se debe añadir la unidad lr_class.pas a la clausula uses de la unidad. Todas la clases del tipo ExportFilter comparten este evento y el programador debe hacer un type-cast a la clase del filtro de exportación deseado, por ejemplo:

 if sender is TfrHTMExportFilter then
 begin
  TfrHTMExportFilter(sender).UseCSS := false;
 end;

A continuación una descripción de los filtros de exportación disponibles.

TfrExportFilter

    Esta es la clase báse de todos los filtros de exportación, y defines dos propiedades que pueden ser modificadas por el desarrollador en el evento OnExportFilterSetup:

  • BandTypes: TfrBandTypes. Se trata de un conjunto de tipos de bandas, solo las bandas incluidas en este conjunto son efectivamente exportada, el resto de las bandas presentes en el informe se ignorarán. Usando esta propiedad un programador podría, por ejemplo, exportar sólo el contenido de la banda principal, dejando los títulos, encabezados y pies de página fuera de la salida exportada así:
 sender.BandTypes := [btMasterData];

de forma predeterminada, todas las bandas son procesadas pero TfrCSVExportFilter cambia esta propiedad para procesar únicamente la cabecera principal, las cabeceras de columna y las bandas principales de datos.

  • UseProgressbar: boolean. Esta propiedad activa o desactiva la visualización de la barra de progreso del filtro de exportación. La propiedad tiene el valor predefinido como falso.

TfrTextExportFilter

    Hereda de: TfrExportFilter <- TfrTextExportFilter
localizado en el archivo lr_e_txt.pas incluido en el paquete LazReport.

   Es la clase base de los filtros de texto. Este filtro de exportación trata de hacer una representación en texto de un informe gráfico mediante el ajuste de las coordenadas gráficas originales en una rejilla más gruesa donde cada unidad es un punto de la fuente UsedFont, dependiendo del valor de UsedFont, la salida exportada será más o menos parecida al diseño de objetos en el informe gráfico.

   Además de las propiedades heredadas de la clase TfrExportFilter, TfrTextExportFilter define dos propiedades más.

  • UsedFont: integer. Esta propiedad define las dimensiones en puntos de la rejilla de salida, los objetos en el informe se colocan en esta red recalculando las posiciones x e y. El valor predeterminado es 10, si el usuario cambia este valor a 0 o menos, LazReport mostrará automáticamente un cuadro de diálogo preguntando por el valor UsedFont, si el usuario introduce un valor no válido, se utilizará el valor 10. Ee utiliza el valor 10 porque es el valor que mejor se adapta a los informes habituales que se hacen con las fuentes de 10-13 puntos.
  • UseBOM: boolean. Esta propiedad permitirá la inclusión de caracteres UTF-8 con Byte Order Mark al comienzo de la salida de texto (ver BOM) que es requerido por algunos editores/visores, ya que BOM no se utiliza de forma predeterminada.

TfrCSVExportFilter

inheritance: TfrExportFilter <- TfrTextExportFilter <- TfrCSVExportFilter
located in: lr_e_csv.pas file included in LazReport package.

This special text export filter produces Comma Separated Value output (actually any character can be used as separator), it differs from it's ancestor in that it doesn't try to create text layout representation of graphical report, instead, for each record output it tries to guess the fields order from the source report, it then produce a list of fields using a separator defined by the user. Beside the properties inherited from its ancestor classes it defines some properties to customize the generated output.

  • QuoteType:TfrQuoteType. This property controls whether the generated field value should be wrapped using specified quote char or not. Possible values are qtNone, qtQuoteChar and qtAutoQuote. With qtNone the field value is never wrapped, qtQuoteChar will use the character specified by property QuoteChar, any instance of QuoteChar already present in field value is duplicated. qtAutoQuote first try to find if any instance of separator or QuoteChar is already present in field value, if affirmative it behaves as if qtQuoteChar has been specified, on the contrary case, the field value is not wrapped just as if qtNone has been specified. QuoteType property is set to qtQuoteChar by default.
  • QuoteChar:TUTF8Char. This holds the character to be used to wrap the field value in case of QuoteType of value qtQuoteChar has been specified or deduced if qtAutoQuote is set. Any instance of this character in the field value will be duplicated. by default QuoteChar is set to the " character.
  • Separator:TUTF8Char. This is the character used to separate the fields in each record, by default is set to the ',' (COMMA) character but any UTF-8 valid character could be used. Some CSV files are actually TAB separated files, to get this, set Separator:=#9;

The CSV exporter do not use the inherited UsedFont property value so any value set will be ignored. With default property values, TfrCSVExportFilter will produce Excel compatible files, the only caveat is that Excel will not recognize the file as UTF-8 encoded. To force Excel to recognize the encoding automatically, set the property UseBOM to true.

TfrHTMExportFilter

inheritance: TfrExportFilter <- TfrTextExportFilter <- TfrHTMExportFilter.
Located in: lr_e_htm.pas in LazReport package.

This special text export filter produces valid "HTML 4.01 Transitional" output. Currently it defines only one additional property.

  • UseCSS:boolean. This property controls whether or not the produced output include CSS information, this property is set to true by default.

INICIO RÁPIDO

Reporte de Registros de un Dataset

En este ejemplo diseñaremos un reporte para imprimir registros desde un componente derivado de TDataset (TDbf, TSQLQuery, TZTable, TZQuery, Etcetera.). Primero se supone que LazReport ya esta instalado y que el componente dataset, llamado "Dbf1" aquí, ya esta configurado y activo.

  1. Del separador LazReport en la paleta de componentes, seleccionamos el componente TfrReport y lo arrojamos en el Diseñador de Formularios, será nombrado automáticamente "frReport1".
  2. Colocar también un componente TfrDbDataset, será nombrado "frDbDataset1"
  3. Colocar un componente TButton, será nombrado "Button1", cambie su nombre a "btnShowReport"
  4. Con el componente frDbDataset1 seleccionado, en el Inspector de Objectos seleccione "Dbf1" en la propiedad "Dataset"
  5. Ahora seleccione frReport1 y usando el mismo procedimiento enlace su propiedad "Dataset" al componente "frDbDataset1":

    lrformsetup.png

  6. Haga clic con el botón derecho sobre frReport1 y del menú seleccione "Diseñar Reporte". Se mostrará El Diseñador de Reportes de LazReport.
  7. En la ventana del Diseñador de LazReport, seleccione el menu Herramientas->Herramientas->Insertar Campos DB. El diálogo "Insertar Campos" aparecerá.
  8. En la lista de campos seleccione los campos que desee que aparezcan en el reporte
  9. Seleccione las opciones "Incluir Encabezados" y "Incluir Bandas", el resultado debería ser similar a esto:

    lrinsertfieldsdialog.png

  10. Presione el botón "Aceptar", LazReport colocara bandas y campos en el reporte de una formasimilar a la siguiente:

    lrreportwithfields.png

  11. Presione el boton de Vista Previa lrprevieweye.png, LazReport mostrará entonces una vista previa del reporte:

    lrpreviewreport.png

  12. Guarde el reporte usando el menú Archivos->Guardar, seleccione el mismo directorio del proyecto actual y guardelo como listing1.lrf
  13. Cierre el Diseñador de Reportes.
  14. Haga doble clic sobre el botón btnShowReport y teclee el siguiente código:
  frReport1.LoadFromFile('listing1.lrf');
  frReport1.ShowReport;

Informar sobre errores

   Por favor informa sobre los problemas utilizando el seguimiento de errores (bugtracker) de lazarus/free pascal, en el proyecto: "Lazarus Packages", Categoría "LazReport"; para remitir parches por favor, crea un informe de error y adjunta el parche al mismo.