Skip to main content

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:

ERROR: 42883: operator does not exist: bigint ~~* text POSITION: 146

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 || '%' )