Como ya sabe, los informes en FastReport.Net se puede crear no solo en un diseñador especial, sino también programamente, desde el código de una aplicación del cliente, teniendo, en lugar del habitual archivo con la extenxión "frx", la clase del informe. Puede transformalo en la biblioteca y utilizarlo en varios proyectos. ¿Pero cómo es este modo de crear informe?
Eche un vistazo a este código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
//Create instance of class Report Report report = new Report(); //load data DataSet ds = new DataSet(); ds.ReadXml(AppFolder + "\\nwind.xml"); //Register data source report.RegisterData(ds); //Enable data table report.GetDataSource("Products").Enabled = true; //Add report page ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); //Create GroupHeader band GroupHeaderBand group = new GroupHeaderBand(); page.Bands.Add(group); group.CreateUniqueName(); group.Height = Units.Centimeters * 1; group.Condition = "[Products.ProductName].Substring(0,1)"; group.SortOrder = FastReport.SortOrder.Ascending; // create group text TextObject groupTxt = new TextObject(); groupTxt.Parent = group; groupTxt.CreateUniqueName(); groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1); groupTxt.Text = "[[Products.ProductName].Substring(0,1)]"; groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); groupTxt.VertAlign = VertAlign.Center; groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1); // create data band DataBand data = new DataBand(); group.Data = data; data.CreateUniqueName(); data.DataSource = report.GetDataSource("Products"); data.Height = Units.Centimeters * 0.5f; // create product name text TextObject productText = new TextObject(); productText.Parent = data; productText.CreateUniqueName(); productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); productText.Text = "[Products.ProductName]"; // create group footer group.GroupFooter = new GroupFooterBand(); group.GroupFooter.CreateUniqueName(); group.GroupFooter.Height = Units.Centimeters * 1; if (PDFCheckBox.Checked) { report.Prepare(); FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport(); export.Export(report); } else report.Show(); |
Es un ejemplo de crear un informe con grupos. Como ve, vamos creando objetos del informe, empezando por el informe mismo y y la página y terminado con objetos de texto. Colocamos los objetos creados dentro de otros y ajustamos las propiedades de su visualización. Esto requiere un buen entendimiento de la estructura del modelo de informe FastReport.Net. Además, para conseguir una colocación deseada de los elementos, tendrá que arracar el informe varias veces para la evaluación visual y corregir propiedades de objetos poniendo la anchura o las coordenadas necesarias. Por lo tanto, utilizar este enfoque es apropriado solo en el caso de informes con listas, matrices, tablas, es decir, allí donde no tiene que comprobar la posición de los elementos uno respecto al otro.
La ventaja principal del informe creado en el código es la posibilidad de editar informes durante la implementación añadiendo el código según las condiciones o eventos. Esto permite crear informes con un lógica compleja que depende directamente de la misma aplicación del cliente.
No es un secreto que los modelos de informes FastReport.Net tienen formato tipo "xml" para la extensión .frx. Esta clase de modelos es fácil de pasar y ver en otros despositivos con la ayuda de un programa visualizador. La movilidad y la independencia de las aplicaciones del cliente son una ventajas indiscutibles del habitual modelo de informe en el formato "frx" o su versión con los datos rellenados en el formato "px". Por lo tanto, teniendo en su aplicación informes creados desde el código, a muchos les gustaría tener la posibilidad de transformalos en el formato habitual tipo .xml "frx". Implementarlo es muy fácil:
1 2 |
Report report = new Report(); report.Save("C:\\report.frx");
|
Hay que simplemente utilizar la función Save en el objeto report. Como parámetro pasamos la ruta con el nombre del archivo en el que se guardará el informe. De esta manera, podemos utilizar el informe creado desde el código y, si es necesario, convertirlo en el formato habitual "frx". El archivo obtenido se puede pasar a otros desarrolladores o usuarios.
Tanto los informes a base del código, como los en el formato "frx" tienen sus ventajas. El primer modo es mejor cuando hay que cambiar el informe "de paso", el segundo, cuando se necesita un informe móvil o cuando el modelo de informe tiene muchos elementos con su colocación clara uno respecto al otro. A la hora de seleccionar un modo u otro, tiene que decidir según qué ventaja tiene más prioridad para usted.