Relatório interativo com entrada prévia de dados em uma tabela

2022-04-04

Interactive report with preliminary data entry into the table

Como você já sabe, os relatórios FastReport.NET podem ter formulários de diálogo que são exibidos antes de criar um relatório. Graças a eles, você pode definir algumas variáveis de texto, booleanas ou numéricas. Essas podem ser campos de texto, tabelas, listas, listas suspensas, datas, caixas de seleção e até listas com caixas de seleção.

Normalmente, os formulários de diálogo são usados para filtrar dados em um relatório ou para selecionar critérios para o comportamento de um relatório. Mas hoje vamos falar sobre outra possível aplicação do formulário de diálogo.

Considere o caso em que você precisa inserir dados para o relatório antes de exibi-lo. Este é um caso bastante simples quando se trata de caixas de texto individuais, caixas de seleção, listas. Mas e se você tiver uma tabela com dados e quiser ajustar esses dados manualmente antes de criar um relatório?

É aqui que vem em socorro o componente Grid Grid  Esta é uma tabela com dados que podemos mostrar no formulário de diálogo antes de criar o relatório.

Adicione um formulário de diálogo ao relatório e coloque nele o Controle Grid. Vamos chamar o menu de contexto para ele usando o botão direito do mouse:

Menu de contexto do controle Grid

Selecione "Edit Collumns…" para adicionar colunas à tabela.

A janela de edição de colunas no controle Grid

Na janela de edição das colunas, adicionamos três: Name, Address, Phone.. Observe a propriedade Customers.Name. Aqui nos referimos a uma fonte de dados Customers que ainda não está no relatório. Mas vamos adicioná-lo mais tarde, usando um script. Para as colunas restantes, você precisa definir as propriedades apropriadas.

O modelo de página de relatório é extremamente simples, apenas um objeto Table com três colunas. Vamos preenchê-lo no script do relatório.

Modelo de relatório para saída de dados de um formulário de diálogo

E agora, vamos adicionar um manipulador de eventos StartReport para o relatório:

Inspetor de propriedades para o objeto Report

Script do relatório:

public class ReportScript
 {
 //Estrutura de dados para uma tabela
 public class Customer 
 {
 public string Name {get; set; }
 public string Address {get; set; }
 public string Phone {get; set; }
 
 public Customer(string name, string address, string phone)
 {
 Name = name;
 Address = address;
 Phone = phone;
 }
 }
 
 private void _StartReport(object sender, EventArgs e)
 {
//Lista de usuários
List<Customer> customers = new List<Customer>();
//Preencha a lista de usuários com dados padrão
 customers.Add(new Customer("Kevin Smith", "221 52nd st, Brooklyn, NY, United States", "+12127599755"));
 customers.Add(new Customer("Justin Ford", "1556 Broadway, suite 416, NY, United States", "+12145678900"));
 customers.Add(new Customer("Amanda Stephenson", "455 Larkspur Dr., CA, United States", "+14105175379"));
//Registramos a fonte de dados no relatório
 Report.RegisterData(customers, "Customers");
//Defina a fonte de dados na tabela
 Grid1.DataSource = Report.GetDataSource("Customers");
//Defina os campos nas células
 
 Cell6.Text = "[Customers.Name]";
 Cell7.Text = "[Customers.Address]";
 Cell8.Text = "[Customers.Phone]";
 }
}

Nesse caso, definimos a estrutura de dados do cliente que será usada para exibir as linhas na tabela na caixa de diálogo e no relatório. Em seguida, criamos uma fonte de dados Customers e a preenchemos com instâncias Customer. Em seguida, registramos a fonte de dados resultante no relatório. Lembre-se de como definimos um campo de dados para colunas em um objeto Grid? Essa é a fonte de dados que nos referimos. Imediatamente, atribuímos campos da origem às células da tabela (objeto Table) no modelo de página.

Agora, para o objeto Table na página do relatório, crie um manipulador de eventos ManualBuild. Esse evento é acionado depois que o objeto é criado na página e permite que você modifique uma tabela pronta para exibição. Dessa forma, podemos modificar o texto na tabela usando um script.

Inspetor de propriedades do objeto Table

 private void Table1_ManualBuild(object sender, EventArgs e)
 {
 //Definimos a fonte de dados
 DataSourceBase rowData = Report.GetDataSource("Customers");
 //Inicializamos os dados 
 rowData.Init();
 //Exibimos a primeira linha de dados
 Table1.PrintRow(0);
 //Exibimos coluna
 Table1.PrintColumns();
 //Loop em todas as linhas de dados para a font
 while (rowData.HasMoreRows)
 {
 //Exibimos a próxima linha de dados
 Table1.PrintRow(1);
 //Exibimos a coluna
 Table1.PrintColumns();
 //pegue o seguinte registro da fonte
 rowData.Next();
 }
 }

Aqui, preenchemos a tabela apenas percorrendo o loop em todas as linhas de dados.

Vamos começar o relatório. A primeira coisa que veremos é uma janela de diálogo com uma tabela:

Janela de diálogo da tabela

Clique duas vezes na primeira célula para editar seu texto:

Como editar a primeira célula

Clique em OK e veja o resultado:

Resultado do Código do programa

Como você pode ver, nossos dados padrão foram alterados para os que inserimos manualmente. Dessa forma, você pode permitir que os usuários modifiquem os dados manualmente antes de criar um relatório. Este exemplo mostra o preenchimento da tabela com dados do script, mas nada impede que você preencha dados da fonte.

.NET FastReport Interactivity Designer Script Report .NET FastReport Interactivity Designer Script Report
12 de julho de 2022

Como mostrar múltiplos relatórios em uma página no Blazor

Trabalho a partir do Código do aplicativo Blazor para exibir simultaneamente vários relatórios com filtragem de dados de acordo com a condição do Usuário.
06 de julho de 2022

Como importar um relatório do StimulSoft para o FastReport.NET

O FastReport. net adicionou um plug-in de importação de relatórios do StimulSoft que converte automaticamente seus documentos em um formato .frx.
27 de abril de 2022

Como usar fontes em relatórios sem instalá-las no sistema

Simplifique a criação de relatórios com fontes ttf personalizadas sem instalá-las no sistema e no aplicativo 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.