Message posté par : Maxime.C/117
----------------------------------------
Bonjour à tous,
Je travaille actuellement sur la réalisation d'un formulaire d'attributs pouvant
être utilisés avec Qfield, avec Qgis 3.14.16
La majorité des champs sont déjà automatisés (certains grâce à des formules/astuces
trouver sur ce forum, merci aux autres utilisateurs pour ça :D).
Cependant, un dernier champ me pose problème...
Pour poser le contexte :
Le Qfield doit faire office de carnet de terrain pour des personnes faisant du scanner
dans des bâtiments, le Qfield inclut alors les plans du bâtiment en question (des DXF
convertis en plusieurs SHP non éditables) et un shape point pour préciser la position du
scan et les remarques éventuelles (simple).
En plus des scans, une tête panoramique est également utilisée, cette dernière prend à
chaque fois 405 photos et les numéros de début et de fin d'acquisition photos doivent
être relevés.
Afin de faciliter l'utilisation aux équipes, j'avais écrit une première formule
permettant de remplir les champs Photo1 (Alias "Numéro Début Photo") et Photo2
(Alias "Numéro Fin Photo") relativement simple dans le formulaire d'attribut
(cf pièces jointes de la table attributaire).
Le champ "Photo1" a pour formule : IF ("Photo1" is
NULL,maximum("Photo2")+1, "Photo1")
et le champs "Photo2" : IF ("Photo2" is NULL,("Photo1")+405,
"Photo2")
Ces formules fonctionnent très bien, mais suite au 1er retour d'utilisation des
équipes, le soucis est qu'ils ont parfois besoin de reprendre le numéro de photos à 1
(lors d'un changement ou d'un vidage de leur carte SD).
J'avais laisser le champs éditable au cas où, justement, il y avait un soucis lors de
l'acquisition et qu'ils aient besoin de modifier manuellement le champs.
Cependant, lorsqu'ils souhaitent reprendre à 1, la formule va chercher le maximum de
la colonne Photo2 a chaque fois et ils doivent donc faire toute la suite de la
manipulation manuellement...
Du coup, j'avais dans l'idée de modifié la formule du champs "Photo1" en
faisant intervenir mon champ "id" (Automatisé avec la formule IF("id"
is NULL,maximum("id")+1,"id")).
J'ai essayé plusieurs formules y compris des requêtes utilisant CASE... WHEN...
THEN... ELSE comme par exemple :
CASE
WHEN "Photo1" IS NULL THEN
(aggregate('SHP_Test_Formule','max',"Photo2",'id' <
"id")) - 1
ELSE "Photo1"
END
Qgis accepte la formule, mais celle-ci renvoie toujours un résultat "Null" ...
Je souhaiterais donc savoir si ma formule était sur la bonne voie (mais peut-être avec une
erreur de syntaxe ou autre) ou s'il existait une formule complètement différente qui
me permettrait d'incrémenter mon champ "Photo1" en prenant la valeur
"Photo2"+1 de l'entité précédente lors de la création d'une nouvelle
entité.
En vous remerciant par avance pour vos réponses et en vous souhaitant mes meilleurs vœux
pour ce début d'année.
Cordialement,
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=357729#p357729
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net