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
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.
06 de abril de 2026

Como configurar novos modos de renderização de QR code no FastReport .NET

Neste artigo, veremos como substituir os módulos de código QR padrão em FastReport .NET em formas decorativas: círculos, estrelas, hexágonos e outros.

© 1998-2026 Fast Reports Inc.