none
FILTRO NO REPORT VIEW RRS feed

  • 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 Sub

     

    Dede de já agradeço pesssoal obrigado!!!

    terça-feira, 21 de outubro de 2008 10:04

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!!

    terça-feira, 21 de outubro de 2008 13:16
  • 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






    terça-feira, 21 de outubro de 2008 23:02
  • 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

     

     

    Dim Conexao As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Contick.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

    Dim sql As New System.Text.StringBuilder

    Dim conn As New SqlConnection(Conexao)

    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++

    quarta-feira, 22 de outubro de 2008 04:22
  •  

    Bom galera valew pela força,

     

    Mas ainda estou com dificuldades para resolver isso, é que estou um pouco sem tempo tbm mas na segunda vou retomar o projeto Obrigado por enquanto!!!!

     

    Abraços Baranauskas!!

    sexta-feira, 24 de outubro de 2008 10:05

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.

     

     

    terça-feira, 21 de outubro de 2008 13:10
    Moderador
  • 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!!

    terça-feira, 21 de outubro de 2008 13:16
  • 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






    terça-feira, 21 de outubro de 2008 23:02
  • 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

     

     

    Dim Conexao As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Contick.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

    Dim sql As New System.Text.StringBuilder

    Dim conn As New SqlConnection(Conexao)

    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++

    quarta-feira, 22 de outubro de 2008 04:22
  •  

    so uma obs eu usei um datetimepicker
    quarta-feira, 22 de outubro de 2008 04:24
  • 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.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    quarta-feira, 22 de outubro de 2008 09:53
    Moderador
  •  

    Bom galera valew pela força,

     

    Mas ainda estou com dificuldades para resolver isso, é que estou um pouco sem tempo tbm mas na segunda vou retomar o projeto Obrigado por enquanto!!!!

     

    Abraços Baranauskas!!

    sexta-feira, 24 de outubro de 2008 10:05
  • 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.
    sexta-feira, 16 de dezembro de 2011 20:32