Usuário com melhor resposta
FILTRO NO REPORT VIEW

Pergunta
-
Bom dia pessoal,
Estou tentando fazer um filtro para um relatorio report view mas sem sucesso estou seguindo passo a passo no link http://www.macoratti.net/07/10/aspn_rv2.htm e acredito que o erro esteja no botão porque no link está em VB e estou desenvolvendo em C# alguem sabe como passar o codigo abaixo para C#? ou alguem poderia verificar se tem algum erro no link que estou seguindo.
Protected Sub btnFiltrar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFiltrar.Click ReportViewer1.LocalReport.Refresh()
End SubDede de já agradeço pesssoal obrigado!!!
Respostas
-
Opa tudo bem Laercio,
Eu ja tenho esses videos e foi por ai que aprendi criar os relatorios mas preciso fazer um filtro por data com um txtbox e um botão para trazer apenas o que eu colocar na busca ja assisti os videos não tem esse tipo de busca so tem um no site do macoratti no link http://www.macoratti.net/07/10/aspn_rv2.htm mas não ta rolando não tem algum problema.
Valew!!
-
Saudações,
Para mim o melhor jeito de colocar filtros é montar SQL dinamico, armazenar o resultado num Data Table e depois passá-lo para o relatório.
No vídeo lá do Laércio mostra como fazer.
Tomei muito coro pra aprender a mexer +/- com o reportviewer pois usava o Active Reports que era feito tudo via codigo.
A idéia é essa :
-Vc faz o relatório basico com os campos que deverão ser impressos
- Monta seu SQL que retorna os mesmos campos
- Passa o DT pra o relatorio e pronto
No form do relatório voce usa isso:
Dim Rds As ReportDataSource = New ReportDataSource("nomedodatasource_temdeserigualdordlc", rptDataTable)
Me.ReportViewer1.LocalReport.ReportEmbeddedResource = "nomedoprojeto" & "." & "Nomedoarquivo.rdlc"
Me.ReportViewer1.LocalReport.DataSources.Clear()
Me.ReportViewer1.LocalReport.DataSources.Add(Rds)
Me.ReportViewer1.RefreshReport()
Sempre programei em VB desde o 3.0, tentei migrar para o C# mas depois vi que nao adiantava ir contra as raizes :_)
Tem site por ai que converte o codigo entre elas.
[ ]'s -
por data ?
ah eu fiz um esses dias ai tb tava kebrando a cabeça no botao meu cod fiko assim kem sabe ti da uma luz ai
conn.Open()
sql.Append(
" Select Contrato.Cod_Contrato ")sql.Append(
" ,Empresa.Nome_Emp")sql.Append(
" ,Estabelecimento.Nome_Estab")sql.Append(
" ,Tipo_Cartao.Nome_cartao")sql.Append(
" ,Remessa.Cod_Remessa")sql.Append(
" ,Remessa.Dt_Remessa")sql.Append(
" ,Remessa.Vl_Liq")sql.Append(
" , Remessa.Vl_Bruto")sql.Append(
" , Remessa.Vl_Diverg")sql.Append(
" FROM Contrato inner join empresa ")sql.Append(
" ON Contrato.Cod_Emp = Empresa.Cod_Emp INNER JOIN Estabelecimento")sql.Append(
" ON Contrato.Cod_Estab = Estabelecimento.Cod_Estab INNER JOIN Remessa ON Contrato.Cod_Contrato = Remessa.Cod_Contrato INNER JOIN Tipo_Cartao ON Contrato.Cod_Cartao = Tipo_Cartao.Cod_Cartao ")' eu tava kebrando a cabeça na parte o where
sql.Append(
" Where Remessa.Dt_Remessa between ' " + Convert.ToDateTime(datetimeinicial.Text).ToString("yyyy/MM/dd") + " ' and ' " + Convert.ToDateTime(datetimefinal.Text).ToString("yyyy/MM/dd") + " ' and estabelecimento.nome_estab = ' " + cbestab.Text + " ' ") Dim daremessa As New SqlDataAdapter(sql.ToString, conn) dsRelatorio As New DataSet1()daremessa.Fill(dsRelatorio.DataTable1)
conn.Close()
Dim relatorio As New CrystalReport1()relatorio.SetDataSource(dsRelatorio)
Dim f As New Form2(relatorio)f.Show()
espero q ti ajude abraz t++
-
Todas as Respostas
-
Olá Fabio,
Existem algumas formas para definir o Filtro de um relatório (Crystal Reports ou ReportViewer).
Criei um tópico fixo no fórum MSDN com algumas dicas sobre a construção de relatórios com Crystal Reports e ReportView (incluindo 2 vídeos com vários exemplos de como construir relatórios com os componentes, licença, distribuição, service packs, etc.):
Inclusive com exemplos passo a passo para definir um parâmetro (filtro) com Crystal Reports e ReportViewer
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3761576&SiteID=21
Valeu!
Ajude a melhorar o nosso Fórum!
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
Opa tudo bem Laercio,
Eu ja tenho esses videos e foi por ai que aprendi criar os relatorios mas preciso fazer um filtro por data com um txtbox e um botão para trazer apenas o que eu colocar na busca ja assisti os videos não tem esse tipo de busca so tem um no site do macoratti no link http://www.macoratti.net/07/10/aspn_rv2.htm mas não ta rolando não tem algum problema.
Valew!!
-
Saudações,
Para mim o melhor jeito de colocar filtros é montar SQL dinamico, armazenar o resultado num Data Table e depois passá-lo para o relatório.
No vídeo lá do Laércio mostra como fazer.
Tomei muito coro pra aprender a mexer +/- com o reportviewer pois usava o Active Reports que era feito tudo via codigo.
A idéia é essa :
-Vc faz o relatório basico com os campos que deverão ser impressos
- Monta seu SQL que retorna os mesmos campos
- Passa o DT pra o relatorio e pronto
No form do relatório voce usa isso:
Dim Rds As ReportDataSource = New ReportDataSource("nomedodatasource_temdeserigualdordlc", rptDataTable)
Me.ReportViewer1.LocalReport.ReportEmbeddedResource = "nomedoprojeto" & "." & "Nomedoarquivo.rdlc"
Me.ReportViewer1.LocalReport.DataSources.Clear()
Me.ReportViewer1.LocalReport.DataSources.Add(Rds)
Me.ReportViewer1.RefreshReport()
Sempre programei em VB desde o 3.0, tentei migrar para o C# mas depois vi que nao adiantava ir contra as raizes :_)
Tem site por ai que converte o codigo entre elas.
[ ]'s -
por data ?
ah eu fiz um esses dias ai tb tava kebrando a cabeça no botao meu cod fiko assim kem sabe ti da uma luz ai
conn.Open()
sql.Append(
" Select Contrato.Cod_Contrato ")sql.Append(
" ,Empresa.Nome_Emp")sql.Append(
" ,Estabelecimento.Nome_Estab")sql.Append(
" ,Tipo_Cartao.Nome_cartao")sql.Append(
" ,Remessa.Cod_Remessa")sql.Append(
" ,Remessa.Dt_Remessa")sql.Append(
" ,Remessa.Vl_Liq")sql.Append(
" , Remessa.Vl_Bruto")sql.Append(
" , Remessa.Vl_Diverg")sql.Append(
" FROM Contrato inner join empresa ")sql.Append(
" ON Contrato.Cod_Emp = Empresa.Cod_Emp INNER JOIN Estabelecimento")sql.Append(
" ON Contrato.Cod_Estab = Estabelecimento.Cod_Estab INNER JOIN Remessa ON Contrato.Cod_Contrato = Remessa.Cod_Contrato INNER JOIN Tipo_Cartao ON Contrato.Cod_Cartao = Tipo_Cartao.Cod_Cartao ")' eu tava kebrando a cabeça na parte o where
sql.Append(
" Where Remessa.Dt_Remessa between ' " + Convert.ToDateTime(datetimeinicial.Text).ToString("yyyy/MM/dd") + " ' and ' " + Convert.ToDateTime(datetimefinal.Text).ToString("yyyy/MM/dd") + " ' and estabelecimento.nome_estab = ' " + cbestab.Text + " ' ") Dim daremessa As New SqlDataAdapter(sql.ToString, conn) dsRelatorio As New DataSet1()daremessa.Fill(dsRelatorio.DataTable1)
conn.Close()
Dim relatorio As New CrystalReport1()relatorio.SetDataSource(dsRelatorio)
Dim f As New Form2(relatorio)f.Show()
espero q ti ajude abraz t++
-
-
Opa!
Maykonctrl e Lecio, fico feliz de ver outros membros do Fórum MSDN Brasil passando esse tipo de informação, valeu!
Gostaria de complementar algumas informações:
Uma das vantagens em definir o datasource de um relatório (seja com Crystal Reports ou Reportview) via código (conforme eu mostro nos vídeos):
Flexibilidade em montar os filtros pelo SQL e não através de parâmetros no próprio relatório (ou seja, a condição do filtro fica no próprio SQL e não no relatório). As vezes isso nem sempre é possível (por exemplo: se o relatório for construido utilizando o Reporting Services do SQL Server, será necessário definir os parâmetros no próprio relatório para fazer o filtro e neste caso, a melhor opção que eu encontrei foi criar uma procedure no lugar de uma consulta SQL para receber esses parâmetros e devolver o resultado para o relatório no Reporting Services).
[ ] 's
Laércio.
-
-
Saudações,
Para mim o melhor jeito de colocar filtros é montar SQL dinamico, armazenar o resultado num Data Table e depois passá-lo para o relatório.
No vídeo lá do Laércio mostra como fazer.
Tomei muito coro pra aprender a mexer +/- com o reportviewer pois usava o Active Reports que era feito tudo via codigo.
A idéia é essa :
-Vc faz o relatório basico com os campos que deverão ser impressos
- Monta seu SQL que retorna os mesmos campos
- Passa o DT pra o relatorio e pronto
No form do relatório voce usa isso:
Dim Rds As ReportDataSource = New ReportDataSource("nomedodatasource_temdeserigualdordlc", rptDataTable)
Me.ReportViewer1.LocalReport.ReportEmbeddedResource = "nomedoprojeto" & "." & "Nomedoarquivo.rdlc"
Me.ReportViewer1.LocalReport.DataSources.Clear()
Me.ReportViewer1.LocalReport.DataSources.Add(Rds)
Me.ReportViewer1.RefreshReport()
Sempre programei em VB desde o 3.0, tentei migrar para o C# mas depois vi que nao adiantava ir contra as raizes :_)
Tem site por ai que converte o codigo entre elas.
[ ]'s
lecio por favor estou com o mesmo problema mas nao estou entendendo o que fez.