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
22 de junho de 2026

Como configurar um relatório com Business Objects no código e no designer do FastReport .NET

Este artigo demonstra um exemplo prático de criação e uso de um modelo de relatório .frx que se conecta a Business Objects hierárquicos no FastReport .NET.
28 de abril de 2026

Novo sistema de validação de relatórios no FastReport VCL

Neste artigo, explicaremos como funciona a verificação de relatórios, como configurá-la, como escrever regras personalizadas com exemplos e compartilharemos novidades interessantes.
21 de abril de 2026

Uso de marcas d'água no FastReport VCL

O artigo abordou detalhadamente a funcionalidade de adição de marcas d'água no FastReport VCL — tanto por meio da interface visual quanto programaticamente, com código Delphi e em scripts de relatórios.

© 1998-2026 Fast Reports Inc.