Report e Subreport C#
-
Upload
fabio-moreno -
Category
Documents
-
view
14 -
download
0
description
Transcript of Report e Subreport C#
-
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 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_SubreportProcessing); 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: