C# - Crystal Reports - Usando múltiplas tabelas
Neste artigo vamos criar um relatório usando o Crystal Reports, o Visual Studio 2010 e a linguagem C#.
Na seção Crystal Reports do site Macoratti .net existem muitos artigos introdutórios sobre o assunto, e, se você esta começando a usar o Crystal Reports sugiro que verifique primeiro os artigos desta seção.
Os recursos necessários para reproduzir o relatório criado neste artigo são:
Estando os componentes acima instalados e devidamente configurados vamos ao trabalho.
Criando um relatório com múltiplas tabelas
Vamos criar um banco de dados no SQL Server e 3 tabelas que serão usadas como exemplo para criar o nosso relatório.
Existem muitas formas de criar um banco de dados no SQL Server e neste exemplo eu vou usar o Server Explorer.
Abrindo o Visual Studio 2010 e ativando a visualização da janela Server Explorer você verá uma relação com as conexões e os banco de dados SQL Server existentes;
Clique com o botão direito sobre o item Data Connections e a seguir clique em Create New SQL Server DataBase;
A seguir informe o nome do seu servidor SQL Server local e o nome do banco de dados e clique em OK;
O banco de dados será criado e exibido na janela Server Explorer. Vamos agora criar 3 tabelas:
Clique com o botão direito sobre o item Tables e a seguir em Add New Table e a seguir defina o nome do campo, o seu tipo de dados e informe se ele suporta valores null ou não;
Crie cada uma das tabelas com os respectivos campos conforme mostra a figura abaixo:
Os campos produtoId, pedidoId e pedidosDetalhesId são chaves primárias do tipo Identity.
Abaixo vemos os relacionamentos entre as tabelas:
Preencha as tabelas com alguns dados para exibição nos relatórios.
Criando o projeto no Visual Studio 2010
No menu Project clique em New Project e a seguir selecione o template Visual C# -> Windows -> Windows Forms Application e informe o nome Crystal_MultiplasTabelas e clique no botão OK;
No menu Project clique em Add New Item;
Selecione Reporting e escolha Crystal Reports informando o nome RelatoriosMultiplasTabelas e clique no botão Add;
O assistente para criação de relatório do Crystal irá aparecer marque a opção - Utilizando o Assistente para Relatório e clique em OK;
Clique em Criar Nova Conexão e a seguir clique em OLE DB (ADO);
Na janela OLE DB (ADO) selecione o provedor MIcrosoft OLE DB for SQL Server e clique Avançar:
Informe o nome do seu servidor SQL Server local. Na figura o nome informado refere-se ao meu servidor SQL Server;
Informe também o banco de dados que criamos anteriormente e marque a opção Segurança Integrada e clique em Avançar:
Na próxima janela Clique em Avançar;
Expanda o itens Vendas -> Tabelas e verifique as tabelas que criamos sendo exibidas;
Selecione as três tabelas e clique no botão > para que as tabelas apareçam na lista de Tabelas Selecionadas:
Clique no botão Avançar e visualize os relacionamentos entre as tabelas:
Clique em Avançar e expanda cada uma das tabelas de modo a visualizar os seus campos:
A seguir selecione os campos indicados na lista Campos disponíveis e clique no botão > para que apareçam na lista - Campos a serem Exibidos;
Clique no botão Concluir para visualizar o relatório ainda no modo de design:
Clicando na guia Main Report Preview podemos visualizar o relatório criado com a ajuda do Assistente:
Podemos ajustar os títulos de cada campo exibido no relatório clicando com o botão direito do mouse sobre o campo e selecionando a opção Edit Text Object e a seguir alterando o texto conforme desejado:
Ajustando os nomes de cada título teremos o seguinte relatório:
Na guia lateral a ToolBox disponibiliza alguns objetos Crystal Reports que podemos usar para incrementar o relatório:
Exibindo o relatório criado na aplicação Windows Forms
Vamos abrir o formulário form1.cs da aplicação para exibir o relatório criado.
Para isso abra a ToolBox e na guia Crystal Reports selecione o item CrystalReportViewer e arraste para o formulário form1.cs:
Ajuste o componente no formulário e inclua também um botão de comando a partir da ToolBox:
Agora vamos definir o código do formulário e do evento Click do botão de comando Exibir Relatório conforme abaixo:
using System; using System.Windows.Forms; using CrystalDecisions.CrystalReports.Engine; namespace Crystal_MultiplasTabelas { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnExibirRelatorio_Click(object sender, EventArgs e) { try { ReportDocument cryRpt = new ReportDocument(); string path_ = System.AppDomain.CurrentDomain.BaseDirectory; ////@"C:\Users\Mac\Documents\Visual Studio 2010\Projects\Crystal_MultiplasTabelas\Crystal_MultiplasTabelas\RelatoriosMultiplasTabelas.rpt"; string caminho = path_ + "RelatoriosMultiplasTabelas.rpt"; cryRpt.Load(caminho); crystalReportViewer1.ReportSource = cryRpt; crystalReportViewer1.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message + "\n" + ex.InnerException.ToString()); } } } } |
Usamos a referência ao namespace CrystalDecisions.CrystalReports.Engine;
Criamos um novo objeto ReportDocument(): ReportDocument cryRpt = new ReportDocument();
Definimos o caminho do relatório: string caminho = path_ + "RelatoriosMultiplasTabelas.rpt";
O relatório será exibido conforme abaixo:
E estamos conversados...
Joã 14:6 Respondeu-lhe Jesus: Eu sou o caminho, e a verdade, e a vida; ninguém vem ao Pai, senão por mim.
Joã 12:46 Eu, que sou a luz, vim ao mundo, para que todo aquele que crê em mim não permaneça nas trevas.
Joã 10:9 Eu sou a porta; se alguém entrar a casa; o filho fica entrará e sairá, e achará pastagens.
Joã 6:35 Declarou-lhes Jesus. Eu sou o pão da vida; aquele que vem a mim, de modo algum terá fome, e quem crê em mim jamais terá sede.
Joã_15:1 Eu sou a videira verdadeira, e meu Pai é o viticultor.
Joã 10:11 Eu sou o bom pastor; o bom pastor dá a sua vida pelas ovelhas.
Joã_13:13 Vós me chamais Mestre e Senhor; e dizeis bem, porque eu o sou.
Joã 10:14 Eu sou o bom pastor; conheço
as minhas ovelhas, e elas me conhecem,
Joã 10:15 assim como o Pai me conhece e eu conheço o Pai; e dou a minha vida
pelas ovelhas.
Joã 11:25 Declarou-lhe Jesus: Eu sou a ressurreição e a vida; quem crê em mim, ainda que morra, viverá;
Referências: