Desenvolvimento - C#

Criando Relatório utilizando Crystal Reports e C#

Neste tópico estarei abordando a criação de relatórios utilizando o Crystal Report e C#.

por Flavio Goncalves Araujo



Neste tópico estarei abordando a criação de relatórios utilizando o Crystal Report. No exemplo utilizarei o banco de dados NorthWind do SqlServer como fonte de dados para o relatório, e a linguagem utilizada para codificação será C#.

O primeiro passo é criar uma solução em branco, chamada "SlnReport".Depois inclua um Projeto "Asp.Net Web Application". Renomeie seu WebForm para "ReportViewPage.aspx".

1º. Passo criar solução em branco


Figura 1.1 - pasta figuras/ CriandoRelatorioCrytalReports

2º. Passo Criando o componente CrystalReportViewer

Após selecionar a solução do projeto , arraste o Web Control "CrystalReportViewer" para o canto do formulário. É através deste controle que será exibido o relatório.


Figura 1.2 - pasta figuras/ CriandoRelatorioCrytalReports

3º. Passo criando a Conexão no relatório

Na aba "Server Explorer" arraste a tabela "Products", do Banco de Dados "NorthWind" (SqlServer), para dentro do formulário criando assim uma connection e um adapter.


Figura 1.3 - pasta figuras/ CriandoRelatorioCrytalReports

4º. Passo Gerando Dataset

Após criar a conexão gere um DataSet Tipado a partir deste adapter clicando com botão direito sobre ele, escolhendo a opção "Generate DataSet...", marque a tabela "Products" e clique "OK". Feito isso é criado uma classe "DataSet1" que herda de "DataSet", e um objeto já instanciado desta classe chamado de "DataSet11", que será o nosso DataSet tipado, fonte de dados para nosso relatório.


Figura 1.4 - pasta figuras/ CriandoRelatorioCrytalReports 5º. Passo: Adicionando um Crystal Report

Feito isso estarei começando o processo de criação do relatório. Adicione um CrystalReport chamado de "ProductsReport" clicando com o botão direito no projeto "ReportsExample", escolhendo a opção "Add New Item.".Aparecerá imediatamente a janela "Crystal Report Gallery".


Figura 1.5 - pasta figuras/ CriandoRelatorioCrytalReports

6º. Passo: Inserir a tabela Products como fonte de dados do relatório

Clique no botão "OK" para usar o Report Expert e escolher o Relatório padrão. Abrirá então a janela "Standard Report Expert". Na aba Data, selecione "ProjectData", "ADO.Net DataSets", "ReportsExample.DataSet1", "Products", e clique no botão "Insert Table". Depois de já selecionada a tabela com que vamos trabalhar , iremos escolher os campos.


Figura 1.6 - pasta figuras/ CriandoRelatorioCrytalReports

7º. Passo: Inserir campos da tabela Products

Na aba "Fields", adicione os campos "Product.ID", "ProductName", "UnitPrice", "UnitsInStock" na caixa "Fields to Display" e clique no botão "Next>>".

Na aba "Group" adicione o campo "ProductName", na caixa "Group By" para que os registros sejam agrupados pelo nome do produto. Na aba "Total" remova todos os campos que estiverem na caixa "Summarized Fields", clicando no botão "".Na ComboBox "SummaryType", escolha "count", para que seja contado total de produtos. Na aba "style" insira o título "ProductsReport", e escolha um estilo para o relatório e clique no botão "finish" para que seja finalizado o processo de criação do relatório de produtos.


Figura 1.7 - pasta figuras/ CriandoRelatorioCrytalReports

Após desenvolvido o relatório irei agora que torna-lo visível através do componente CrystalViewer, que foi adicionado ao form ReportViewPage.aspx. Para efetuar esta tarefa primeiro estarei populando o DataSet tipado DataSet11, através do método Fill() do objeto ProductsAdapter. Depois vou instanciar um objeto da classe ProductReport, que é a classe que representa abstração de do relatório, e definirei o DataSet11 como fonte de dados para o relatório através do método SetDataSource().

Feito isso irei conectar o relatório com viewer, isto é feito atribuindo a instancia da classe ProductReport a propriedade ReportSource do objeto CrystalReportViewer1, e invocando o método DataBind() da mesma.Seu código deve ficar parecido como o abaixo:

Codificar a inteligência de carregar o relatório.

private void Page_Load(object sender, System.EventArgs e)
{
	//Popula o DataSet
	ProductsAdapter.Fill(dataSet11);

	//Instancia um objeto da classe que é a abstração do relatório
	ProductsReport rpt = new ProductsReport();

	//Define a fonte de dados para o relatório
	rpt.SetDataSource(dataSet11);

	//Define qual será o relatório que o viewer irá exibir
	CrystalReportViewer1.ReportSource = rpt;

	//Conecta o viewer com o relatório
	CrystalReportViewer1.DataBind();
}


Figura 1.8 - pasta figuras/ CriandoRelatorioCrytalReports

Finalmente o relatório está pronto e esperando para ser melhorado por você.

Flavio Goncalves Araujo

Flavio Goncalves Araujo - MCP pela Microsoft em .Net . Bacharel em Sistemas de Informação .Atualmente trabalhando como Analista de Sistemas no Banco Triângulo S/A , desenvolvendo aplicações web utilizando tecnologia .net , com conhecimento e experiência nas tecnologias da Sybase e Oracle. Colunista do Site Linha de Codigo , DevMedia e MSDN.