Ferramentas para relatórios no ASP.NET
Este artigo tem o objetivo de mostrar algumas das ferramentas que são usadas na construção de relatórios em ASP.Net os quais são utilizados com bastante freqüência pelos desenvolvedores, e nada melhor que mostrar exemplos das funcionalidades básicas e vantagens que cada uma pode oferecer na hora da escolha.
Auxilia na visualização de informações que estão armazenadas em fonte de dados diversas, sendo esses relatórios integrados nas páginas web ou aplicativos Windows forms, que nos possibilita exibir informações de maneira em que os dados fiquem bem organizados e formatados.
No dia-a-dia dos desenvolvedores, analistas, gerente de projetos, arquitetos dentre outros, os quais precisam tomar decisões de qual ferramenta, que melhor vai atender as necessidades do projeto. Por isso, é interessante saber se o que estamos utilizando vai atender. Sendo também uma maneira bem ágil para mostrar as informações ao usuário do sistema, que sempre estão em busca de relatórios para as tomadas de decisões na empresa.
As ferramentas que serão abordadas são: o MicrosoftReportViewer e o CrystalReportViewer que já vem no Visual Studio. No entanto serão feitos exemplos das principais funcionalidades dessas ferramentas, nos dando uma visão de qual ferramenta se adéqua ao nosso projeto.
O banco de dados que nos dará suporte será o Northwind que pode ser baixado através do link http://www.microsoft.com/downloads/details.aspx?familyid=06616212-0356-46a0-8da2-eebc53a68034&displaylang=en. Após fazer o download do banco restaure no SQL Server Management Studio Express que pode ser baixado http://www.microsoft.com/downloadS/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en . Quanto a IDE para desenvolvimento dos exemplos o Visual Studio 2008 no link http://msdn.microsoft.com/pt-br/vstudio/aa700831.aspx .
Microsoft Report Viewer
É um Package que permite mostrar relatórios em sua aplicação, o mesmo apresenta em duas versões tanto para Web para projetos ASP.Net, quanto para Windows Forms para aplicações Windows, que são voltados para a visualização de relatórios que podem ser baixados tanto para o .NET Framework version 2.0 quanto para o .NET Framework version 3.5. O Report View não apresenta qualquer restrição quanto a distribuição de um projeto em .Net.
Vamos mostrar nesse momento como criar um relatório através desse controle, primeiro abrir o Visual Studio em Iniciar /Programas /Microsoft Visual Studio 2008 . Depois criar um novo WebSite em File /New /WebSite a Figura 1 mostra a fase inicial de como construir o relatório, perceba que o Item 1 representa o template do projeto que vai ser do tipo ASP.NET Web Site e o Item 2 é o Location que pode ser selecionado como File System onde possibilita que o sistema seja salvo em um diretório da escolha do desenvolvedor, nesse caso foi salvo em C:\Report conforme o Item 3 e por fim o Item 4 é em qual linguagem que vai ser desenvolvido o WebSite que é Visual C#.
Figura 1: Novo Web Site
Vamos organizar o nosso projeto criando uma pasta chamada de Forms que vai guardar páginas Web , a pasta Reports os relatórios e a pasta Images as imagens, na aba Solution Explorer com o botão direito clicar no projeto e selecionar New Folder com isso as pastas são criadas.
Em cima da pasta Forms com o botão direito selecione Add New Item Figura 2, será mostrada uma tela, Figura 3, onde será selecionado o Templates do tipo WebForm que é uma página web Item 1 e o nome da página é Exemplo01.aspx Item 2.
Figura 2: Adicionando uma nova página

A página será criada e nesse momento será adicionado o controle MicrosoftReportViewer , mas antes para mostrar o Design da página clique em Design Figura 4. Pronto agora vamos arrastar e soltar o controle na página, que está na janela ToolBox Figura 5.

