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.



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
}
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
}
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
}
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
}