Desenvolvimento - ASP. NET
Sub-Relatórios com Crystal Reports e ASP.NET
O Crystal Reports é uma ferramenta excelente para a criação de relatórios complexos e com ótima aparência. Entre as suas diversas funcionalidades, possui uma que permite a inserção de vários relatórios no corpo de um relatório. Quando este relatório é executado, os relatórios que estão no seu corpo também são carregados. Vamos ver como isso funciona.
por Leandro Alves SantosMicrosoft Visual Studio 2003;
Crystal Reports 9;
MySql 5.0;
Connector/NET.
O Crystal Reports é uma ferramenta excelente para a criação de relatórios complexos e com ótima aparência. Entre as suas diversas funcionalidades, possui uma que permite a inserção de vários relatórios no corpo de um relatório. Quando este relatório é executado, os relatórios que estão no seu corpo também são carregados.
Vamos ver como isso funciona.
Banco de Dados
Crie uma nova base de dados no MySql com o nome de Funcionarios.
Crie a tabela func e crie os campos conforme a figura abaixo.
Crie a tabela telefones e crie os campos conforme a figura abaixo.
Insira alguns registros nas duas tabelas. Não esqueça de manter a integridade entre as tabelas adicionando no campo “IDFunc” da tabela Telefones, apenas dados que coincidam com o campo “IDFunc” da tabela Func.
XML
Agora abra o Visual Studio, crie um novo projeto ASP.NET em C# e adicione ao seu projeto 2 itens XML Schema. Eles servirão como fonte de dados para os relatórios. Dê os seguintes nomes para estes arquivos:
-> xmlFuncionarios.xsd
-> xmlTelefones.xsd
Vá até a guia ToolBox e adicione um element em cada um dos arquivos xml.
Agora precisamos inserir um nome e um tipo de dado para cada campo, veja nas figuras abaixo a estrutura dos arquivos xml.
Feito isso, salve e feche os arquivos.
CRYSTAL REPORTS
Adicione 1 item Crystal Report. Dê o nome de crFuncionarios.rpt. A cada arquivo Crystal Report adicionado no projeto, aparecerá a seguinte caixa:
Selecione a opção “Using The Report Expert” e clique em OK. Feito isso, aparecerá a caixa Standard Report Creation Wizard.
Selecione Create New Connection -> ADO.NET, abrirá uma nova caixa. Clique no botão “...”, selecione o arquivo xmlFuncionarios.xsd clicando duas vezes e clique em concluir.
De volta ao Standard Report Creation Wizard, arraste o xmlFuncionarios até o campo Selected Tables e clique em Concluir conforme figura abaixo.
Remova os campos PrintDate e PageNumber selecionando-os e clicando em Delete.
Agora você tem os campos do arquivo xml para inserir no seu relatório,
Você pode visualizar estes campos em Field Explorer -> Database Fields clique nos campos e arraste para a seção Details do seu arquivo crFuncionarios.rpt
Adicione ao seu projeto outro item Crystal Report e dê o nome de crTelefones.rpt.
Siga os mesmo passos do arquivo crFuncionarios.rpt para inserir a fonte de dados xmlTelefones.xsd no arquivo crTelefones.rpt.
Obs: Quando a opção ADO.NET for selecionada novamente, aparecerá a fonte de dados xmlFuncionarios e aparecerá também a opção Make New Connection, clique nesta última opção.
Assim que finalizar a configuração do arquivo crTelefones.rpt, salve e feche o arquivo.
Volte ao relatório crFuncionarios.rpt, vamos inserir o relatório crTelefones.rpt em seu corpo.
Clique com o botão direito no corpo do relatório crFuncionarios, clique em Insert -> Section.
Na caixa Section Expert, clique em Details e em seguida em Insert. Isso vai inserir uma nova Detail Section no relatório. Feito isso, clique em OK.
Clique novamente com o botão direito no corpo do relatório, clique em Insert -> Subreport e adicione-o na Detail Section que acabamos de criar. Feito isso, aparecerá a seguinte caixa:
Selecione o arquivo crTelefones.rpt e confirme a inclusão.
Clique com o botão direito no subreport que acabamos de adicionar e clique em Change Subreport Links. Selecione IDFunc em Available Fields e o insira no campo “Field(s) to link to”.
A combobox “Subreport parameter field to use”, informa o campo do relatório principal que queremos passar como parâmetro para o subreport. Com a opção “Select data in subreport based on a field” acionada, podemos informar o campo do subreport que será filtrado.
Para o nosso exemplo, o subreport funcionará da seguinte forma:
A cada registro da tabela func impresso, o campo IDFunc será enviado para o subrelatório e apenas
os registros de telefones em que o campo IDFunc coincida com o parâmetro enviado, serão impressos na tela.
Clique em OK e salve o arquivo crFuncionarios.rpt.
WebForm
No webform, vá até a guia toolbox e insira um CrystalReportViewer.
Faça uma referência para MySql.Data.DLL. Você pode fazer essa referência no Solution Explorer em References -> Add Reference.
Agora vamos analisar o código do arquivo .cs para carregar os arquivos xml e exibir o relatório.
Inclua os seguintes namespaces no seu código utilizando a palavra chave using:
MySql.Data.MySqlClient
CrystalDecisions.CrystalReports.Engine
Agora, execute a aplicação.
Este foi meu primeiro artigo, espero que tenham gostado.
Até logo.