André Alves de Lima

Talking about Software Development and more…

Passando parâmetros para relatórios do Crystal Reports com C#

Toda ferramenta de geração de relatórios possibilita a criação de parâmetros que podem ser passados da aplicação para o relatório. No caso do Crystal Reports, é claro que não poderia ser diferente. A passagem de parâmetros para relatórios do Crystal Reports com C# é extremamente descomplicada. Com simplesmente uma linha de código para cada parâmetro, conseguimos configurar os valores que desejamos passar para o relatório.

No artigo de hoje você verá qual é a utilidade de criarmos parâmetros nos nossos relatórios, como podemos criar parâmetros em relatórios do Crystal Reports e como passar valores para esses parâmetros através de uma aplicação Windows Forms.

Por que utilizar parâmetros?

Antes de demonstrar como podemos utilizar parâmetros com o Crystal Reports, vale a pena conversarmos um pouquinho sobre a utilidade de parâmetros em relatórios. Independentemente da ferramenta que você utilize para gerar os seus relatórios, é sempre interessante lembrar que é possível passarmos valores fixos para o relatório.

Os parâmetros podem ter inúmeras utilidades nos seus relatórios, sendo as principais a filtragem de dados e a customização de layout.

Imagine que você alimenta o seu relatório com dados de vários clientes. Às vezes não é possível alterarmos a forma com que os dados são passados para o relatório (por exemplo, se o relatório é alimentado com o resultado de uma stored procedure). Dessa forma, a única maneira de filtrarmos os dados do relatório é passando um parâmetro para ele. Nesse caso, poderíamos, por exemplo, passar o ID do cliente como parâmetro para o relatório e, em seguida, utilizaríamos o valor desse parâmetro para filtrarmos quais dados serão exibidos no relatório.

Já quanto a questão de customização de layout, imagine que um mesmo relatório seja exibido para todos os usuários do sistema. Porém, somente administradores do sistema podem ver uma determinada área do relatório. Nesse caso, poderíamos criar um parâmetro com o grupo do usuário e utilizaríamos o valor desse parâmetro para exibirmos ou não essa área do relatório.

Criando parâmetros no relatório

Agora que você já entendeu a utilidade dos parâmetros em relatórios, vamos ver como podemos passar parâmetros para os nossos relatórios do Crystal Reports através do C#?

Primeiramente, vamos construir um exemplo absurdamente simples de relatório utilizando um projeto do tipo “Windows Forms Application“. Uma vez criado o projeto, vamos adicionar um novo item do tipo “Crystal Reports” (disponível dentro da categoria “Reporting“). Dê o nome de “RelatorioParametro” para o novo relatório que será criado:

Com o relatório criado, vamos adicionar um novo parâmetro. Fazemos isso através da janela “Field Explorer“, clicando com o botão direito em “Parameter Fields” e escolhendo a opção “New“:

Na janela de configuração do parâmetro, dê o nome de “GrupoUsuario” para o novo parâmetro e escolha o tipo de dados “String“:

Feito isso, arraste o parâmetro para dentro da área de cabeçalho de página do relatório:

Obviamente, em um cenário real, o seu relatório será muito mais complexo. No exemplo deste artigo só arrastamos o parâmetro para dentro do relatório para checarmos se o valor está realmente sendo recebido no relatório. Nos seus relatórios “de verdade“, você pode utilizar os valores do parâmetro para praticamente qualquer coisa, desde fórmulas até expressões de visibilidade dos controles.

Passando valores para os parâmetros

Com o parâmetro criado, vamos testar como ficaria a exibição desse relatório no nosso formulário. Para isso, vamos adicionar um controle do tipo “CrystalReportViewer” no nosso formulário:

Feito isso, na smart tag do controle, escolha a opção “Choose a Crystal Report” e encontre o relatório que criamos anteriormente na lista de opções:

Nota: não esqueça de renomear o relatório, uma vez que ele virá com o nome “RelatorioParametro1“. Eu alterei para “RelatorioParametro” (sem o “1” no final):

O que acontece se rodarmos a aplicação nesse momento? Simples: o Crystal Reports perguntará o valor para o parâmetro diretamente dentro da interface do controle:

Para evitarmos isso, temos que passar o valor desejado para esse parâmetro antes que o relatório seja exibido. Fazemos isso utilizando o método “SetParameterValue“, sendo que o primeiro item que devemos passar para esse método é o nome do parâmetro (“GrupoUsuario“) e o segundo item é o valor do parâmetro (“Admin“):

        public FormCrystal()
        {
            InitializeComponent();
            RelatorioParametro.SetParameterValue("GrupoUsuario", "Admin");
        }