Figura 5: Janela ToolBox
É necessário criado um Typed DataSet que é um arquivo .xsd e representa um Schema XML que é um documento XML onde é definido as propriedades e métodos que tem o mesmo schema (colunas, tipos de dados) da tabela que é utilizado no database Northwind. No entanto não entraremos em detalhes quanto aos métodos de Insert, Update e Delete do DataTable.
Para adicionar no Solution Explorer o dataset clique no projeto com o botão direito e selecione Add New Item, como você pode conferir na Figura 6, onde será selecionado o template DataSet Item 1 e o nome do arquivo é NorthwindProducts.xsd Item 2.
Figura 6: Escolhendo o template DataSet
Um forma de manipular o DataSet é utilizando o Editor para criar e modificar graficamente um arquivo XSD. Para isso clique no DataSet com o botão direito e clique em Open With, conforme mostra a Figura 7 e 8.

Figura 7: Escolhendo o template DataSet

Uma das formas bem rápida se criar o dataset é pela Janela do Server Explorer que possibilita criar a conexão com o banco Northwind, depois de criada a conexão, clicar na tabela Products e arrastar para o DataSet Desinger, como mostra a Figura 9.

Na aplicação web falta adicionar e formatar o relatório, com o botão direito na pasta Report add new item a Figura 10 mostra o Item1 que é o template Report e o nome do relatório é ReportProducts.rdlc conforme Item 2. Dessa forma o processamento é local no computador que hospeda aplicação é quem se encarrega de processar.

Primeiramente vamos habilitar o Page Header no menu Report / Page Header do relatório, que vai conter uma imagem e o título, mas antes é necessário informar as imagens que vão ser vinculadas ao relatório, através do menu Report / Embedded Images como mostra a Figura 11. Como você pode ver a Figura 12 mostra através do Item 1 como adicionar o objeto Image clicando e arrastando para o Page Header do relatório, no Item 2 o source será selecionado para a opção Embedded que é forma que foi feita anteriormente onde vincula as imagens e em value as imagens que foram vinculadas, vão aparecer. Arraste também um textbox onde será colocado o título do relatório que é “Products”.

Figura 11: Importando as imagens para o relatório.


Figura 13: Formatando o relatório
A janela toolbox permitirá definir um layout para o relatório, que vai conter duas Data Regions a Table e o Chart que são vinculadas a fonte de dados como você pode ver na Figura 13. A Figura 14 mostra a janela WebSite Data Sources com o dataset que foi disponibilizado, nesse momento clique e arraste no campo ProductName e UnitPrice para a Table conforme mostra o Item 1 e 2. Acabamos de definir duas colunas no relatório que é o nome do produto e o preço. Para fazer à somatória do preço dos produtos é feita através da fórmula =Sum(Fields!UnitPrice.Value) que faz a somatória do campo UnitPrice o Item 3 mostra com detalhes.

Figura 14: Colocando os campos que serão visualizados no relatório
Quanto ao gráfico, será mostrado a comparação do preço com os produtos, com o botão direito do mouse no chart, selecione Properties e na aba Data da janela tem um dropdownlist com a legenda DataSet Name onde será selecionado o dataset: NorthwindProducts_Products de acordo com o Item1 da Figura 15, já no Item 2 será mostrado os valores que são os preços e que vão ficar disponibilizados no eixo do Y, então clique em editar e coloque na aba Values as informações como mostra a Figura 16. No Item 3 são os nomes dos produtos que vão ficar disponibilizados no eixo do X que vão se relacionar com os preços, preencher conforme Figura 17. E para finalizar na aba legend desmarcar a opção Show Legend para não mostrar a legenda no gráfico.

Figura 15: Propriedade do Gráfico

Figura 16: Editar Valores do Gráfico

