report e subreport c#

12
Professor: Fábio Moreno Relatório e Sub-relatório 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$$ Faça algumas inserções por SQL nas tabelas Clientes e Dependentes. Com todas as classes no padrão MVC criadas, banco de dados configurado e depois de alguns registros inseridos pelo banco, a criação do relatório e subrelatório: Clique com o botão direito na Biblioteca VIEW-ADD-NEW ITEM...

Upload: fabio-moreno

Post on 10-Nov-2015

14 views

Category:

Documents


0 download

DESCRIPTION

Relatório e Sub-relatório com Reportview + WindowsForm + C#

TRANSCRIPT

  • 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: