Message posté par : Nighthawk
----------------------------------------
-----------------
JD écrit :
Bonjour,
Essayez d'utiliser spatialite gui (le geopackage est reconnu) et voyez si la création
de votre trigger avec les opérateurs > et < fonctionne.
-----------------
Bonjour,
Je viens de tester et le résultat est... étrange... Les trigger renvoyés par spatialite
gui ne sont pas les mêmes que le DB manager de QGIS... Disons que spatialite gui me
renvoie effectivement la requête que j'ai entré :
-----------------
Code :
CREATE TRIGGER trigger_area_TEST_up
AFTER UPDATE
ON 'TEST'
FOR EACH ROW
BEGIN UPDATE 'TEST'
SET SURF_B_HA = st_area(new.geom) / 10000,
NB_LGTS = (
CASE WHEN (("VOCATION" IN ( 'Habitat' , 'Mixte' )) AND
((new."SURF_B_HA" * "DENSITE") >= 1 ))
THEN round(new."SURF_B_HA" * "DENSITE")
WHEN (("VOCATION" IN ( 'Habitat' , 'Mixte' )) AND
((new."SURF_B_HA" * "DENSITE") < 1 ))
THEN round(new."SURF_B_HA" * "DENSITE" + 0.5 )
ELSE 0
END)
WHERE fid = new.fid;
END
-----------------
Par contre le DB manager de qgis me fait sauter le < :
-----------------
Code :
CREATE TRIGGER trigger_area_TEST_ins
AFTER INSERT
ON 'TEST'
FOR EACH ROW
BEGIN UPDATE 'TEST'
SET SURF_B_HA = st_area(new.geom) / 10000,
NB_LGTS_B = (
CASE WHEN (("VOCATION" IN ( 'Habitat' , 'Mixte' )) AND
((new."SURF_B_HA" * "DENSITE") >= 1 ))
THEN round(new."SURF_B_HA" * "DENSITE")
WHEN (("VOCATION" IN ( 'Habitat' , 'Mixte' )) AND
((new."SURF_B_HA" * "DENSITE") THEN round(new."SURF_B_HA" *
"DENSITE" + 0.5 )
ELSE 0
END)
WHERE fid = new.fid;
END
-----------------
On remarque que le < 1 disparaît et supprime le retour à la ligne... C'est un
fâcheux casse-tête quand même...
Mais merci pour ce tuyaux !
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=346884#p346884
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