Ferramentas de geração de relatório como ReportBulder com Delphi e Visual Studio com C# possuem certa dificuldade em suas configurações, além de serem pagas. Por isso, nesse artigo apresentaremos uma alternativa para a geração de relatórios. Ela é feita em C# e funciona a partir do Framework .NET 2.0.

O gerador suporta diversos tipos de fonte de dados, como DataSet, ArrayList e DataTable. Permite ainda acrescentar novas tipos de fontes, bastando implementando a interface IDataReport.

Desenho do Layout do Documento

Um dos módulos principais e que absorveu mais tempo de desenvolvimento foi o que é utilizado para desenho do layout do relatório.

Nele é possível criar cabeçalhos, títulos, configurar o layout e tamanho da página, bem como configurar agrupamentos, como mostram as Figuras 1, 2 e 3.

Titulos, Cabeçalho Rodape, Sumarios e Grupos
Figura 1. Titulos, Cabeçalho Rodape, Sumarios e Grupos
Visualização
Figura 2. Visualização
Visualização do Relatório
Figura 3. Visualização do Relatório

Nos Códigos 1 a 4 temos a codificação da ferramenta.

using KReport;


public static void Main() {
      DataSet dsDados = new DataSet();
      ds.ReadXML("Teste.xml");

      KReport.Engine.Report rpt = new       KReport.Engine.Report();

      rpt.FileName = "Report.xml"; //define o arquivo onde esta o layout
      rpt.Load();  // Carrega o layout
      rpt.AddSource(dsdados);  // adiciona a fonte de dados
      rpt.ShowDesigner();   // Visualiza lauout do relatório
}
Código 1. Carregar o Módulo de Desenho do Relatório
using KReport;


public static void Main() {
      DataSet dsDados = new DataSet();
      ds.ReadXML("Teste.xml");

      KReport.Engine.Report rpt = new       KReport.Engine.Report();

      rpt.FileName = "Report.xml"; //define o arquivo onde esta o layout
      rpt.Load();  // Carrega o layout
      rpt.AddSource(dsdados);  // adiciona a fonte de dados
      rpt.Show();   // Visualiza relatorio na forma de preview
}
Código 2. Carregar formulário de visualização do relatório
public static void Main() {
      DataSet dsDados = new DataSet();
      ds.ReadXML("Teste.xml");

      KReport.Engine.Report rpt = new       KReport.Engine.Report();

      rpt.FileName = "Report.xml"; //define o arquivo onde esta o layout
      rpt.Load();  // Carrega o layout
      rpt.AddSource(dsdados);  // adiciona a fonte de dados
      rpt.Print();   // Imprimi relatório
}
Código 3. Carregar impressão do relatório
public static void Main() {
      ArrayList source;
      Persistencia.StartSession();
      source = Persistencia.GetListObject(typeof(Credito)," status = 0");
      Persistencia.EndSession();

      KReport.Engine.Report rpt = new       KReport.Engine.Report();

      rpt.FileName = "Report.xml"; //define o arquivo onde esta o layout
      rpt.Load();  // Carrega o layout
      rpt.AddSource(source);  // adiciona a fonte de dados
      rpt.Print();   // Imprimi relatório
}
Código 4. Código utilizando uma lista de objetos