Fundamentos de Filtragem
A construção de filtros obedece a regras de lógica estruturada para determinar quais registros devem ser extraídos do banco de dados e apresentados no relatório. Para obter resultados precisos, é essencial compreender os elementos básicos que compõem essas regras.
A Unidade Mínima (A Sentença)
A sentença é a regra de comparação mais básica de um filtro. Ela é sempre estruturada em três partes: o campo a ser avaliado, o operador de lógica/comparação e o valor de referência.
- Estrutura: [Campo] [Operador] [Valor]
- Exemplos: Idade > 18 ou Status = 'Ativo'.
- Comportamento: O motor do relatório avalia cada registro do banco de dados individualmente contra esta sentença. Se a condição for verdadeira para a linha em análise, o registro é selecionado para exibição.
A Condição Restritiva (Operador AND / E)
O operador AND atua como um afunilamento de dados (interseção matemática). Ele é utilizado para conectar duas ou mais sentenças, exigindo que todas as condições sejam obrigatoriamente verdadeiras ao mesmo tempo para um mesmo registro.
- Exemplo: Idade > 18 AND Estado = 'SP'
- Comportamento: O registro só será extraído se for maior de 18 anos e simultaneamente for do estado de São Paulo. A cada nova sentença conectada pelo operador AND, o volume de dados retornados diminui, pois os critérios de seleção tornam-se mais rigorosos.
A Condição Inclusiva (Operador OR / OU)
O operador OR atua como um expansor de dados (união matemática). Ele conecta duas ou mais sentenças, estabelecendo que o registro será extraído se pelo menos uma das condições for verdadeira.
- Exemplo: Estado = 'SP' OR Estado = 'RJ'
- Comportamento: O registro será exibido se for de São Paulo ou se for do Rio de Janeiro. A adição de sentenças com o operador OR cria rotas alternativas de aprovação, aumentando o volume de dados retornados.
Precedência e Isolamento (Uso de Parênteses)
Quando operadores AND e OR são combinados em um mesmo filtro, o sistema necessita de diretrizes matemáticas exatas para saber qual bloco de regras avaliar primeiro. O uso de parênteses ( ) define a ordem de resolução lógica, agrupando e isolando sentenças da mesma forma que em uma equação.
- Regra de Resolução: O sistema sempre avalia e resolve primeiro as sentenças que estão agrupadas dentro dos parênteses. O resultado desse bloco isolado é então processado contra o restante do filtro.
- Exemplo Estrutural: Ao utilizar Status = 'Ativo' AND (Estado = 'SP' OR Estado = 'RJ'), o sistema cria primeiro um subconjunto apenas com registros de SP e RJ. Em seguida, aplica a regra restritiva, filtrando desse subconjunto apenas aqueles que possuem o status ativo.
Cenários Práticos e Solução de Erros
Ao aplicar os fundamentos da filtragem na extração de dados, é comum a ocorrência de vícios lógicos na construção das sentenças. Abaixo, estão detalhados os equívocos mais frequentes de estruturação e a sintaxe correta para obter o resultado desejado.
O Paradoxo da Exclusão Mútua (Conflito de Estado)
Este cenário ocorre quando há a tentativa de exigir duas condições simultâneas para um mesmo campo, no mesmo registro, utilizando o operador AND.
- O Erro (Exemplo): Estado = 'SP' AND Estado = 'RJ'
- O Comportamento do Sistema: O motor do relatório avalia os dados linha por linha. Como uma única coluna ("Estado") em um único registro não pode conter dois valores distintos ao mesmo tempo, essa expressão lógica é matematicamente impossível. O processamento resultará sempre em um retorno vazio (zero registros).
- A Solução: Para buscar registros que correspondam a múltiplos valores possíveis dentro de um mesmo campo, deve-se aplicar a lógica inclusiva. A sintaxe correta é a substituição pelo operador OR: Estado = 'SP' OR Estado = 'RJ'.
A Confusão de Prioridades (Falta de Isolamento)
Este erro de extração surge ao misturar os operadores AND e OR em uma mesma expressão sem o uso de parênteses para delimitar a ordem exata de avaliação.
- O Erro (Exemplo): Status = 'Ativo' AND Estado = 'SP' OR Estado = 'RJ'
- O Comportamento do Sistema: Sem o isolamento adequado, o motor do banco de dados processará a primeira restrição (Status = 'Ativo' AND Estado = 'SP') e, na sequência, avaliará o OR de maneira completamente independente da primeira regra. O relatório resultante exibirá clientes ativos de São Paulo, mas também trará todos os clientes do Rio de Janeiro presentes no banco de dados (sejam eles ativos, inativos ou bloqueados), invalidando a regra de negócio.
- A Solução: Para garantir que a restrição principal (Status Ativo) seja forçada sobre todas as opções de estado, é obrigatório o uso de parênteses para agrupar as condições regionais em um bloco isolado. A sintaxe correta exige o agrupamento prévio: Status = 'Ativo' AND (Estado = 'SP' OR Estado = 'RJ').