Filtrando dados com operador LIKE no Reporting Services

      Nenhum comentário em Filtrando dados com operador LIKE no Reporting Services

Reporting Services 2008 R2: Filtrando dados com operador LIKE

Uma dúvida pode surgir em algum momento que for necessário utilizar numa tablix ou group filtro(s) que utilizem o operador “like”.
Aqui então segue uma dica muito valiosa.

1. Vá até “Filters” de um “Tablix” ou “Group” e adicione um filtro;
2. Selecione seu nome de campo para ser filtrado em “expression”;
3. Selecione o operador “LIKE”;

Agora vem a fonte do termo a ser pesquisado no like.

4. Em valor, clique no botão fx e uma nova janela abrirá; selecione ou digite a sua variável ou parametro para que fique da seguinte forma:


=Variables!Nome_variavel.Value (Se voce quiser filtrar um valor armazenado em variável)
=Parameters!Nome_Parametro.Value (Se o valor for referente a um parametro do relatório)
="Maria" (se quiser deixar fixo a palavra a ser filtrada)


Note bem que da forma como foi exemplificada, a pesquisa fica restrita a exatamente ao texto definido.
Se quiser que pesquisa seja feita iniciando pela palavra chave, acrescente um “*” depois da variavel ou parametro.
Se quiser que a pesquisa seja feita terminando pela palavra chave, acrescente um “*” antes da variavel ou parametro.

Para quem conhece a linguagem sql, vamos relembrar que no comando like voce pode trabalhar da seguinte forma:
– where nome LIKE ‘MARIA’ –busca somente conteudo completo “Maria”, mas nenhuma variação, ou seja texto exato.
ou
– where nome LIKE ‘MARIA%’ — busca tudo que começa com Maria, por ex: Maria José, Maria da Silva, etc.
ou
– where nome LIKE ‘%MARIA’ –busca tudo que termina com Maria, por ex: João Maria, José Maria.
ou
-where nome LIKE ‘%MARIA%’ — busca tudo que contem Maria, independente se começa ou termina. Por ex: João Maria Jr, André Maria Silva, Maria Andrade, etc.

Voltando ao nosso caso de filtro, entenda que voce pensaria da mesma forma, mas ao inves de ‘%’ voce usa ‘*’.
Nos exemplos que citei no começo do item 4, se for transformar ele em pesquisa por palavra chave (independente se fim ou começo), teriamos algo assim:
=”*” & Variables!Nome_variavel.Value & “*” (Se voce quiser filtrar um valor armazenado em variável)
=”*” & Parameters!Nome_Parametro.Value & “*” (Se o valor for referente a um parametro do relatório)
=”*Maria*” (se quiser deixar fixo a palavra a ser filtrada)

Esse procedimento funciona normalmente desde que voce utilize um unico filtro para cada campo.
Mas, vamos supor que voce queira filtrar um campo “nome”, mas que contenha “Maria” ou “Jose”.

Neste caso, voce pode seguir este outro roteiro, que também dá certo.
1. Vá até “Filters” de um “Tablix” ou “Group” e adicione um filtro;
2. No filtro, ajuste um tipo que valida a expressão:
(Expressão) =(Fields!nome.Value = “*” & Parameters!Nome_Parametro_1.Value & “*”) or (Fields!nome.Value = “*” & Parameters!Nome_Parametro_2.Value & “*”)
(Tipo) = Boolean
(Operador) =
(Valor) =True

Último exemplo, que podem ajudar como referencia:
(Expressão) =[territorio]
(Tipo) = Texto
(Operador) = Like
(Valor) =%o%th* (todos os nomes de territorio que incluem North e South no INICIO do nome.

Este exemplo foi baseado no conteudo de uma pagina no msdn e nesta página voce pode verificar outros exemplos de filtro.
http://msdn.microsoft.com/pt-br/library/cc627464.aspx

Pronto, problema resolvido!

Deixe uma resposta