lunes, 6 de abril de 2015

Demostración de Delphi y FastReport

Hola,
Aquí les dejo una pequeña demostración de como hacer un reporte en delphi. espero les guste


Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq

jueves, 1 de noviembre de 2012

7) Maestro - Detalle

Esta vez les mostrare como realizar un reporte maestro - detalle, este tipo de reporte consiste en mostrar registros de dos tablas una tabla principal conocida como "maestro" y una tabla que depende sus registro la tabla principal conocida como  "detalle". Que por lo general tienen un campo en común por medio del cual establecen la relación de sus registros.


Para trabajar usaremos la una base de datos de access que la encontramos en la demo de fastReport la cual podemos descargarla aqui.

Instalamos la demo, lo que contiene este demo es un proyecto ya compilado para probar los diferentes reportes que podemos hacer con esta maravillosa herramienta.

En mi caso se instalo en "C:\Program Files (x86)\FastReports\FastReport 4 Demo" en esta carpeta encontraremos una base de datos de access llamada "demo.mdb".

En esta tabla encontramos las siguientes tablas y su relaciones. Para nuestro ejercicio usaremos las tablas "Customer" y "Orders". La tabla "Customer" sera la tabla maestro y la tabla "orders" es la detalle.



En delphi tengo listo lo siguientes controles, necesitare los objectos Dataset y los FrxdbDataset por cada tabla. asi conectamos los FrxdbDataset con los objectos ado por medio de la propiedad dataset.
Recuerden siempre modificar la propiedad UserName donde escribimos aque tabla estamos haciendo referencia.  Por ejemplo frxDBorders su propiedad UserName sera "Orders"



Ahora entramos al editor de fastreport y agregamos los dataset.





Ahora procedemos a agregar la bandas , usaremos la Master Data y Detail Data



Nos aparecerá una ventana donde podemos seleccionar cual sera nuestra tabla maestra y seleccionamos la tabla customer.



Hacemos lo mismo con la tabla Detail Data y seleccionamos la tabla Orders




Procedemos a agregar la banda header, esta la podemos encontrar en el mismo listado de opciónes donde agregamos nuestras bandas MaterData y DetailData. Usaremos la banda header para colocar las etiquetas de nuestro reporte y comenzamos el diseño.




Al final nos quedara así nuestro reporte.




Recuerden siempre poner sus comentarios, pues siempre es bueno conocer su opinión.





Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq

jueves, 30 de agosto de 2012

6-) Agrupar Datos


Hola, regreso después de un buen tiempo, eh estado bastante ocupado, mi hijo ah comenzado la escuela y eso me mantiene mas ocupado.

Bueno voy a los que les interesa, el tema de hoy es como hacer un reporte que pueda agrupar nuestra información por grupos, en nuestro caso deseamos ver las transacciones por cada cliente. para esto realice una consulta con los siguientes datos.

Cliente Transacion Documento Total
Adrian Guzman Venta 2388 L. 5,000.00
Anacleto Rodriguez Abono 1056 L. 1,500.00
Miguel Marco Gol Venta 2387 L. 150.00
Miguel Marco Gol Venta 2386 L. 600.00
Plutarco Telemaco Hernandez Venta 2389 L. 6,000.00
Plutarco Telemaco Hernandez Venta 2385 L. 930.00
Ramon Calavera Calva Abono 1057 L. 3,000.00
Ramon Calavera Calva Venta Anulada 1867 L. 25.00
Ramon Calavera Calva Venta 2399 L. 25.00

como pueden observar, la información esta ordenada por el cliente, esto es importante, porque siempre debemos ordenar nuestros datos por medio del campo que seamos utilizar para agrupar la información.

Para nuestro ejercicio usaremos unos controles mas en nuestro DataModulo un AdoQuery, FrxDBDataset y FrxReport. La objecto FrxDbTransaciones cambiaremos la propiedad "username" al valor "Transaciones"




Ahora procedemos a crear el reporte, utilizaremos el wizar primero, le damos doble clic en RptTransaciones
despues nos aparece la interface de fastreport, le damos clic en el menu File->new(ver siguiente imagen)




Despues no aparece un cuadro de dialogo para usar el wizard , seleccionamos "Transaciones" como dataset



Ahora seleccionamos los campos que componen nuestro reporte(ver siguiente imagen)


Seleccionamos el campo por el cual deseamos agrupar, en nuestro caso es cliente (ver siguiente imagen)


Le damos "next"  dos veces y seleccionamos la opciones que preferimos. tendremos nuestro reporte así.
Si observamos nuestro reporte tiene dos bandas que son nuevas para nosotros la banda "GroupHeader" que esta señalada en la imagen por la fecha verde y la banda "Groupfooter" que es señalada por la flecha roja.

La banda "GroupHeader" es la banda que define como se agrupan los datos, esta banda se usa generalmente para poner el dato que se agrupa en este caso, el nombre del cliente.

La banda "GroupFooter" es usada generalmente para totalizar la información por cada grupo.

Si damos una vista previa nuestro reporte se ve así ahora.