Execute a aplicação e veja o resultado:

Concluindo

A passagem de parâmetros é um conceito muito importante na geração de relatórios. Eles podem ser utilizados para diversas finalidades, sendo as mais comuns a customização de layout e filtragem de dados.

Nesse artigo você aprendeu a passar parâmetros para relatórios do Crystal Reports com C#. Espero que o tópico tenha ficado claro e que você tenha entendido a utilidade da passagem de parâmetros ao gerarmos relatórios com qualquer ferramenta que seja.

E você, já desenvolveu relatórios com o Crystal Reports? Você sabia que dá para instalar o Crystal Reports de graça no Visual Studio Professional ou superior? Conte-nos depois nos comentários como é que foi a sua experiência de passagem de parâmetros para o Crystal Reports.

Por fim, convido você a inscrever-se na minha newsletter. Ao fazer isso, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário logo abaixo.

Até a próxima!

André Lima

Image by Pixabay used under Creative Commons
https://pixabay.com/en/arrows-centre-central-four-765153/

Newsletter do André Lima

* indicates required



Powered by MailChimp

10 thoughts on “Passando parâmetros para relatórios do Crystal Reports com C#

  • Pierre disse:

    André,

    Muito didático e esclarecedor o seu post. O Cristal Reports funciona no Visual Studio 2015 versão Community.

    • andrealveslima disse:

      Olá Pierre, obrigado pelo elogio!

      Sim, a última versão do Crystal Reports (SP 16, que você encontra aqui) funciona no Visual Studio 2015 Community..

      Abraço!
      André Lima

  • Marcelo Ramos disse:

    André, obrigado pelo assunto, tinha dúvida quanto a passagem de parâmetro. Já pesquisei sobre o assunto e só encontrava explicações complexas. Já tive problemas em não saber utilizar chegando até gravar valor um banco de dados para refletir no relatório. Quando a mente não pensa o corpo padece.
    Abraço
    Marcelo Ramos – RJ

    • andrealveslima disse:

      Olá Marcelo, obrigado pelo comentário!

      Que bom que a explicação que eu dei nesse artigo te ajudou a compreender esse tema.. Realmente quando a gente não entende direito um assunto a gente acaba fazendo coisas mirabolantes para conseguir chegar no mesmo resultado.. Eu já fiz muito disso também, ehhehe..

      Abraço!
      André Lima

  • Fábio Guimarães disse:

    André, bom dia, estou com uma certa dificuldade com Crystal report, no que se refere a passagem de parâmetros, fiz tudo certo porem, quando seleciono uma data no componente datetimepicker essa data não está funcionando.

    • andrealveslima disse:

      Olá Fábio, obrigado pelo comentário!

      Não sei se você ainda está com essa dificuldade na passagem de parâmetros no Crystal, mas, se ainda estiver, você poderia mandar o código que você está utilizando para enviar o parâmetro para o relatório? Você se assegurou que o tipo do parâmetro no relatório está correto?

      Se preferir, mande o código direto no meu e-mail: contato [arroba] andrealveslima [ponto] com [ponto] br

      Um grande abraço!
      André Lima

      • Fábio Guimarães disse:

        Boa tarde André, então depois de quebrar muito a cabeça, eu consegui, fiz passando os parâmetros de data pelo método construtor do form onde está o relatório, e acabou dando certo. Valeu..

        • andrealveslima disse:

          Beleza Fábio! Que bom que deu certo.. Qualquer coisa entre em contato novamente..

          Abraço!
          André Lima

          • Dilson J. Hasselmann disse:

            André, boa tarde!

            O prompt do parametro sempre aparece antes da apresentação do relatório na Tela, porém gostaria de suprimir este prompt da minha aplicação, estou utilizando o CR 2017 e VB.NET 2017, se puder ajudar-me fico grato, obrigado!

          • andrealveslima disse:

            Olá Dilson!

            Como é que está o código de exibição do seu relatório? Esse tipo de comportamento normalmente acontece quando o “refresh” (ou “RefreshReport”) do relatório é chamado mais de uma vez.. Tente comentar métodos de refresh que eventualmente possam estar compondo o seu código e veja se o prompt deixa de aparecer..

            Abraço!
            André Lima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *