none
filtro com like "%" RRS feed

  • Pergunta

  • Opa!

    consegui fazer um filtro e tal vindo dum textbox.text.. tudo via código, exceto a definição dos parametros la no design do report

    ok tudo funciona.

    Agora preciso do seguinte:

    o meu filtro no relatorio estava com "campo = parametro"

    agora mudei para "campo Like parametro" e preciso que funcione como uma consulta normal com like, com os '%', dessa forma:

    "campo Like %parametro%"

    como posso fazer isso?

    ja tentei enfiar esse '%' em td q eh lugar rsrs

     

    sexta-feira, 14 de janeiro de 2011 11:51

Respostas

Todas as Respostas

  • e esse problema dá inicio a um outro tambem: nao consigo ignorar os filtros quando os valores sao nulos, por exemplo, na textbox o usuario nao digita nada, entao o texto dele vai como "" para o parametro e o meu relatorio nao retorna nada.
    sexta-feira, 14 de janeiro de 2011 12:02
  • Jefferson,

    Qual versão do Visual Studio você está utilizando? Você está trabalhando com local report ou server report? Basicamente, levando em consideração a descrição que você deu, bastaria você, na hora de passar o parâmetro para o relatório (você está utilizando o SetParameters provavelmente), já passar com os % antes e depois do valor passado...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sexta-feira, 14 de janeiro de 2011 12:42
    Moderador
  • exatamente André.

    Estou usando o visual studio 2008, e localreport.

    Tentei fazer o que voce disse, na hora que vou passar o parametro. Veja:

     ////6° passo, definindo os parametros
                    //Microsoft.Reporting.WinForms.ReportParameter[] parameters = new Microsoft.Reporting.WinForms.ReportParameter[4];
                    //parameters[0] = new Microsoft.Reporting.WinForms.ReportParameter("Operador_filtro", "%jeff%");
                    //parameters[1] = new Microsoft.Reporting.WinForms.ReportParameter("Acao_filtro", "*");
                    //parameters[2] = new Microsoft.Reporting.WinForms.ReportParameter("Tab_filtro", "*");
                    //parameters[3] = new Microsoft.Reporting.WinForms.ReportParameter("ID_filtro", "*");
                    //reportViewer1.LocalReport.SetParameters(parameters);

     

    isso foi para teste, anteriormente ao inves de jeff eu tinha o texto de uma textbox

    sexta-feira, 14 de janeiro de 2011 12:47
  • Jefferson,

    Estranho hein... E como você fez para utilizar esse parâmetro "Operador_filtro" no seu relatório (quais foram os passos que você seguiu)?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sexta-feira, 14 de janeiro de 2011 13:18
    Moderador
  • fui no design do relatorio, fui em report -> report parameteres -> add - > coloquei la o nome e o tipo string e repeti o nome no prompt.

    continuando no design do relatorio -> fui em propriedades da minha tabela - > filters -> selecionei o campo de operadores, selecionei o operador como LIKE, e no value fui em expression -> achei o parametro la e coloquei, entao ficou como "=Parameters!Operador_filtro.Value"

     

    apos isso eu invoco o metodo ali da maneira que lhe mostrei.

    testei somente com 1 parametro (o operador_filtro), mesmo usando LIKE, se eu tiro os %%, ele me retorna corretamente os registros que tem o operador jeff. Colocando os  % ele ja nao me retorna mais nada.

    sexta-feira, 14 de janeiro de 2011 13:25
  • Jefferson,

    Desculpe, mas, não tinha me tocado que você estava utilizando '%' como coringa... Para as expressões de filtro, você deve utilizar '*' como wildcard... Portanto, tente passar "*jeff*" no seu parâmetro e veja se dá certo...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta JeffersonDF sexta-feira, 14 de janeiro de 2011 15:42
    sexta-feira, 14 de janeiro de 2011 13:28
    Moderador
  • Funcionou André!

    É isso mesmo. AGora tem o outro problema. Como fazer para ignorar os outros parametros quando há mais de 1?

    Como no exemplo que eu postei a cima:

    parameters[1] = new Microsoft.Reporting.WinForms.ReportParameter("Acao_filtro", "*");

    tentei fazer isso passando * ( que pra mim funcionaria como "qualquer coisa")

    Provavelmente entao o * tambem é outro símbolo nesse filtro.

    sexta-feira, 14 de janeiro de 2011 13:48
  • Jefferson,

    Era pra ter funcionado com o asterisco sim... Inclusive pra confirmar testei aqui e funcionou (só que com um parâmetro só)... Vou fazer uns testes com mais de um parâmetro pra ver o resultado...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sexta-feira, 14 de janeiro de 2011 14:21
    Moderador
  • Jefferson,

    Testei com dois e funcionou normalmente também... Os campos são todos string?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sexta-feira, 14 de janeiro de 2011 15:30
    Moderador
  • Voce está correto André.

    Aqui funcionou perfeitamente com 2 parametros, passados da seguinte forma:

    Microsoft.Reporting.WinForms.ReportParameter[] parameters = new Microsoft.Reporting.WinForms.ReportParameter[2];

                    parameters[0] = new Microsoft.Reporting.WinForms.ReportParameter("Operador_filtro", "*jeff*");

                    parameters[1] = new Microsoft.Reporting.WinForms.ReportParameter("Acao_filtro", "*");

    reportViewer1.LocalReport.SetParameters(parameters);

     

    acho que comi bola anteriormente.

    Valeeu!

    sexta-feira, 14 de janeiro de 2011 15:42