@Hansa:
NEED_RECALC gibt an, das sich die Menge am LAger geändert hat, und das sich der Durchschnitts EK_PREIS geändert hat.
Mein Create Trigger sieht eigentlich ganz gleich aus, habe nur den letzten ALTER TRIGGER reingeschrieben, den ich auch selbst verwendet habe.
SQL-Code:
SET TERM ^ ;
CREATE TRIGGER "LB_INSERT" FOR "LAGER_BUCHUNG"
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE ART_EK_PREIS DOUBLE PRECISION;
BEGIN
IF (NEW.ARTIKELID > 0) THEN BEGIN
SELECT EK_PREIS FROM ARTIKEL WHERE ID = NEW.ARTIKELID INTO :ART_EK_PREIS;
UPDATE ARTIKEL SET NEED_RECALC = 1 WHERE ID = NEW.ARTIKELID;
NEW.EK_PREIS = :ART_EK_PREIS;
END
END
^
COMMIT WORK ^
SET TERM ;^
@Robert_G:
LagerStand muß (sollte) zumindest DOUBLE PRECISION da müssen relativ große Werte abgelegt werden (in Millionen Stückzahlen) aber auch Werte die mit einer Genauigkeit von 0.00001 (aber nicht beides gemeinsam)
EK_PREIS habe ich aus folgendem Punkt auch noch
DP, da ich alle meine Float Felder als
DP abgelegt habe, da ich sonst einfach öfters so schöne Werte wie 1.5623246E-129 anstatt von 0 bekomme (mit
DP nicht)
aabeer:
Dein aabeer versteh ich nicht ganz, Bei mir ist in EK_PREIS der Druchschnittspreis der letzten Artikel die ins Lager gebucht wurden drinnen. Der ändert sich dann öfters (bei jeder zu und abbuchung vom Lager).