VB.NET - Gerando relatórios via Crystal Reports usando DataSet
Vamos criar uma aplicação usando o VS.NET 2003 que tem o objetivo de gerar um relatório exibindo os dados de duas tabelas. Para alcançar tal proeza vou carregar os dados de duas tabelas do banco de dados Northwind.mdb : Products e Categories e criar um único DataSet em tempo de execução.
Iremos criar também um relatório no Crystal Reports que será gerado em tempo de execução com os dados obtidos a partir do DataSet criado acima e exibindo os Produtos por categorias. Parece simples , não é mesmo ? É na verdade é muito simples. Basta seguir o tutorial a seguir:
Criando o projeto no VS.NET 2003
O nosso projeto será composto por dois formulários Windows : form1.vb e form2.vb (o ideal é sempre nomear os controles com nomes mais sugestivos do que o que estarei usando), assim constituídos:
Controle | Nome | |
Form1 | ||
Button | Button1 (Exibir Relatório) | |
Form2 | ||
MainMenu | MainMenu1 ( Sair ) | |
CrystalReportViewer | CrystalReportViewer1 |
1- Abra o VS.NET 2003 e clique no botão New Project informando o nome crDSNet ao projeto. No formulário padrão form1.vb, inclua um botão de comando conforme abaixo:
Inclua no evento Click do botão de
comando Button1 o seguinte código:
|
2- Vamos agora abrir o Server Explorer ; podemos fazer isto através do Menu View ou clicando no ícone com dois computadores a esquerda acima da barra de ferramentas. O SE deverá aparecer ao lado esquerdo do IDE. Você pode configurar para mantê-lo aberto ou para deslizar automaticamente para fora do seu campo visual quando não precisar mais dele (recomendo esta opção).
Se ainda não existir uma conexão com o banco de dados Northwind.mdb clique no botão - Connect to DataBase e configure a conexão selecionando , no primeiro passo o provedor OLE DB e a seguir o local e nome do banco de dados. Desta forma criamos uma conexão com o banco de dados permitindo o acesso as suas tabelas.
3- Clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add -> Add New Item
4- Na janela - Add New Item - selecione o template DataSet, informando o nome ProdutosDS.xsd.
5- Estando na janela ProdutosDS.xsd na visão -DataSet- abra o Server Explorer e expanda a conexão criada. A seguir exiba as tabelas expandindo o objeto Table e arraste a tabela Products e a tabela Categories para página ProdutosDS.xsd conforme figura abaixo:
6- Clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add -> Add New Item
7- Na janela - Add New Item - selecione o template Crystal Reports, informando o nome Produtos.rpt.
8- Ao clicar no botão Open , o assistente do Crystal Reports , será aberto. Selecione a opção : As a Blank Report e clique em OK.
9- Com o relatório em branco aberto , clique com o botão direito do mouse sobre o relatório e selecione a opção : Add/Remove DataBase
10- Na janela DataBase Expert , selecione a opção OLE DB e clique sobre o sinal de (+) ao lado da pasta. E a seguir na janela OLE DB (ADO) selecione o provedor Microsoft Jet 4.0 OLE DB Provider.
11- Na próxima janela informe o nome do banco de dados (Northwind.mdb) na caixa de texto : DataBase Name e a seguir clique em Concluir.
12- A seguir na janela DataBase Expert, na guia Data, expanda as tabelas que serão exibidas , selecione as tabelas Products e Categories e clique no botão com a seta para incluir as tabelas na visão - Selected Tables:
13 - Se você clicar na aba Links verá as duas tabelas e o relacionamento entre elas sendo exibido conforme abaixo:
Com o relatório produtos.rpt aberto selecione os campos da janela Field Explorer que irão compor o relatório desejado. No nosso caso eu vou usar somente os campos CategoryName e Productname e incluir um grupo de forma a exibir os produtos por categorias:
Acima temos o relatório - produtos.rpt - pronto para ser utilizado. Podemos salvar o relatório do projeto.
Inclua agora um novo formulário no projeto via menu Project -> Add Windows Form, e inclua no formulário os controles MainMenu e CrystalReportView a partir da ToolBar conforme abaixo:
Vamos incluir o seguinte código no evento Load do formulário form2.vb:
Nota: Não esqueça do imports: Imports System.Data.oledb
Private
Sub Form2_Load(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load
oCon = New OleDbConnection(con)oCon.Open()
dt1 = New OleDbDataAdapter(sql, con)ds = New DataSetdt1.Fill(ds, "Produtos")
dt2 = New OleDbDataAdapter(sql, con)dt2.Fill(ds, "Categorias") Dim rpt As New produtos rpt.SetDataSource(ds) CrystalReportViewer1.ReportSource = rpt
dt1.Dispose() dt2.Dispose() ds.Dispose() End Sub |
Finalmente inclua um Item no Menu chamado Sair e no evento click do mesmo inclua o seguinte código:
Private
Sub MenuItem1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
MenuItem1.Click Me.Close() End Sub |
Ao rodar a aplicação o formulário form1.vb será exibido e quando o usuário clicar no botão de comando teremos a carga do formulário form2.vb e da exibição do relatório:
VB.NET , é fácil, é simples, é legal. Divirta-se...
José Carlos Macoratti