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:

  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;

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:


José Carlos Macoratti