Figura 17: Valor que se relaciona com o preço
Voltando para a página web criada o Exemplo01.aspx , no code-behind da página colocar o código da Listagem 1 que faz a conexão com o banco, tem um select que retorna os seis últimos produtos e associa o dataset com o ReportViewer datasource. Uma das vantagens do ReportView é que o relatório pode ser exportado para PDF ou Excel. O resultado do relatório pode ser visto na Figura 18.
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
public partial class Exemplo01 : System.Web.UI.Page
{
#region Events Handles
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CarregaRelatorio();
}
}
#endregion
#region Private Methods
private void CarregaRelatorio()
{
//Título da página
Page.Title = "Relatório";
//Conexão com o banco de dados
SqlConnection Con = null;
Con = new SqlConnection(@"Password=suasenha;Persist Security Info=True;User ID=seusuario;Initial Catalog=Northwind;Data Source=DESENV\SQLEXPRESS");
Con.Open();
SqlCommand Cmd = Con.CreateCommand();
//Select que retorna 06 produtos
Cmd.CommandText = "Select top 6 * from Products ";
SqlDataAdapter Da = new SqlDataAdapter(Cmd);
DataTable dt = new DataTable();
Da.Fill(dt);
Con.Close();
//Associa o dataset com o ReportViewer datasource
ReportDataSource rpda = new ReportDataSource();
rpda.Name = "NorthwindProducts_Products";
rpda.Value = dt;
ReportViewer1.LocalReport.DataSources.Clear();
//Adiciona o objeto rpda ao controle ReportViewer
ReportViewer1.LocalReport.DataSources.Add(rpda);
//Local que está o relatório
ReportViewer1.LocalReport.ReportPath = "Reports/ReportProducts.rdlc";
ReportViewer1.LocalReport.Refresh();
}
#endregion
}

Figura 18: Mostra o relatório gerado pelo controle ReportView
Crystal Report Viewer
Permite mostrar relatórios em sua aplicação, podendo ser utilizado tanto para projetos Web quanto Windows Forms, quanto a distribuição o mesmo apresenta restrições. Agora será explorado alguns dos recursos do Crystal Report Viewer, neste tópico o exemplo que vai ser feito é o mesmo que foi utilizado com o MicrosoftReportView então criar uma página com o nome Exemplo02.aspx e adicionar na página o controle Crystal Report Viewer Figura 19. Uma das vantagens do Crystal Report Viewer é que o relatório pode ser exportado para Crystal Reports (RPT), Acrobat Format (PDF), MS Word, MS Excel 97-2000, MS Excel 97-2000 (Data Only) e Rich Text Format. Quanto a versão do Framework disponível para .NET são 2.0, 3.0 and 3.5.

Figura 19: Crystal Report Viewer
Para configurar o layout do relatório é necessário adicionar um template no projeto como pode ser visto na Figura 20, através do Item 1 é o nome do arquivo Item 2 .

Figura 20: Template Crystal Report
Começando pelo Section Report Header onde será adicionado uma imagem através do menu Crystal Reports / Insert / Picture selecione a imagem deseja e depois na janela Toobox selecione Text Object e arraste para o relatório, onde será o nosso título “Products” conforme a Figura 21.

Figura 21: Report Header com imagem e título
Para formatar o relatório o dataset tem que ser adicionado, na janela Filder Explorer com o botão direito clicar em Database Filds / DataBase Expert como pode ser visto na Figura 22, perceba que vai ser aberto a janela Database Expert de acordo com a Figura 23, para localizar o dataset clique em Project Data / ADO.NET DataSets, localize o dataset, depois selecione a tabela Products e clique na seta “>” para adicionar.

Figura 22: Adicionando o Typed DataSet

Figura 23: Localizando Typed DataSet e Adicionar no relatório
A Figura 24 mostra como adicionar os campos no relatório, clique em ProductName e depois em UnitPrice e arraste para a Section Details depois clique com o botão direito na parte branca do relatório e selecione Insert / Summary vai ser aberta uma janela que se chama Insert Summary conforme exibido na Figura 25 e no Item 1 será escolhido o campo e no Item 2 escolher a opção sum que vai fazer a somatória do campo escolhido.

Figura 24: Colocando os campos que serão visualizados no relatório

