<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Bom dia,</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
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.</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Quando um utilizador apaga o conteudo de um campo do tipo numero inteiro no QFIELD ele dá o seguinte erro de sincronização:</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<blockquote style="margin-top:0;margin-bottom:0">
<blockquote style="margin-top:0;margin-bottom:0"><span style="color: rgb(200, 0, 0);">2021-08-06T09:36:43 CRITICAL </span>Layer Comércio/Serviços : PostGIS error while changing attributes: ERROR: invalid input syntax for integer: ""<br>
<div> LINE 1: ...ipamentos"."g_comercio_servicos" SET "idnpolicia"='' WHERE "...</div>
</blockquote>
</blockquote>
<div><br>
</div>
<div>Pelo que compreendi da mensagem de erro, o QFIELD tenta sincronizar o campo idnpolicia com o valor '' (vazio entre pelicas),
<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">
"idnpolicia"='', </span>o que o POSTGIS interpreta como texto e dá erro. O correto seria o QFIELD atualizar campo com nulo, ou seja <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">"idnpolicia"=null.</span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;"><br>
</span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">Alguém sabe como contornar este erro de sincronização?</span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;"><br>
</span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">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). </span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;"><br>
</span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">Constraint:</span></div>
<div><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">
<blockquote style="margin-top:0;margin-bottom:0">
<div>if(</div>
<blockquote style="margin-top:0;margin-bottom:0">
<div>idnpolicia is null,</div>
<div>true,</div>
<div>aggregate(<br>
</div>
<blockquote style="margin-top:0;margin-bottom:0">
<div>layer:='Números de Polícia',</div>
<div>aggregate:='max',</div>
<div>expression:="gid",</div>
<div>filter:="gid" = attribute(@parent,'idnpolicia'))>0</div>
</blockquote>
<div>)<br>
</div>
</blockquote>
</blockquote>
<div><br>
</div>
<div>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!</div>
<div><br>
</div>
<div>Desde já agradeço qualquer ajuda.<br>
</div>
<div><br>
</div>
<div>Melhores cumprimentos,</div>
<div><br>
</div>
<div>Pedro Fernandes</div>
<div>T. +351 962 253 300</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
</span></div>
</div>
</body>
</html>