Comparando o valor de duas questões programaticamente
A partir do build 112, a pesquisa do Kankei possui novos métodos que permitem ao desenvolvedor comparar o conteúdo de duas questões em um filtro de pesquisa.
A pesquisa agora possui o método Filtrar().Expressao(), que pode ser usado para efetuar a comparação entre duas questões.
Esta feature está disponível apenas de forma programática. Uma mudança na tela de edição de filtros do Kankei Desktop está prevista para as próximas versões e permitirá que o usuário use diversas novas features, incluindo a comparação entre questões.
O método Expressao() aceita como parâmetro um texto contendo uma expressão comparativa entre os dois campos, onde o primeiro campo é representado pela expressão "{0}" e o segundo campo é representado por "{1}".
Exemplos:
{0} = {1}
{0} <> {1}
{0} > {1}
{0} >= {1}
{0} < {1}
{0} <= {1}
Após informar a expressão, é necessário chamar o método "Usando()" para informar quais as questões que serão comparadas. O método "Usando()" usa sintaxe similar aos métodos Listar(), AgruparPor() e OrdenarPor(), permitindo a utilização de métodos auxiliares para definir o formato das questões durante a comparação.
Exemplos:
p.Filtrar().Expressao("{0} = {1}").Usando("questao1","questao2");
p.Filtrar().Expressao("{0} <> {1}").Usando().DiaEMesDe("questaoData1","questaoData2");
p.Filtrar().Expressao("{0} > {1}").Usando().DiaDe("questaoData").E("questao2");
p.Filtrar().Expressao("{0} = {1}").Usando().NomeDaOpcaoDe("questaoOpcao").E("questaoTexto");
p.Filtrar().Expressao("{0} <= {1}").Usando().KeyDaOpcaoDe("questaoOpcao1","questaoOpcao2");
p.Filtrar().Expressao("{0} * 2 > {1} + 10").Usando("compNumero1","compNumero2");
p.Filtrar().Expressao("{0} + {1} > 500").Usando("compNumero1","compNumero2");
No caso de questões do tipo número, como nos últimos exemplo acima, é permitido usar na expressão os operadores matemáticos +, -, * e / para efetuar operações envolvendo os dois campos.