Codificação e Resultado Final do Projeto: Relatórios com Crystal Reports, em Windows Forms com C# - Parte 2

Neste artigo faremos toda a codificação necessária e veremos o resultado final com o projeto rodando.

 Olá pessoal, neste artigo veremos a codificação de nosso projeto e o resultado final, gerando assim um relatório customizado, de acordo com o parâmetro informado pelo usuário. Acompanhem:

 Voltando de onde paramos, expanda a aba Field Explorer, clique com o botão direito em Database Fields e clique em Database Expert. Expanda a aba ADO.NET DataSets, clique na tabela Products e clique no botão para enviá-la para o lado direito, fazendo assim com que o Relatório possa usar os dados desta tabela. Veja a tela, na Figura 01:


Figura 01 – Tela do Database Expert

 Arraste alguns campos para seção 3 (que se replicaram na seção 2), no exemplo arrastei os campos ProductID, ProductName, UnitPrice e UnitsInStock. Na seção 1, que é o cabeçalho, clique com o botão direito em Insert > Text Object. Dê um título para o relatório. Veja como deve ficar o layout final de nosso relatório, na Figura 02:


Figura 02 – Layout Final do Relatório

 Finalizando a parte de Design, crie um novo Formulário e arraste para ele o controle CrystalReportViewer.

 Va á página de códigos do Formulário e declare os seguintes namespaces:


using System.Data.SqlClient; using System.Configuration;

Agora crie um método chamado CarregarRelatorio e o chame no evento Load do seu formulário. Acompanhe a codificação (note que são apenas comandos básicos do ADO.NET):


private void CarregarRelatorio() { try { string strConexao = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; string strCommand = "SELECT * FROM Products"; SqlConnection objConexao = new SqlConnection(strConexao); SqlCommand objCommand = new SqlCommand(strCommand, objConexao); SqlDataAdapter objAdapter = new SqlDataAdapter(); DataSet objDataSet = new DataSet(); Produtos objReport = new Produtos(); objCommand.Connection = objConexao; objAdapter.SelectCommand = objCommand; objAdapter.Fill(objDataSet, "Products"); objReport.SetDataSource(objDataSet); crystalReportViewer1.ReportSource = objReport; } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message); } }

 Agora vá ao Form1, dê dois cliques no botão Gerar Relatório e instancie o Form2 chamando seu método ShowDialog(). Aperte F5, clique no botão e veja o resultado, como ilustra a Figura 03:


Figura 03 – Relatório com os dados da tabela Products

 Finalizando, vamos passar um filtro para o Relatório. Para isso, vá ao Report, abra a janela Field Explorer, clique com o botão direito em Parameter Fields e clique em New. Dê um nome ao parâmetro e clique em OK.

 Agora clique com o botão direito em qualquer parte do relatório, e selecione a opção Report > Selection Formula > Record (será aberto o editor de fórmulas do Crystal Report).

 Assim irei codificar para que meu relatório exiba os registros cujo ID for maior que o que eu passar no TextBox do Form1. Veja como isso é feito, na Figura 04:


Figura 04 – Editor de Fórmulas do Crystal Report

 Aperte ALT + C para checar se tem erros na fórmula. Se não tiver dê um CTRL + S para salvar a fórmula e fechar a tela.

 Agora crie uma variável global no Form2 do tipo string, que receberá o parâmetro vindo do Form1. Para isso devemos alterar o construtor de nossa classe do Form2. Veja nos códigos abaixo:

private string strParametro = string.Empty; public Form2(string parametro) { this.strParametro = parametro; InitializeComponent(); }

Finalmente, na chamada ao Form2, no evento click do btnGerarRelatorio, passe como parâmetro o txParametro.Text. Faça o teste informando o ID 30 e clicando no botão. Veja o resultado, na Figura 05:


Figura 05 – Produtos com ID maior que 30

 Assim finalizo o artigo. Muito obrigado a todos!

 Créditos à Bruno Belizário, que fez as videoaulas e ao Portal Linha de Código, por  onde pude baixá-las (mediante assinatura), estudá-las e posteriormente fazer este artigo.

 Um abraço, e até o próximo artigo.

 Wellington Balbo de Camargo

 wellingtonbalbo@gmail.com

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados