Quando é melhor usar um relatório escrito em código ou formato frx

2020-02-29

Como você provavelmente sabe, os relatórios no FastReport.Net podem ser criados não apenas em um designer especial, mas também à partir do código do aplicativo escrito pelo usuário. Ao mesmo tempo, em vez do arquivo usual com extensão frx, você receberá uma classe de relatório. Ele pode ser convertido em uma biblioteca e usado em diferentes projetos. Qual é essa forma de se criar relatório?

Observe esse 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
 //Cria uma instância da classe Report
 Report report = new Report();
 
 //carrega dados
 DataSet ds = new DataSet();
 ds.ReadXml(AppFolder + "\\nwind.xml");
 
//Registra o data source
 report.RegisterData(ds);
 
 //Habilita a tabela de dados
 report.GetDataSource("Products").Enabled = true;
 
 //Adiciona página ao relatório
 ReportPage page = new ReportPage();
 report.Pages.Add(page);
 page.CreateUniqueName();
 
 //Cria banda GroupHeader
 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;
 
// cria grupo de texto
 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);
 
 // cria banda de dados
 DataBand data = new DataBand();
 group.Data = data;
 data.CreateUniqueName();
 data.DataSource = report.GetDataSource("Products");
 data.Height = Units.Centimeters * 0.5f;
 
 // cria texto “product name”
 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]";
 
 // cria grupo para rodapé
 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();

Este é um exemplo de criação de um modelo de relatório com grupos. Como você pode ver, estamos criando objetos de relatório de forma consistente, começando com os objetos de texto da página do relatório. Colocamos os objetos criados e configuramos as propriedades de sua exibição. Isso requer um bom desempenho da estrutura do modelo de relatório FastReport.Net. Além disso, para conseguir a exibição desejada dos elementos, você terá bastante tempo para executar o relatório avaliar visualmente e corrigir as propriedades dos objetos, exibindo a largura ou coordenadas desejadas. Portanto, essa abordagem deve ser o de relatar listas, matrizes, tabelas - onde não há necessidade de ajustar a localização dos elementos em relação uns aos outros.

A principal vantagem de um relatório gerado no código é a capacidade de editar relatórios durante a execução, adicionando código dependendo das condições ou eventos. Isso permite criar relatórios com lógica complexa que depende diretamente do próprio aplicativo do cliente.

Não é segredo que os modelos de relatório do FastReport.Net são formatados em xml, apesar da extensão frx. Esses modelos são fáceis de transferir e visualizar em outros computadores através do programa Viewer. Mobilidade e independência da aplicação cliente - são vantagens inegáveis do padrão tradicional em formato de relatório frx, ou uma versão com dados preenchidos em formato fpx. Portanto, tendo em seu aplicativo relatórios gerados a partir do código, muitos gostariam de poder convertê-los para o formato normal do tipo xml frx. É incrivelmente simples de fazer:

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

Ou seja, basta utilizar a função “Salvar” do objeto de relatório. Conforme os parâmetros são passados o caminho e o nome do arquivo no qual se deseja salvar o relatório. Assim, podemos usar uma única conta que é criada a partir do código e, se necessário, convertê-la em um formato tradicional frx. O arquivo resultante pode ser transferido para outros desenvolvedores ou usuários.

Tanto os relatórios baseados em código quanto os relatórios frx têm suas vantagens. A primeira vence quando o relatório precisa ser alterado diretamente "on the go", a segunda é quando um relatório móvel é necessário ou o modelo tem muitos elementos com uma localização claramente definida em relação ao outro. Você precisa escolher uma forma de criar um relatório com base nesses benefícios.

.NET .NET FastReport FastReport Report Report
26 de abril de 2023

How to use RFID tags in FastReport .NET

The new page object is an RFID tag in FastReport.NET allows users to use the library to create labels or maps without third-party programs
20 de abril de 2023

How to update FastReport Online Designer to the latest version

Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel.
14 de março de 2023

The Future of Report Generation with Blazor WebAssembly

Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET.
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.