Figura 25: Inserindo a somatória no relatório
E por fim o gráfico será a Figura 26 mostra como inserir no relatório o gráfico através do menu Crystal Reports / Insert / Chart onde vai ser aberto uma janela de acordo com a Figura 27, na aba Type pode ser escolhido vários tipos de gráfico só que o tipo de gráfico escolhido é o Bar que é tradicional gráfico de barras. Na aba Data que significa “dados”, possibilita fazer a montagem do gráfico, ou seja, relacionar os produtos com os seu respectivos valores Figura 28 e para finalizar na aba Text permite personalizar a legenda que o gráfico vai mostrar.


Figura 27: Escolhendo o tipo de gráfico

Figura 28: Selecionando os dados do gráfico
A Listagem 2 mostra o code-behind da página Exemplo02.aspx onde é criado a conexão com o banco, após ter a conexão é retornado as informações para serem carregadas no relatório, e por fim o objeto relatorio é adicionado ao controle CrystalReportViewer1.
Listagem 2
using System;
using System.Data;
using System.Data.SqlClient;
public partial class Exemplo02 : System.Web.UI.Page
{
#region Object
//Cria uma instância do ReportClass
CrystalDecisions.CrystalReports.Engine.ReportClass relatorio = new CrystalDecisions.CrystalReports.Engine.ReportClass();
#endregion
#region Events Handles
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CarregaRelatorio();
}
}
#endregion
#region Private Methods
private void CarregaRelatorio()
{
//Título da página
Page.Title = "Relatório";
//Conexão com o banco de dados
SqlConnection Con = null;
Con = new SqlConnection(@"Password=suasenha;Persist Security Info=True;User ID=seuusuario;Initial Catalog=Northwind;Data Source=DESENV\SQLEXPRESS");
Con.Open();
SqlCommand Cmd = Con.CreateCommand();
//Select que retorna 06 produtos
Cmd.CommandText = "Select top 6 * from Products ";
SqlDataAdapter Da = new SqlDataAdapter(Cmd);
DataTable dt = new DataTable();
Da.Fill(dt);
Con.Close();
//Local que está o relatório
relatorio.FileName = Server.MapPath("~/Reports/CrystalReportProducts.rpt");
//Define o DataDource do Relatório
relatorio.SetDataSource(dt);
//Visualiza o relatório
CrystalReportViewer1.ReportSource = relatorio;
CrystalReportViewer1.DataBind();
}
#endregion
}

Figura 29: Mostra o relatório gerado pelo controle Crystal Reports
Conclusão
As ferramentas discutidas neste artigo são as principais utilizadas no Visual Studio, e por esse motivo despertou o interesse em mostrar o que é possível fazer em cada uma delas a nível de funcionalidades básicas. O desafio era fazer um relatório que apresentasse as mesmas informações em ambos as ferramentas e esse objetivo foi feito com sucesso.
Neste artigo foi possível ver algumas vantagens e como implementar o relatório, dando um norte de qual ferramenta que melhor se adequa no projeto em execução.

Obrigado
em 27/7/2011 14:20 - Responder
Devmedia - Equipe De ModeracaoAtenciosamente,
Equipe Devmedia.
em 5/8/2011 16:42 - Responder

Erysson Batista Barros De Souzaem 5/8/2011 16:59 - Responder

VictorPara o ReportView e para o CristalReport ?
em 22/9/2011 21:49 - Responder

Luiz Agnelo C. Maia[]s
em 30/9/2011 15:44 - Responder


Porém quando tentei colocar duas tabelas no dataset, quando vou executar o relatório aparece a frase "The report you requested requires further information" e pede usuário e senha. Daí não consigo avançar.
Para usar duas tabelas, sabe informar o que preciso fazer a mais ?
Muito obrigado.
Abraços,
em 11/10/2011 11:29 - Responder

Erysson Batista Barros De Souzahttp://social.msdn.microsoft.com/forums/pt-br/vsreportingpt/thread/8B6441A8-3F37-474E-BEFF-345F41764581
Sugestão:
No seu caso utilize somente um dataset tipado com todas as (faça isso no SQL)
ou
utilize subreport utilizando os dois dataset tipado/tabelas.
em 11/10/2011 15:20 - Responder
Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

2
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!