0

Datensatzübergreifender Trigger bei Datenänderung

Ich hatte vor einigen Tagen ein Zirkelbezugsproblem, das mithilfe von @dirk_pulver gestern dankenswerterweise gelöst wurde. Nun hat sich daraus leider eine neue Hürde ergeben, bei der mir vielleicht wieder jemand weiterhelfen kann?

 

Ein TABELLE enthält vereinfacht folgende Felder:

Zahl A: hier wird - wenn verfügbar - ein Betrag eingegeben

Funktion B: hier handelt es sich um einen Übertrag des Betrages D2 aus dem Vormonat:
let myDay := Datum;
let lastMonth := yearmonth(date(year(myDay), month(myDay), 0));
number((select TABELLE where yearmonth(Datum) = lastMonth).D2)

Zahl C: manuelle Eingabe

Datum 

Funktion D:  zählt A und C zusammen, wenn A leer ist, werden B und C addiert
if A = 0 then B + C
else if A = null then B + C 
else A + C 

 

Zahl D2: dieses Feld wird (um den Zirkelbezug zu verhindern) per Trigger nach Änderung von Feld A befüllt und "bedient" wiederum Feld B des Folgemonats: 
D2 := D

 

Das System, konkret die getriggerte Änderung  D2 funktioniert leider nur, wenn ich im aktuellen Datensatz eine manuelle Änderung z.B. durch Befüllung von Feld A durchführe. Auch die Weitergabe des geänderten resultierenden D2-Inhaltes an B des Folgemonats funktioniert immer, ebenso nicht die Berechnung von D. Aber dann ist leider Schluss. 

D2 im Datensatz des Folgemonats wird nicht mehr aktualisiert.

Wenn ich das richtig verstehe, liegt es daran, dass ich im Datensatz des Folgemonats, in welchem ich weder Feld A noch Feld C bearbeitet habe,  keine "manuelle" Änderung vorgenommen habe.  Allerdings handelt es sich um eine große Anzahl von Folgemonaten (so um die 50), somit wäre ein "Aktualisierungsbutton" in jedem Folgemonatsdatensatz wenig praktikabel.

Könnt ihr mir vielleicht behilflich sein?

1 Antwort

null
    • alexandra
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Hallo nochmal, ich habe die Button-Variante vorhin nicht zu Ende gedacht - aber jetzt hab ich's.

    Mit einer Schleife funktioniert der Button natürlich auch für ein update aller Folgedatensätze. 

    for i in select TABELLE do
        i.(D2 := D)
    end

Content aside

  • Status Answered
  • vor 10 MonatenZuletzt aktiv
  • 1Antworten
  • 35Ansichten
  • 1 Folge bereits