Usuário com melhor resposta
filtro com like "%"

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