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

2026-06-22

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

O FastReport .NET oferece diversas formas de acessar e trabalhar com dados, incluindo bancos de dados, DataSet, JSON e Business Objects (classes C# comuns na sua aplicação).

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 (Categoria → Produtos).

 


 

Por que usar Business Objects como fonte de dados?

Os Business Objects oferecem várias vantagens em relação às fontes de dados tradicionais:

  • Suporte a modelos de objetos complexos — Funciona perfeitamente com coleções aninhadas, sendo ideal para relatórios Master-Detail (demonstrado mais adiante neste artigo).
  • Independência de banco de dados — Relatórios podem ser gerados sem conexão direta com um banco de dados.
  • Facilidade de manutenção — Alterações no modelo de dados geralmente exigem pouca ou nenhuma modificação nos relatórios existentes.
  • Alto desempenho — Os dados são serializados diretamente a partir dos objetos da aplicação.
  • Flexibilidade — Adequado para WinForms, WPF, ASP.NET Core, microsserviços e outras aplicações .NET.

 


 

Preparando os Business Objects

1. Criar as classes de modelo

Primeiro, instale o pacote NuGet FastReport.Net.Demo (ou a versão licenciada do FastReport.Net a partir do nosso servidor NuGet privado) e, em seguida, crie as seguintes classes de modelo:

public class Category
 {
 public string Name { get; set; } = string.Empty;
 public string Description { get; set; } = string.Empty;
 public List<Product> Products { get; set; } = new List<Product>();
 
 public Category() { }
 
 public Category(string name, string description)
 {
 Name = name;
 Description = description;
 }
 }
 
 public class Product
 {
 public string Name { get; set; } = string.Empty;
 public decimal UnitPrice { get; set; }
 
 public Product() { }
 
 public Product(string name, decimal unitPrice)
 {
 Name = name;
 UnitPrice = unitPrice;
 }
 }

 

2. Popular os Business Objects

Em seguida, implemente um método simples para popular os dados:

static private void CreateBusinessObject()
{
 FBusinessObject.Clear();
 
 Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers");
 category.Products.Add(new Product("Chai", 18m));
 category.Products.Add(new Product("Chang", 19m));
 category.Products.Add(new Product("Ipoh coffee", 46m));
 FBusinessObject.Add(category);
 
 category = new Category("Confections", "Desserts, candies, and sweet breads");
 category.Products.Add(new Product("Chocolade", 12.75m));
 category.Products.Add(new Product("Scottish Longbreads", 12.5m));
 category.Products.Add(new Product("Tarte au sucre", 49.3m));
 FBusinessObject.Add(category);
 
 category = new Category("Seafood", "Seaweed and fish");
 category.Products.Add(new Product("Boston Crab Meat", 18.4m));
 category.Products.Add(new Product("Red caviar", 15m));
 FBusinessObject.Add(category);
}

 

3. Criação do relatório

Para criar um relatório baseado na fonte de dados Categories BusinessObject, utilize o seguinte código:

 [STAThread]
 static void Main(string[] args)
 {
 Report report = new Report();
 CreateBusinessObject();
 report.RegisterData(FBusinessObject, "Categories BusinessObject");
 report.Design();
 }

Importante: Chame RegisterData após carregar o relatório (report.Load) e antes de chamar report.Prepare().

Após iniciar o designer de relatórios, selecione a fonte de dados em "Data → Choose Report Data".

Seleção de Dados para um Relatório no Designer do FastReport .NET

 

Em seguida, crie um relatório simples do tipo Master-Detail ou utilize um dos modelos de exemplo incluídos nos projetos demo do FastReport.

Relatório Master-Detail

Quando o relatório estiver pronto, execute-o no modo Preview para verificar a saída.

Visualização de um Relatório Master-Detail Concluído

 

4. Exibindo o relatório em uma aplicação de Console

Depois que o template do relatório for criado, você pode exibi-lo em uma aplicação Console usando o seguinte código:

[STAThread]
 static void Main(string[] args)
 {
 Report report = new Report();
 report.Load(@"Business Objects.frx");
 CreateBusinessObject();
 report.RegisterData(FBusinessObject, "Categories BusinessObject");
 report.Prepare();
 report.Show();
 report.Dispose();
 }

 


 

Exemplo completo de aplicação WinForms

public partial class Form1 : Form
 {
 static private List<Category> FBusinessObject = new List<Category>();
 
 public Form1()
 {
 InitializeComponent();
 CreateBusinessObject();
 }
 
 private void CreateBusinessObject()
 {
 FBusinessObject.Clear();
 
 Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers");
 category.Products.Add(new Product("Chai", 18m));
 category.Products.Add(new Product("Chang", 19m));
 category.Products.Add(new Product("Ipoh coffee", 46m));
 FBusinessObject.Add(category);
 
 category = new Category("Confections", "Desserts, candies, and sweet breads");
 category.Products.Add(new Product("Chocolade", 12.75m));
 category.Products.Add(new Product("Scottish Longbreads", 12.5m));
 category.Products.Add(new Product("Tarte au sucre", 49.3m));
 FBusinessObject.Add(category);
 
 category = new Category("Seafood", "Seaweed and fish");
 category.Products.Add(new Product("Boston Crab Meat", 18.4m));
 category.Products.Add(new Product("Red caviar", 15m));
 FBusinessObject.Add(category);
 }
 
 private void btnCreateNew_Click(object sender, EventArgs e)
 {
 // create report instance
 Report report = new Report();
 
 // register the business object
 report.RegisterData(FBusinessObject, "Categories BusinessObject");
 
 // design the report
 report.Design();
 
 // free resources used by report
 report.Dispose();
 }
 
 private void btnRunExisting_Click(object sender, EventArgs e)
 {
 // create report instance
 Report report = new Report();
 
 // load the existing report
 report.Load(@"..\..\Business Objects.frx");
 
 // register the business object
 report.RegisterData(FBusinessObject, "Categories BusinessObject");
 
 // run the report
 report.Show();
 
 // free resources used by report
 report.Dispose();
 }
 }
 
 
 public class Category
 {
 public string Name { get; set; } = string.Empty;
 public string Description { get; set; } = string.Empty;
 public List<Product> Products { get; set; } = new List<Product>();
 
 public Category() { }
 
 public Category(string name, string description)
 {
 Name = name;
 Description = description;
 }
 }
 
 public class Product
 {
 public string Name { get; set; } = string.Empty;
 public decimal UnitPrice { get; set; }
 
 public Product() { }
 
 public Product(string name, decimal unitPrice)
 {
 Name = name;
 UnitPrice = unitPrice;
 }
 }

 


 

Conclusão

Os Business Objects são uma das formas mais modernas e convenientes de trabalhar com dados no FastReport .NET. Eles permitem integrar a geração de relatórios à arquitetura da sua aplicação de forma limpa e sustentável, sem introduzir complexidade desnecessária na base de código.

Essa abordagem é especialmente adequada para projetos de médio e grande porte, nos quais a separação clara de responsabilidades, a manutenibilidade e o desenvolvimento rápido de relatórios são essenciais.

Ao utilizar Business Objects, você obtém máxima flexibilidade e controle total sobre como os dados são fornecidos aos seus relatórios, mantendo a camada de relatórios alinhada ao modelo de domínio da sua aplicação.

.NET FastReport Data Source Designer C# Preview
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.
08 de abril de 2026

Novos recursos para trabalhar com bandas no Designer do FastReport .NET

Na versão 2026.2 do FastReport .NET foi adicionado o recurso de alterar a ordem das bandas diretamente no Designer, simplesmente arrastando e soltando-as com o mouse.

© 1998-2026 Fast Reports Inc.