sexta-feira, 31 de agosto de 2018

Como criar um relatório CrystalReport sem banco de dados


A um tempo tive problemas com as conexões do crystal report. Quando passava a aplicação para outros computadores tinha que trocar também a conexão, porem muitas vezes esquecia de fazer esse processo e ficava horas e horas para descobrir onde estava o problema. Por isso optei por usar os crystal report sem conexão directa a base de dados.

O que vamos ver é pequeno exemplo de como criar um relatório de Lista de Países com o Crystal Reports a partir de uma lista de objectos sem ter uma banco de dados.


Passo 1

Certifique-se de ter Crystal Report para o Visual Studio instalado.

Passo 2

Cria um novo projecto WinForm. Neste exemplo criei um projecto com nome TesteCrystalSemDB. A seguir, cria uma classe País como o seguinte:

public class Pais
    {
        public Pais(int codigo,string nome)
        {
            this.Codigo = codigo;
            this.NomePais = nome;
        }
        public int Codigo { get; set; }
        public string NomePais { get; set; }
    }

Passo 3


Adicione um novo formulário com o nome FormPaises, e adicione o seguinte método:

        private List<Pais> GetListaPaises()
        {
            List<Pais> Paises = new List<Pais>
            {
                new Pais(1, "Angola"),
                new Pais(2, "Brasil"),
                new Pais(3, "Portugal"),
                new Pais(6, "Moçambique"),
                new Pais(7, "Cabo-Verde"),
                new Pais(8, "Namibia")
            };

            return Paises;
        }

Passo 4

Adicione um DataSet. Nomeia-o por DataSet1 como na figura abaixo:



Dentro da DataSet adicione uma DataTable com o nome de Pais, e cria as colunas com os mesmos nome dos atributos da classe Pais. ( Esse é o maior segredo ;). Confirma na figura acima.

Passo 5


Adicione ao projecto um Crystal Report e nomeio-o por ReportPaises2, clique em Add.

 Aparecerá uma caixa como a que se segui, as  opeções criar um nome documento de crystal report, escolha a segunda, Relatório em Branco e clica OK.

Passo 6

Restamos definir a fonte de dados ou DataSet no nosso Crystal Report. Para isso, vai em Fiel Explorer dê um clique direito na Database Fiel para selecionar o opção Database Expert conforme a figura abaixo mostra:


No assistente, expande Dados de Projecto > Conjuntos de Dados ADO.NET > TesteCrystalSemDB.DataSet1e seleccione a DataTable Pais.


 Modele a aparência do relatório, e adicione os campos que deseja ao relatório, confirme na figura:

Passo 7


Volte para o formulário FormPaises, vai à ToolBox, escolha o CrystalReportViewer, coloque-o ao formulário e nomeia-o por crystalReportViewer1.

Selecione este novo componente e (1) no seu canto superior direito dê um clique para ver a lista de propriedades, (2) clique em "Escolher um Crystal Report, (3) Selecione o relatorio que criamos "ReportPaises2", (4) clique em OK.
 No evento Load do formulário cole o seguinte código:

private void FormPaises_Load(object sender, EventArgs e)
{
            Reports.ReportPaises2 cr = new Reports.ReportPaises2();
            crystalReportViewer1.ReportSource = cr;

            cr.SetDataSource(GetListaPaises());

}

Pronto, o relatório está feito, basta pressionar F5 para testar.


Bonus

A propriedade SetDataSource do CrystalReport pode receber qualquer colecção de dados. Por isso aproveita essa propriedade colocar a tua fonte da dados. Como eu disse no inicio deste post, não acho viável os dados serem dependentes da conexão do Crystal Report.

Related Articles

0 comentários:

Enviar um comentário

Pesquisar neste blogue

Com tecnologia do Blogger.

Páginas