When is the best way to use a code report and when in frx format

2020-02-29

As you probably know, reports in FastReport .NET can be created not only in a special designer but also from the code of the user application. At the same time, instead of the usual file with frx extension, you will get a class of report. It can be converted into a library and used in different projects. What is this way of creating such a report?

Take a look at this code:

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();

 This is an example of creating a report template with groups. As you can see, we are consistently creating report objects, starting with the report and pages to text objects. We put the created objects into the other and configure the properties of their display. This requires a good performance FastReport .NET report template structure. In addition to this, to achieve the desired arrangement of the elements, you'll have plenty of time to run a report for the visual evaluation and to correct the properties of objects, exhibiting the desired width or coordinates. Therefore, this approach should be to report on lists, matrices, tables - where there is no need to adjust the location of the elements relative to each other.

The main advantage of a report generated in the code is the ability to edit reports during execution, adding code depending on conditions or events. This allows you to create reports with complex logic that directly depends on the client application itself.

It is no secret that FastReport.Net report templates are xml-like format, despite the extension frx. These templates are easy to transfer and view on other computers via the Viewer program. Mobility and independence from the client application - it is undeniable advantages of the traditional pattern in frx report format or a version with data filled in fpx format. Therefore, having in your application reports generated from the code, many would like to be able to convert them to normal xml-like format frx. It incredibly simple to do so:

1
2
Report report = new Report();
report.Save("C:\\report.frx");

 That is, you just need to use the “Save” function in the report object. As the parameters are passed to the path to the file name in which to save the report. So we can use a single account that is created from the code, and, if necessary, convert it into a traditional format frx. The resulting file can be transferred to other developers or users.

Both code-based reports and frx reports have their advantages. The first is that it wins when the report needs to be changed directly "on the go," the second is when a mobile report is required, or the template has many elements with a clearly defined location relative to each other. You need to choose a way to create a report based on these benefits.

November 20, 2024

Localization and Language Switching in FastReport VCL

FastReport VCL supports 40 languages for interface localization and allows you to change the language on the fly through menus or code, without recompilation.
November 01, 2024

New Features of the FastReport VCL Editor

We are considering new features of the report editor: extension lines, highlighting of intersecting objects, updated report and data trees.
October 30, 2024

Using Styles When Creating Reports in FastReport VCL

The article discusses one of the new features of FastReport VCL — the use of styles and style sheets.
Fast Reports
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2024 Fast Reports Inc.