Einträge aus Untertabelle in neuen Datensatz übernehmen
Guten Morgen,
ich habe schon etliches zu ähnlichen Fällen gelesen, bekomme das aber nicht auf meinen Fall korrekt übertragen. Vielleicht kann mir ja jemand helfen:
Ich habe eine Untertabelle "Verbrauch" und würde gerne bei der generierung eines neuen Datensatzes in der Haupttabelle "Betriebsdaten" die Einträge aus der Untertabelle des letzten Datensatzes der Haupttabelle, übernehmen.
Die Untertabelle hat die Felder "Name", "Menge", "TS-Gehalt". Den Wert aus "TS-Gehalt" würde ich gerne aus dem letzten Datensatz mit übernehmen. "Menge" soll leer bleiben.
Grüße,
Andreas
3 Antworten
-
Hallo Andreas, gibt es auch in der Tabelle 'Betriebsdaten' ein Feld namens 'TS-Gehalt', in das der Wert übertragen werden soll? Dann würde ich es so versuchen:
let me := this;
let lastB := last(select Betriebsdaten where number(Nr) < me.number(Nr));
let lastV := last(lastB.Verbrauch);
me.'TS-Gehalt' := lastV.'TS-Gehalt'
Oder soll auch ein neuer Datensatz in der Untertabelle 'Verbrauch' angelegt und der Wert in diesen übertragen werden? Dann könnte man es so probieren:
let me := this;
let lastB := last(select Betriebsdaten where number(Nr) < me.number(Nr));
let lastV := last(lastB.Verbrauch);
let newV := (create Verbrauch);
newV.(Betriebsdaten := me);
newV.('TS-Gehalt' := lastV.'TS-Gehalt')
Nicht live getestet, deshalb wie immer ohne Gewähr.
Grüße, Axel
-
Hi,
vielen Dank für deine Hilfe. Sorry - das hatte ich vergessen zu erwähnen. Die Datensätze aus der Untertabelle sollen auch wieder im nächsten Datensatz in die Untertabelle. Dein zweites Beispiel funktioniert im Ansatz auch richtig. Allerdings möchte ich alle Datensätze aus der Untertabelle, die im vorherigen Datensatz verknüpft sind auch in der neuen Untertabelle wieder haben.Ich hab hier mal meine Testdatenbank hoch geladen:
https://oberndoerfer-my.sharepoint.com/:u:/g/personal/andreas_hof-oberndoerfer_de/EUntC68RKM5Fr1yYjNDZftkB30nstBHgeJYKVbWIxXrPpQ?e=c9cKciGrüße,
Andreas -
Ok. Ich hab nochmal versucht daran weiter zu basteln und zu verstehen... Die Schleife ist soweit ich das an anderen Beispielen gesehen habe, das was ich brauche - nur wie sage ich Ninox, dass es die Einträge nacheinander durchgehen muss? Im Moment bekomme ich den Fehler, dass i.lastV.'TS - Gehalt' mehrere Ergebnisse zurück gibt.
(Bitte nicht verwirren lassen - die Tabellennamen sind etwas angepasst.)
let me := this;
let lastB := last(select Betriebsdaten where number(Nr) < me.number(Nr));
let lastV := lastB.Substratverbrauch;
let newV := (create Substratverbrauch);
for i in select Substratverbrauch do
newV.(Betriebsdaten := me);
newV.('TS - Gehalt' := i.lastV.'TS - Gehalt');
newV.(Substrate := i.lastV.Substrate)
endGrüße,
Andreas
Content aside
- vor 3 JahrenZuletzt aktiv
- 3Antworten
- 235Ansichten