Você está na página 1de 8

Terça-feira,

14 de Novembro de
2006 Buscar

Por Leandro Alves Santos


lealves_82@yahoo.com.br

Sub-Relatórios com Crystal Reports e ASP.NET


Para a realizaç&atildeo deste artigo foram utilizados:
Microsoft Visual Studio 2003;
Crystal Reports 9;
MySql 5.0;
Connector/NET.

O Crystal Reports é uma ferramenta excelente para a criaç&atildeo de relat&oacuterios complexos e


com &oacutetima apar&ecircncia. Entre as suas diversas funcionalidades, possui uma que permite a
inserç&atildeo de v&aacuterios relat&oacuterios no corpo de um relat&oacuterio. Quando este
relat&oacuterio é executado, os relat&oacuterios que est&atildeo no seu corpo tamb&eacutem
s&atildeo 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&atildeo 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&atildeo como fonte de dados para os relat&oacuterios. 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ç&atildeo “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&oacuterio, Você pode visualizar
estes campos em Field Explorer -> Database Fields clique nos campos e arraste para a seç&atildeo
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ç&atildeo ADO.NET for selecionada novamente, aparecerá a fonte de dados
xmlFuncionarios e aparecerá tamb&eacutem a opç&atildeo Make New Connection, clique nesta
&uacuteltima opç&atildeo.

Assim que finalizar a configuraç&atildeo do arquivo crTelefones.rpt, salve e feche o arquivo.

Volte ao relat&oacuterio crFuncionarios.rpt, vamos inserir o relat&oacuterio crTelefones.rpt em seu


corpo.

Clique com o bot&atildeo direito no corpo do relat&oacuterio 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&oacuterio. Feito isso, clique em OK.
Clique novamente com o bot&atildeo direito no corpo do relat&oacuterio, 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&atildeo.

Clique com o bot&atildeo 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&oacuterio principal que
queremos passar como par&acircmetro para o subreport. Com a opç&atildeo “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&oacuterio e
apenas os registros de telefones em que o campo IDFunc coincida com o par&acircmetro enviado,
ser&atildeo 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&ecircncia para MySql.Data.DLL. Você pode fazer essa refer&ecircncia no Solution
Explorer em References -> Add Reference.

Agora vamos analisar o c&oacutedigo do arquivo .cs para carregar os arquivos xml e exibir o
relat&oacuterio.

Inclua os seguintes namespaces no seu c&oacutedigo utilizando a palavra chave using:


MySql.Data.MySqlClient
CrystalDecisions.CrystalReports.Engine
Agora, execute a aplicaç&atildeo.
Este foi meu primeiro artigo, espero que tenham gostado.

Até logo.

Voltar

..............................................................................................................................................
© Copyright 2001-2006 Codeline Tecnologia em Informática Ltda. | Política de privacidade | Política de uso | Fale conosco

» Site hospedado na Porta 80 Web Hosting «

Você também pode gostar