La banda "GroupHeader" es la encargada de imprimir el nombre de cada cliente y agrupar sus datos.
Bueno y como agrupa los datos la banda "GroupHeader"?. Esta banda utiliza un expresión lógica para esto. para acceder a esta expresión solo le damos doble clic a la banda "GroupHeader" y aparecerá la siguiente ventana.




La fecha en rojo indica como se agrupara nuestro reporte, se selecciona el Dataset y luego el campo, en nuestro caso es el campo cliente.

La fecha verde indica la opciones que tenemos disponibles en los grupos, las cuales detallare breve mente

Keep group together : nos permite siempre mantener unido en una sola hoja tanto lo que imprime la banda "groupheader" y la banda "masterdata"

Start new page: si activamos esta opción, lo que pasara es que cada grupo comenzara con una hoja nueva

Drill-Dow: esta es muy interesante con esta podemos interacturar con nuestro reporte como si fuera un treeview o algo asi. podemos expandir o contraer la información.

ahora totalizaremos , tomamos la banda "groupfooter" la hacemos mas ancha y colocamos un objecto
de texto, y aplicamos un subtotal asi como lo hicimos aquí.

el resultado sera el siguiente.


Espero que sea de utilidad, hasta la próxima.





Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq

jueves, 5 de julio de 2012

5-) Formato condicional en FastReport(Parte 2)

Formato condicional en FastReport(Parte 2)

Ahora bien, continuamos con los formatos condicionales, que tal, que se nos presenta un caso un poco mas complicado.
Nuestro cliente quiere ver los saldos en varios colores. y los quiere ver de esta manera:
Saldos de menores de 5000 en verde
Saldos que entre 5000 y 8000 en naranja
Saldos mayores de 8000 en rojo

Para que este mas claro miren la siguiente imagen


Para este ya tendremos que programar un poco, FastReport es un diseñador de reportes potente que nos permite implementar código en nuestro reportes y variar los resultados de nuestros reportes.

El paradigma de programación siempre es el orientado a objecto, usando propiedades y eventos.
Los script que soporta son los siguientes:
  1. PascalScript
  2. C++Script
  3. BasicScript
  4. JScript
En nuestro caso usaremos PascalScript y primero que conoceremos es saber donde podemos codificar.
Usaremos para nuestro propósito el evento AfterData del objecto "memo12" que es de la clase "TfrxMemoView". veamos la siguiente imagen para ubicarnos.



La fecha rojo indica donde esta el objecto que deseamos usar, le damos clic. Ahora fijemos la mirada en la fecha verde, esa flecha verde esta apuntando a una pestaña llamada "Events" en la ventana "Object Inspector". la pestaña "events" muestra los eventos del objecto seleccionado.
En nuestro caso usaremos el evento "OnAfterData" este evento se ejecuta después que el objecto a obtenido la data y esto sucede antes de imprimir dicha data.
Ahora observemos la fecha azul, esta apuntando la misma linea del evento "OnAfterData" pero un poco mas a la derecha, donde no hay texto, en ese punto de damos doble clic.


No mostrara el editor de código, la fecha roja indica las pestañas que nos sirven para poder ver de forma rápida el diseño del reporte o regresar rápidamente al código. La pestaña "Page1" nos regresa a donde estábamos y la pestaña "Code" a la que vemos en la imagen

Si observamos la fecha verde, "fastReport" nos creo el cuerpo del procedimiento que se ejecutara cuando ocurra el evento.



La fecha azul es el cuerpo principal, pero no lo usaremos esta vez.


Ahora agregaremos este codigo, basados en los que explicamos al principio.

       if value > 8000 then
       memo12.font.color:=clRed
       else if (value >= 5000) and  (value <= 8000) then
       memo12.font.color:=$000080FF          
       else if value < 5000 then
       memo12.font.color:=clGreen;
Tendríamos que verlo así:


Como pueden observar el codigo usa la expresion "value" para comparar el dato que obtuvo el objecto y lo compara con estos tres criterios

Saldos de menores de 5000 en verde
Saldos que entre 5000 y 8000 en naranja
Saldos mayores de 8000 en rojo
Observe que "Memo12" es el objecto que cambios el color de sus letras, Atraves del miembro "Font" y su propiedad "Color"

El color que usamos en el caso que comparamos entre 5000 y 8000, usamos el valor hexadecimal, este valor lo podemos encontrar usando el dialogo que usamos para ver los colores. 

Espero les sirva y espero siempre sus comentarios.
Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq

miércoles, 27 de junio de 2012

4-) Formato condicional en FastReport(Parte 1)


Formato condicional en FastReport (Parte 1)


Hola amigos ahora aprenderemos como hacer que nuestro reporte aplique formatos(tipos de letras y colores) según el valor presentado en nuestro reporte. 
continuamos con nuestro reporte de clientes, la idea es que los clientes que tengan un saldo superior a 10,000.00 estén marcados en color rojo.

entramos a la interzas de fastrepor y le damos doble clic en el control "edit Text" que muestra los valores de saldo. Ver imagen.



Al darle doble clic entramos a la siguiente ventana y le damos clic en la pestaña "HighLight"



Ahora procedemos a crear la condición, la fecha roja(ver siguiente figura) nos indica la casilla donde pondremos nuestra condición, en nuestro queremos que pinte de rojo el texto cuando, el saldo es superio a 10,000. La expresión "value" hace referencia al valor del saldo.

La flecha verde(ver siguiente figura), en esta parte configuramos el formato del texto
La flecha azul, es para el color de fondo.

Ahora solo le damos clic al boton de ok.


El resultado final es el siguiente, como observan en la siguiente imagen tenemos dos clientes que su saldo sobre pasa los 10,000.00. Por lo tanto fueron pintados en color rojo.



Gracias por su seguir mi blog, por favor comenten. es importante para mi saber su opinión y saber como voy Cualquier sugerencia o reconocimiento es bienvenido.






Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq

miércoles, 20 de junio de 2012

3-) Parámetros en FastReport



Parámetros en FastReport 

En esta entrega estaremos hablando como pasarla cadenas de texto a nuestros reportes. Esto es útil cuando queremos que algunos títulos en nuestros reportes sean modificados por nuestros programas.
Bueno ahora continuamos con nuestro proyecto,  ingresamos al diseñador de reportes dándole doble clic al objecto RptClientes.



Tendremos que tener a la vista la interfaz de FastReport, que seria así:



Ahora procedemos a modificar el objecto Edit text de la barra de titulo(ReportTitle)


Le damos doble clic en "report". Como este es un objecto Edit Text que esta a todo lo ancho de la barra, nos aparecerá la siguiente ventana y modificamos su contenido.


Le damos ok y nos quedara así:


Lo que esta entre corchetes "[ ]", es para indicar que es uno parametro o un campo de nuestras tablas.
Ya tenemos todo listo en FastReport, procedemos a cerrarlo y nos vamos a la parte de nuestro formulario donde llamamos al reporte. en nuestro caso en el evento clic de nuestro botón.



Ahí dentro del evento clic, nuestro codigo quedaría así:

procedure TForm2.Button1Click(Sender: TObject);
begin
      With DmTable do
      begin
            {asignamos el valor del parametro}
            RptClientes.Variables.Variables['titulo']:=QuotedStr('Empresa ACME S.A.');
            {ejecutamos el reporte}
            RptClientes.ShowReport;
      end;
end;


El resultado final seria así:



Bueno, ess, ess, ess, eso todo amigos :), como ven poco código y facilito. 

Espero sus comentarios, gracias por entrar a mi blog.



Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq

martes, 5 de junio de 2012

2-) Bandas y totales en FastReport


Hola amigos.


Estare explicando como podemos hacer que nuestro fastReport empieze a totalizar nuestro reportes
Siempre estamos trabajando con nuestro proyecto, asi que entreamos al datamodule que hemos creado y le damos clic en el objecto RptClientes para que ejecute la interfaz de fastReport

 

Para hacer totales en un reporte necesitamos agregar una banda nueva  y usamos la barra de herramienta.


La banda que agregaremos es la banda Report summary, ver siguiente imagen



 El resultado que tenemos, es un reporte con 5 barras, es importante saber para sirve cada una de la barras, la siguiente imagen la describe rapidamente.

Voy describir con mas detalle cada una de ellas:

ReportTitle(Barra de Titulo): esta aparece una sola vez , es util para mostra el titulo de nuestro reporte, direcciones, telefonos o casosa asi.

PageHeader(Encabezado de pagina): El contenido de esta aparacer cada vez que se imprime una hoja, es util para colocar los encabezados de nuestras columnas o otros datos que deseamos ver en cada hoja del reporte.

MasterData(maestro de datos): esta es la encargada de mostrar los datos principales del reporte, ose los registros de nuestra tabla o consulta.

ReportSummary(banda de totales): es para mostrar el total de algun valor en nuestro reporte. el contenido aparece una sola ver y es al final del reporte. Siempra estara anter de la banda PageFooter

PageFooter(PageFooter): es el pie de pagina, el contenido de esta barra o banda aparecera en cada pagina en la parte mas inferior de la pagina, esta es la ultima siempre. Es util para mostrar el numero de pagina o hora de impresion, un eslogan

Ahora procedemos a totalizar, en nuestro caso totalizaremos el saldo de nuestro clientes. para esto agregaremos un objecto "Edit Text" en la banda ReportSummary, dandole clic en la barra y luego dibujando un cuadrito en la ubicación donde queremos nuestro total. ver siguiente imagen.




 Luego de esto nos parece una ventana, para configurar el campo que queremos totalizar. le damos clic en el símbolo de sumatoria.






Entonces nos parecera la siguiente ventana, donde seleccionares el tipo de funcion, el dataset y el campo y le damos ok.





 Se genera un expresion para el objecto "Edit Text", esta expresion que esta dentro de corchetes"[ ]" esta indicando un operacion, o hace referencia aun campo o Field o a un parametro.











Ahora les damos formato en la pestaña formato seleccionos "number" y luego ok



ya con eso terminamos, no olviden por favor comentar, eso me sirve de motivacion para seguier alimentado esto blog. gracias por su atención.


Descarga el contenido de esto blog. Texto y videos. http://adf.ly/1SLDQq