Limitação ao usar campo do tipo Autocomplete com Numero Sequencial, "Identity" (bigint) na Descrição
No AgilityFlow, ao utilizar um campo do tipo Autocomplete e configurar a Descrição do item com o campo "Identity" de tipo bigint
, pode ocorrer o seguinte erro:
Causa
O erro ocorre porque, internamente, na busca que é feita para apresentar as infos no Autocomplete é utilizado um operador de comparação do tipo ~~*
(ilike), que é compatível apenas com campos text
ou varchar
. O tipo bigint
não pode ser utilizado diretamente em uma operação ilike
.
Solução
Para contornar esse comportamento, é necessário utilizar uma Query Customizável como origem dos dados do campo Autocomplete. Dessa forma, você pode fazer o cast adequado ou definir uma lógica personalizada para exibição e busca.
Exemplo de Ajuste
SELECT Id as Value, "CAMPO_DE_APRESENTACAO" as Name FROM TABELA
where deletado = false and
( @whereLikeCampoApresentacao IS NULL OR
"CAMPO_DE_APRESENTACAO" ilike '%' || @whereLikeCampoApresentacao || '%' )
Algumas regras importantes para a Query Customizada:
1 - O resultado final da query precisa ser os dados do formulário base que você definiu como campo de origem do autocomplete
2 - Na query, o campo de apresentação ainda precisa ser o mesmo do campo qe você definiu nas configurações do autocomplete
3 - Lembre-se de tratar os dados que já foram deletados, usando no where "...deletado = false.."
4 - A query deve retornar duas colunas com os seguintes alias: "Name" e "Value". O "Name" deve ser a mesma coluna definida no campo de apresentação (#) e o "Value", deve ser a coluna "id" do formulário definido como base de dados (Compras ). Exemplo:
SELECT Id as Value, "CAMPO_DE_APRESENTACAO" as Name FROM TABELA where deletado = false and ( @whereLikeCampoApresentacao IS NULL OR "CAMPO_DE_APRESENTACAO" ilike '%' || @whereLikeCampoApresentacao || '%' )