0

p.create

Ich möchte per Button einen Datensatz neu anlegen, mit vielen Einträge aus dem alten Datensatz. Das gelingt sehr gut, nur schaffe ich es nicht, n Datensätze einer verbundenen Tabelle mit zu übertragen. Hier der Versuch und der Fehler: 

5 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Wolfgang,

    Wenn die Datensätze in der Untertabelle müssen auch dupliziert werden. Also nach deinem Schema:

    ---

    let me:=this;
    for i in UNTERTABELLENNAME do
    let new:=dublicate(i);
    new.HAUPTTABELLENNAME:=me
    end

    ---

    Wenn die Untertabelle als Komposition mit der Haupttabelle verknüpft ist, dann kannst du mit dublicate() auch den gesamten Prozess vereinfachen:
    ---
    "Plan duplizieren";
    let new:=dublicate(this);
    new.Datum:=date(2022,1,1)

    ---

    Leo

    • wolfgangmohr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke Leo, duplicate() scheint mir der bessere Weg. Allerdings müsste ich dann anders herum von einer weiteren verknüpften Tabelle KEINE Verknüpfungen übernehmen. Also einmal mit Übernahme UNTERTABELLE1, einmal ohne Übernahme UNTERTABELLE2. (Denn hier werden die neuen 22er Planzahlen erfasst)

    • wolfgangmohr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Kann ich bei duplicate() die Übernahme einer Untertabelle verhindern?

    • wolfgangmohr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, leider bekomme ich das nicht hin. Ninox meldet bei Deiner Funktion das die HAUPTTABELLE nicht bekannt ist. Und wo gehört der Abschnitt hin in der Funktion?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Wolfgang,

    statt HAUPTTABELLE muss natürlich der Name deiner Haupttabelle stehen, und zwar so wie das Verknüpfungsfeld in der Untertabelle benannt ist. 

    Wenn die Tabellen als Komposition verknüpft sind, dann wird die Intertabelle beim duplizieren des Datensatzes der Haupttabelle auch dupliziert. 

    man kann dann im nächsten Schritt die mitgenommenen Datensätze der Untertabelle auch löschen.

    ---

    let new:=dublicate (this);

    delete UNTERTABELLE

    ---

    ohne select werden hie nur mit dem duplizierten Datensatz verknüpfte Untertabellendatensätze gelöscht.

    Zu der Frage wo der Abschnitt hingehört:
    Da muss ich zuerst wissen ob die Verknüpfung als Komposition gesetzt ist. und wie genau die Felder heißen.

    Leo