Gerando relatórios com Reportviewer usando LinqtoSql na linguagem C#
Vou ensinar como gerar relatório no reportviewer com base em uma consulta SQL
Para algumas versões do Visual Studio será necessário baixar o Package do ReportViewer
Clique aqui para converter de C# para Visual Basic.net
Crie uma tabela no banco de dados chamada Produtos, clique aqui para ver o Script SQL
Crie um novo projeto
Adicione alguns dados na tabela, eles serão mostrados no relatório posteriormente
Crie um novo projeto
No Visual Studio vá em:
File > New Project ou aperte CTRL + SHIFT + N
Selecione Visual C#> Windows Form Application e crie um projeto com o nome de ReportviewerLinq
Clique com o botão direito em cima do projeto vá em ADD > NEW ITEM e adicione um arquivo .DBML com o nome de DataBase
Abra a aba server Explorer e arraste a nossa tabela Produtos para dentro do DataCotext
Caso o seu banco de dados não esteja aparecendo Clique em Connect to Database e adicione a conexão com o seu banco de dados.
Na hora em que você adiciona a tabela, uma connectionstring já é criada, ou seja, o DataContext vai cuidar de todo o trabalho relacionado a conexão com banco de dados
Adicione um formulário no projeto e coloque o nome dele de FrmVisualizador
Vá na Aba Toolbox selecione e arraste o Componente Reportviewer no formulário
Clique com o botão direito em cima do projeto RelatorioReportViewer vá em ADD > NEW ITEM
ou aperte CTRL + SHIFT + A e adicione um relatório no projeto com o nome de Relatorio_Produtos
Dentro da aba Repot Data vá em NEW > DATASET
Caso não consiga visualizar a aba, clique dentro do relatório e aperte CTRL + ALT + D
Automaticamente será aberto o Data Source Configuration Wizard, então siga esses passos.
- Object
- Escolha o Objeto PRODUTO
3. Clique em Finish
Se tudo der certo
teremos nosso Dataset para o reportviewer criado, renomeie ele
para DataSet_Produtos e clique em OK
O Dataset irá
aparecer no Report Data.
Clique com o botão
direito DENTRO do relatório vá em INSERT > Table
Vá nas propriedades
da Table que acabou de ser inserida e na propriedade DataSetName
defina como DataSet_Produtos
Selecione as
colunas que quer mostrar na Table.
No FrmVisualizador clique no reportviewer e escolha o Relatorio_Produtos como Relatório a ser exibido
Ainda no FrmVisualizador, altere a visiblidade do ProdutoBindingSource, deixe ele como Public
Vamos voltar para o Form1 e adicionar
- 1 DataGridView
- 2 Buttons
- 1 Textbox
- 1 Label
Deixe o formulário igual está na imagem, e no DataGridView clique em Choose Data Source e selecione o Objeto Produto
Coloque o seguinte código no botão pesquisar.
DataBaseDataContext oDc = new DataBaseDataContext ();
produtoBindingSource.DataSource = from result in oDc.Produtos where result.Nome.Contains(TextNome.Text) select result;
Na primeira linha estamos instanciando o nosso .DBML.
Na segunda linha estamos dizendo que o DataSource do nosso ProdutoBindingSource vai receber todos os produtos que contenham no seu nome o que estiver digitado no TextNome.Text
Coloque o seguinte código no botão imprimir.
FrmVisualizador oForm = new FrmVisualizador();
oForm.ProdutoBindingSource.DataSource = this.produtoBindingSource.DataSource ;
oForm.Show();
Na primeira linha estamos instanciando o FrmVisualizador
Na segunda linha estamo dizendo que o Datasource do FrmVisualizador vai receber o DataSource da pesquisa realizada no Form1
Na terceira linha apenas chamamos o formulário com o relatório
Resultado Final
Além de ser fácil
de montar, com reportviewer temos a opção de expotar os dados para:
- Excel
- Word
Clique aqui para baixar o projeto completo