Trabalhando com Reportviewer + VS2010 parte II


O Report Viewer é uma ferramenta da própria Microsoft, integrada ao Visual Studio .Net que permite a geração de relatórios. O Microsoft Visual Studio 2010 inclui a funcionalidade de design de relatórios e controles ReportViewer para que você possa adicionar relatórios completos para aplicações personalizadas. Os relatórios podem conter dados tabulares, agregados e multi dimensionais. Os controles ReportViewer são fornecidos de modo que você pode processar e exibir o relatório em sua aplicação. Será utilizado o ReportViewer controle Windows Forms que é usado para hospedar relatórios em projetos de aplicativosWindows.

Desenvolvimento:

Neste artigo iremos utiliza um chart(componente gráfico presente no VS2010) e um simples textBox para demonstrar como passar uma imagem (bmp,png etc) para um relatorio reportviwer juntamente com uma string como parametro.
O grafico foi utilizado para idealizar que seu visual muda de acordo com o funcionamento do software produzido mas qualquer imagem pode ser passada, como por exemplo o conteúdo de um pictureBox ou ate mesmo a imagem da tela do próprio formulário. O textBox foi utilizado para receber qualquer informação fornecida no mesmo e passar como parametro para o reportviwer, o reportviwer aceita como parametro um text,boolean,Date/Time,Integer e float.
Para começar iremos criar uma classe que conterá a imagem que irá aparecer no relatório, neste caso utilizarei a classe clsDados que terá a Imagem. Percebe-se na figura abaixo que Imagem é um vetor de bytes.

Agora vamos criar o relatório. Adicione um report no seu projeto, siga os seguintes passos :


Escolha o nome do relatório como rptDados.
Após confirmação você ira visualizar a seguinde tela conforme a imagem abaixo:

Muito bem agora vamos criar nosso dateset dsDados.
Na aba Report Data (Ctrl+Alt+D) escolha New>Dataset... conforme a imagem abaixo:
A seguinte tela ira aparecer:

Escolha Object e clique em next.

Escolha a classe clsDados que ira conter a informação que precisamos. OBS caso o projeto não apareça na lista feche o Configuration Wizard de um rebuild no projeto e refaça ate este ponto. Após escolher a classe clique em Finish.

Veremos no campo Fields: que a variável que utilizaremos já foi encontrada. Renomeie o dataset para dsDados e clique em OK.

Agora ja temos o campo que conterá nossa imagem, vamos criar um parâmetro para receber o conteúdo de um textBox da tela de formulário, para isso clique com o botão direito sobre a pasta Parameters no guia Report Data e depois clique em Add Parameter... conforme a imagem abaixo:

A seguinte tela ira aparecer:

Em Name informe o nome do parâmetro, neste caso Observacao e em Data Type deixe o combobox marcado como Text. Clique em OK e o parâmetro terá sido criado.
Bom, agora vamos criar dois formulários. Um chamado Form1 e outro Form2. Naturalmente quando criamos um projeto o mesmo ja cria um formulário chamado Form1 dai basta adicionar um segundo chamado Form2.
Apos adicionar os formulários vamos trabalhar em cima do primeiro formulário o Form1. Vamos adicionar um textBox e em sua propriedade tex deixe um comentário como "Escreva algo aqui". Coloque também um botão para podermos gerar nosso relatório e mude seu text para Gerar relatório. Deixe um espaço na parte superior do Form1 para criarmos um gráfico para o exemplo. O resultado será igual a imagem abaixo:

Bem agora vamos criar um gráfico para nosso exemplo. O espaço deixado é para o gráfico que ira ser criado. No load do nosso formulário Form1 vamos colocar o código conforme a imagem abaixo:

Este gráfico é o mesmo utilizado como exemplo para o artigo  Novo componente Chart Control do VS2010.
Muito bem, apos rodar o programa iremos ter um resultado semelhante a imagem abaixo:

Muito bem nosso formulário para testarmos esta pronto, agora temos que trabalhar no botão para gerar o relatório, ele irá pegar a imagem do gráfico criado e transforma-lo em bytes e armazena-lo na nossa classe de dados e após isso abrir nosso segundo formulário, o Form2 que será o formulário que ira mostrar nosso relatório. De dois cliques no botão para ir-mos ao evento onclick do mesmo. Coloque o código conforme a imagem abaixo:

Percebe-se que na chamada do nosso Form2 que é o formulário que irá mostrar nosso relatório estamos passando 2 parâmetros, a classe dados e o text do nosso textBox. Bem vamos agora trabalhar com nosso segundo formulário, o Form2. Como este formulário ira mostrar nosso relatório vamos colocar um componente reportviewer bastando clicar no componente na barra de toolbox e arrasta-lo para nosso formulário.

Após arrastar o componente para o formulário sua tela deve parecer com a imagem abaixo:

No componente criado, no canto superior direito clique na seta para ver as tarefas. Escolha Dock in Parent Container. Isto fará com que o componente expando para tora área do formulário.
Pronto já temos o formulário que ira mostrar nosso relatório. Agora vamos trabalhar em seu construtor para que o mesmo receba os parâmetros que foram passados no Form1.

Diferente do artigo Trabalhando com Reportviewer + VS2010 estamos criando o bind, setando seu valor, informando o localreport, criando o parametro e fornecendo o bind correspondente ao dataset correto no relatório manualmente, ou seja, via código. Fizemos isto para demonstrar uma alternativa de como realizar este procedimento via código. Explicando o código fizemos a criação de um bind chamado bsDados que irá conter os bytes da nossa imagem, setamos o sourse do bind com nossa classe de dados que foi passada pelo Form1, definimos o local da nossa rdl, criamos um parâmetro para passar a string de Observacao e finalmente fornecer o bind bsDados ao dataset dsDados do nosso relatorio rptDados. 
Muito bem, nossos formulários estão prontos, vamos agora mostrar nossa imagem e nosso parâmetro no relatorio rdl. Para isso vamos apenas arrastar  um componente Image presente no toolbox do relatorio rdl.

A seguinte tela irá aparecer:

No campo "Select the image source:" escolha Database, em "Use this field:" escolha nosso campo Imagem do nosso dataset dsDados e em "Use this MIME type:" escolha image/bmp e clique em ok. Pronto a imagem ja esta alocada.

Agora é so ajustar seu tamanho. Pode-se fazer isso usando o próprio mouse.

Estamos quase terminando, vamos agora mostrar o parâmetro Observacao que criamos. Para isto basta mover o parametro da guia ReportData para o relatorio.

Pronto, agora basta rodar o software digitar qualquer coisa no textBox e clicar para gerar o relatório.

Finalização:
Neste artigo demonstrei como passar uma imagem de um formulário para um relatório reportviewer e como passar um parâmetro para o mesmo.  Muitos já passaram ou irão passar por esta situação. Alguns irão perguntar porque passar uma imagem se a mesma pode ser inserida diretamente pelo relatório mas a questão e se a imagem mudar dinamicamente? utilizei o gráfico exclusivamente por isso, já imaginou um gráfico de curvas e pontos onde a partir de valores informados no formulário o mesmo muda? Neste caso e viável passar a imagem do mesmo para o relatório.
Bem ,espero que isto ajude alguém. Mais uma vez demonstrei o quão prático esta trabalhar com VS2010 + reportviewer.


5 comentários to "Trabalhando com Reportviewer + VS2010 parte II"

Postar um comentário

Sobre este Blog

Aqui comento sobre minhas experiências na área de TI. Metodologia Ágil, programação, Banco de Dados e o que mais passar pela frente...

Quem sou eu

Minha foto
Belo Horizonte, MG, Brazil
Desenvolvedor de aplicativos,banco de dados e líder de projetos em uma ampla variedade de aplicações. Possui 5 anos de experiência na área de desenvolvimento de projetos de software, atuando como desenvolvedor, analista e líder de equipe. Atualmente, é líder da área de TI ,gerenciando os projetos dessa companhia. Sobre a sua formação acadêmica, é especialista em Engenharia de Software pela Universidade Federal de Minas Gerais (UFMG), graduado em Analise de Sistemas pela Universidade Leste Minas Gerais (UNILESTEMG) e técnico em informática pela CTCF. Tem interesse nas áreas de Qualidade de Software (Modelos e Processos), Gestão de Projetos,Desenvolvimento de aplicações.

Rede Social

Seguidores

DevBrasil