Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

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.

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

 
Figura 3: Escolhendo o template We Form

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 4: Mostra o Design na página.

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

Figura 8: Escolhendo o programa o qual será aberto o arquivo
 

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.

Figura 9: DataSet Designer
 

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.

Figura 10: Template Report Wizard
 

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 12: Adicionando o objeto imagem e configurando
 
 

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.

Listagem 1
 
using System;

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 26: Inserindo o gráfico

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.

 
Espero que tenham gostado, até o próximo artigo e fiquem com Deus.




    7 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Decio Faustino Morais Neto
boa tarde gostaria de saber qual link direto para o crystal report e se tem licença ou preciso comprar?

Obrigado


em 27/7/2011 14:20 - Responder

 

  Devmedia - Equipe De Moderacao
Já entramos em contato com o autor e não obtivermos resposta.

Atenciosamente,

Equipe Devmedia.


em 5/8/2011 16:42 - Responder
 

[Comentário do autor]   Erysson Batista Barros De Souza
Você pode utilizar o Crystal Report e pelo que vi na época a licença que não era paga o relatório poderia ser acessado por 5 pessoas simultânea. Segue o link http://www.businessobjects.com/jump/xi/crvs2010/default.asp


em 5/8/2011 16:59 - Responder
 

  Victor
O que tem que ser instalado no servidor para rodar o relatório:
Para o ReportView e para o CristalReport ?


em 22/9/2011 21:49 - Responder
 

  Luiz Agnelo C. Maia
Instalar somente o Framework pertinente a versão que vc desenvolveu a aplicação e referenciar as DLLS dentro da pasta BIN.

[]s


em 30/9/2011 15:44 - Responder
 

Sandro Santarosa
Muito bom o post. Me ajudou muito.
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

 

[Comentário do autor]   Erysson Batista Barros De Souza
Pelo que pesquisei o problema é devido provavelmente onde a sua consulta estar trazendo um dataset com dois datatables isso segundo a resposta desse de post do Antônio:
http://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
 



[Este post ainda não foi associado a uma sequência]
Autor
Erysson Batista Barros De Souza

Tenho experiência em ASP.NET utilizando a linguagem C#. Sou formado em Sistemas de Informação pelo o Instituto de Estudos Superiores da Amazônia – IESAM e Especialista em Tecnologia de Desenvolvimento de Softwares pelo Centro Universitário do Pará – CESUPA. Trabalho no Tribunal de Contas do Estado...


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


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

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03