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:
Figura 01 – Tela do Database Expert
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);
}
}
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).
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