Вы находитесь на странице: 1из 12

Professor: Fbio Moreno

Relatrio e Sub-relatrio com Reportview +


WindowsForm + C#
O Banco:
delimiter $$
CREATE TABLE `clientes` (
`CODIGO` int(11) NOT NULL AUTO_INCREMENT,
`NOME` varchar(45) DEFAULT NULL,
`SALARIO` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`CODIGO`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1$$

delimiter $$
CREATE TABLE `dependentes` (
`codigo` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(45) DEFAULT NULL,
`idade` int(11) DEFAULT NULL,
`codcliente` int(11) DEFAULT NULL,
PRIMARY KEY (`codigo`),
KEY `dep_idx` (`codcliente`),
CONSTRAINT `dep` FOREIGN KEY (`codcliente`) REFERENCES `clientes` (`CODIGO`) ON DELETE
NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1$$
Faa algumas inseres por SQL nas tabelas Clientes e Dependentes.
Com todas as classes no padro MVC criadas, banco de dados configurado e depois de alguns
registros inseridos pelo banco, a criao do relatrio e subrelatrio:
Clique com o boto direito na Biblioteca VIEW-ADD-NEW ITEM...

Professor: Fbio Moreno


Escolha Report e coloque o nome relCliente e depois clique no boto Add:

A aba relCliente.rdlc:

Professor: Fbio Moreno


Clique com o boto direito do mouse na rea em branco e adicione o componente LIST:

A seguinte tela aparecer para criao do DataSet:

Coloque no
NAME: dsClientes
DataSource: MODELOS
Available datasets: Cliente

Professor: Fbio Moreno

Depois de apertar o boto OK, configure o componete List na tela:

Professor: Fbio Moreno


Configure agora o relatrio adicionando cabealho, rodap, subreport e Textbox adicionando
os campos cdigo, nome e salrio.

Agora, faremos o subrelatrio dos dependentes:


Clique com o boto direito na Biblioteca VIEW-ADD-NEW ITEM...

Professor: Fbio Moreno


Escolha Report e coloque o nome relDep e depois clique no boto Add:

Vamos adicionar mais uma DataSet ao projeto. Clique na opo DATA no menu e depois ADD
NEW DATASOURCE...

Escolha aopo Object na janela a seguir:

Professor: Fbio Moreno


Escolha em Modelos a classe Dependente:

Agora adicione um componente TABLE no novo relatrio e aparecer a seguinte tela:

Configure para
NAME: dsDep
DataSource: MODELOS
Available datasets: Dependente

Professor: Fbio Moreno


Configure a Table no relatrio:

Vamos adicionar um parmetro para interligar os relatrios, mas antes clique no MENU VIEW
-> REPORT DATA:

Na pasta PARAMETERS, clique com o boto direito do mouse e clique na opo ADD
PARAMETERS:

Professor: Fbio Moreno


Crie um parmetro com o nome Codcliente do tipo inteiro:

Voltando ao report relClientes, clique com o boto direito no subreport e depois na opo
Subreport Properties.
Configure o nomes para o nome do subrelatrio relDep.

Professor: Fbio Moreno


Agora clique na opo Parameters do lado esquerdo, e adicione o parmetro criado no outro
relatrio:

Adicione um novo Form ao projeto, e adicione neste formulrio um reportview:

Professor: Fbio Moreno


No Form2 , vamos adicionar na leitura do formulrio a exibio do formulrio:
Ateno: No coloque novamente a chamada do mtodo private void Form2_Load(object
sender, EventArgs e), pois esta j existe. Verifique sempre as { }.
private void Form2_Load(object sender, EventArgs e)
{
ClienteBLL cli = new ClienteBLL();
List<Cliente> lista = cli.ListaClientes("Select * from Clientes");
Microsoft.Reporting.WinForms.ReportDataSource dataset = new
Microsoft.Reporting.WinForms.ReportDataSource("dsClientes", lista);
dataset.Value = lista;
reportViewer1.LocalReport.DataSources.Add(dataset);
reportViewer1.LocalReport.ReportEmbeddedResource =
"View.relClientes.rdlc";
reportViewer1.LocalReport.SubreportProcessing += new
Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(reportViewer1_Subrep
ortProcessing);
this.reportViewer1.RefreshReport();
}

Adicione ao cabealho as bibliotecas:


using Modelos;
using BLL;
using Microsoft.Reporting.WinForms;

Precisamos adicionar um novo mtodo que far a impresso do subrelatrio:


public void reportViewer1_SubreportProcessing(object sender,
SubreportProcessingEventArgs e)
{
string codigo =
e.Parameters["Codcliente"].Values[0].ToString();//Codigo do cliente
DependenteBLL dep = new DependenteBLL();
e.DataSources.Add(new ReportDataSource("dsDep",
dep.ListaDependentes("SELECT * FROM dependentes where codcliente = " + codigo)));
}

Professor: Fbio Moreno


Pronto, o relatrio est concludo:

Вам также может понравиться