0

Mit DMAF mehrere Datensätze in Untertabelle hinzufügen

Hallo zusammen,

ich habe mich an der Datenbank Rechnungen in Vorlagen orientiert und als Beispiel hier beigefügt.

Mein Ziel ist es, wie in der Überschrift geschrieben, über ein DMAF in Tabelle Rechnungen, mehrere Datensätze in der Untertabelle 'Rechnungspositionen' hinzuzufügen.

Dazu habe ich zunächst ein DMAF in Tabelle Rechnungen hinzugefügt und folgenden Code eingegeben

 

let me := this;
let cat := concat(Rechnungspositionen.Produkte.Nr);
let multi := numbers('Mehrfachauswahl (dynamisch)');
for i in multi do
    if not contains(cat, text(i)) then
        let c := (create Rechnungspositionen);
        c.(Rechnung := me);
        c.(Produkte := number(i))
    end
end;
for i in Rechnungspositionen do
    if not contains(text(multi), text(i.Produkte)) then
        delete i
    end
end

 

Den Code habe ich aus der DB 114 im Webinar EN 2022 und dementsprechend angepasst.

Der Code tut auch was er soll, jedoch weiss ich leider nicht, wie ich weitere Felder ausfüllen kann, denn zB der Netto-Preis aus Tabelle 'Produkte' wird nicht mitübetragen. Ich bin mir fast sicher, dass ich das im Teil

   let c := (create Rechnungspositionen);
        c.(Rechnung := me);
        c.(Produkte := number(i))

 

hinzufügen muss, aber ich komme nicht darauf.

Kann mir jemand bitte auf die Sprünge helfen?

 

Vielen Dank schon mal.

 

GRuß Kruna

8 Antworten

null
    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich bin cshon mal einen kleinen Schritt weiter und habe es nun zunächst mit einer variablen versucht

     

    let preis := for i in numbers('Mehrfachauswahl (dynamisch)') do
            record(Produkte,i).'Netto-Preis'
        end;

     

    und dann

            c.('Preis pro Einheit' := preis);

     

    eigegeben. Es wird angemeckert - Der Ausdruck liefert mehrere Ergebnisse zurück.

    first(preis) hilft auch nicht vel wieter. Was mache ich nur falsch?

     

    Gruß Kruna

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna, auf die Schnelle: Schon mal Folgendes probiert (nach dem "create")?

    c.(Preis := record(Produkte, i).'Netto-Preis'
    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Axel,

    TOP!!! das ist die Lösung. Jetzt funktioniert es. Vielen Dank und schönen Sonntag noch! :-)

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    entschuldige, ich doch noch eine Frage.

    Ich habe soweit alle Felder übertragen können, scheitere aber an dem Feld Mwst.

    In der Vorlage heißt es

    'Mwst.-Satz' := number(item(split(Produkte.text('MwSt.'), " "), 0))

    Ich weiß nicht, wie ich das hier umgesetzt bekommen könnte, zB so ähnlich wie

    c.('Mwst.-Satz' := record(number(item(split(Produkte, i).text('MwSt.')

     

    Gruß Kruna

      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Ich habe die DB jetzt nicht vor Augen, prinzipiell sollte sich aber das Feld 'Netto-Preis' aus obigem Beispiel einfach durch den neuen Feldbezug ersetzen lassen:

      c.('MwSt.-Satz' := record(Produkte, i).number(item(split(text('MwSt.'), " "), 0));
      
      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      PS: Oder vorher in eine Variable einlesen:

      let myMwSt := record(Produkte, i).'MwSt.';
      c.('MwSt.-Satz' := number(item(split(text(myMwSt), " "), 0));
      
      
      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro ich habe gerade beide Möglichkeiten ausprobiert und bei beiden wird

      Symbol erwartet : ")"

      in der Zeile end angemeckert.

      Weisst Du, woran könnte das liegen?

      Vielen Dank

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro entschuldigung, hat doch geklappt!! Wahrscheinlich ein Schreibfehler.

      Tausend Dank und Gruß

      Kruna