Page 1
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 1/11
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:
Visual Studio 2010 ( qualquer versão)
Crystal Reports for VS 2010
SQL Server 2008 Express Edition (verifique a versão 32 ou 64 bits)
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;
Page 2
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 2/11
O banco de dados será criado e exibido na janela Server Explorer. Vamos agora criar 3 tabelas:
1. Produtos
2. Pedidos
3. PedidoDetalhes
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;
Page 3
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 3/11
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);
Page 4
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 4/11
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:
Page 5
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 5/11
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:
Page 6
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 6/11
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;
Page 7
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 7/11
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:
Page 8
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 8/11
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:
Page 9
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 9/11
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
{
Page 10
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 10/11
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:
Pegue o projeto completo aqui: RelatoriosMultiplasTabelas.zip
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:
Page 11
20/05/13 C# - Crystal Reports - Usando múltiplas tabelas
www.macoratti.net/13/01/c_crpt1.htm 11/11
Seção VB .NET do Site Macoratti.netSuper DVD .NET - A sua porta de entrada na plataforma .NET
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Seção C# do site Macoratti.net
Seção Crystal Reports do Site - Macoratti.net
Crystal Reports para o Visual Studio 2010 - Macoratti.net
WPF - Gerando relatórios no Crystal Reports 10 (beta)
José Carlos Macoratti