0

Nach Änderung ausführen bei Objekten einer Untertabelle.

Ich baue gerade an einer Lagerverwaltung und habe folgendes Problem: 

In der Tabelle "Artikel" gibt es ein feld "Anzahl Lager". 

In der Tabelle "Bestellungen" gibt es eine Untertabelle "Bestellpositionen" welche aus "Anzahl" einer Verknüpfung zum Artikel und einem Lieferstatus besteht. Nach der Änderung führe ich folgendes Skript aus um den Lagerbestand zu aktualisieren: 

let myNum := Anzahl + Artikel.'Anzahl Lager';
if raw(Lieferstatus) = 3 then
Artikel.('Anzahl Lager' := myNum)
end

Das funktioniert auch alles gut. Ich hätte aber gerne die Möglichkeit, die ganze Bestellung als geliefert zu markieren. Deswegen gibt es in der Tabelle Bestellungen ein Auswahlfeld mit den gleichen Optionen wie bei den Bestellpositionen mit dem Code

if raw(Lieferstatus) = 3 then
Bestellpositionen.(Lieferstatus := 3);
if raw(Lieferstatus) = 2 then
Bestellpositionen.(Lieferstatus := 2);
if raw(Lieferstatus) = 1 then
Bestellpositionen.(Lieferstatus := 1);
end

leider updated er mir dann aber den Lagerbestand bei den einzelnen Artikeln nicht, obwohl er den Status entsprechend ändert.

 

Ich habe gerade schon jede Menge Varianten durchprobiert mit for i in ... und so aber entweder es passiert garnichts, oder es passieren ganz komische Sachen. Wer kann mir bitte helfen?

3 Antworten

null
    • benediktdaschner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    if raw(Lieferstatus) = 3 then
    Bestellpositionen.(Lieferstatus := 3)
    else
    if raw(Lieferstatus) = 2 then
    Bestellpositionen.(Lieferstatus := 2)
    else
    if raw(Lieferstatus) = 1 then
    Bestellpositionen.(Lieferstatus := 1)
    end
    end
    end

    heißt es natürlich richtig 

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Benedikt,

    in diesem Fall würde ich die Formel wie folgt anpassen:

    ---
    let me:=this;
    if raw(Lieferstatus)<=3 then
    Bestellpositionen.Lieferstatus:=me.Lieferstatus
    end
    ---

    Wenn Lieferstatus insgesammt nur 3 Auswahlmöglichkeiten hat, dann kann man auf it then verzichten:

    ---
    let me:=this;
    Bestellpositionen.Lieferstatus:=me.Lieferstatus
    ---

     

    Leo

    • benediktdaschner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke, das macht den Teil natürlich einfacher aber darum ging es eigentlich nicht ;) 

     

    Das eigentliche Problem ist, dass er das Skript welches nach Änderung der Bestellpositionen ausführen soll nicht ausführt wenn ich den Status von der übergeordneten Tabelle ändere.

    Ich hab dazu was gelesen, und vermute daher, dass er das skript nicht ausführt wenn die Änderung von extern kommt?!

    Der Versuch den Lagerbestand aus der Tabelle Bestellungen für alle Bestellpositionen anzupassen ist jedoch kläglich gescheitert...