Bom dia,
Estou a preparar um projeto de QFIELD que se sincroniza com uma base de dados POSTGIS e encontrei um problema de sincronização com o qual alguém já se deve ter deparado.
Quando um utilizador apaga o conteudo de um campo do tipo numero inteiro no QFIELD ele dá o seguinte erro de sincronização:
2021-08-06T09:36:43 CRITICAL Layer Comércio/Serviços : PostGIS error while changing attributes: ERROR: invalid input syntax for integer: “”
LINE 1: …ipamentos".“g_comercio_servicos” SET “idnpolicia”=‘’ WHERE "…
Pelo que compreendi da mensagem de erro, o QFIELD tenta sincronizar o campo idnpolicia com o valor ‘’ (vazio entre pelicas), “idnpolicia”=‘’, o que o POSTGIS interpreta como texto e dá erro. O correto seria o QFIELD atualizar campo com nulo, ou seja “idnpolicia”=null.
Alguém sabe como contornar este erro de sincronização?
Eu já defini este campo como range (para tentar que fosse o QFIELD o considerasse como numero), e tenho um constraint para garantir que o numero de policia inserido existe, mas gostava de poder limpar o conteudo do campo caso o comercio exista num estabelecimento sem numero de policia (existem muitos).
Constraint:
if(
idnpolicia is null,
true,
aggregate(layer:=‘Números de Polícia’,
aggregate:=‘max’,
expression:=“gid”,
filter:=“gid” = attribute(@parent,‘idnpolicia’))>0)
Nota: eu estou a fazer este constraint porque inicialmente usei um campo do tipo value relation mas o QFIELD rebentava porque a tabela de dominio era demasiado grande. Penso que estou a explorar os limites do QFIELD!
Desde já agradeço qualquer ajuda.
Melhores cumprimentos,
Pedro Fernandes
T. +351 962 253 300