Here's some "witchcraft"

In a spatialite DB, I have a polygon table "fields". I Added an integer column "val"
and a column "result_val" of type real. Then I set up this trigger:

CREATE TRIGGER update_result_trig
AFTER UPDATE ON "fields"
BEGIN
UPDATE fields
SET result_val=(val*ST_Area(geometry))
WHERE ROWID=NEW.ROWID;
END

I loaded the spatialite polygon layer into QGIS and set the "result_val"
attribute as a label for each polygon. Now I started editing. At each click of the save button the label, representing the result_val, changes. Seems to work
nicely.

HTH
Micha


Thanks a lot, Micha!

Did not hurt at all :)
One little glitch maybe:
I first imported the shape into the spatialite db, then created the new trigger according to your example and then loaded it into qgis.
Created a label for the calculated value.
Editing the polygon and saving returns the new values.
BUT, these values now seem to be real values with up to 13 digits precision. The table manager plugin says, the field is still integer. How is this possible to store real values in an integer field?!

Can someone show me the way to round the values or to tell spatialite to respect the integer settings?

Further on the original question:
So, it seems there is no way to perform such actions from within qgis directly, which is a pity. It will be a very hard if not impossible mission to teach those people into spatialite ... they are dinosaurs from the ArcView3.x-aeons.

Thanx for your answers
Bernd

--
Bernd Vogelgesang * Siedlerstrasse 2 * 91083 Baiersdorf * +49-9133-825374
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to