0

Datensatz kopieren

Wie kann ich einen Datensatz in eine andere Tabelle verschieben oder kopieren? (alle Tabellen sind gleich) Es handelt sich um eine Kursverwaltung.

8 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Rolf, es gibt eine Funktion namens "duplicate", die aber nur innerhalb einer Tabelle funktioniert. Um Inhalte von einer Tabelle in eine andere zu kopieren, müsste man dort mit "create" einen neuen Datensatz anlegen und dann die Datenfelder übertragen. Dazu könnte man in der Ausgangstabelle bspw. eine Schaltfläche namens "Datensatz kopieren" oder so erstellen und dort folgenden Code hinterlegen:

     

    let me := this;
    let newR := create ZIELTABELLE;
    newR.(FELD1 := me.FELD1);
    newR.(FELD2:= me.FELD2);
    newR.(FELD3 := me.FELD3);
    newR.(FELD4 := me.FELD4);
    usw.

     

    Will man den Datensatz verschieben, kann man noch einen Löschbefehl hinzufügen:

     

    delete me

     

    Und mit "openRecord(newR)" ließe sich der neue Datensatz auch gleich automatisch öffnen.

    • Rolf_Kunzi
    • vor 3 Jahren
    • Gemeldet - anzeigen

    das hat geklappt, Besten Dank
    Nun möchte ich noch die ZIELTABELLE als Variable übergeben, ich erhalte immer eine Fehlermeldung : Eine Tabelle wurde nicht gefunden....

    let tab := Kursziel;
    let me := this;
    let newR := (create tab);

    Dabei ist Kursziel eine TabellenText Feld.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Man kann den Tabellenname bei create nicht als Variable definieren. Er muss immer ausgeschrieben sein. Wenn du die create-Funktion variabel machen möchtest solltest du if..then oder Switch-Abfragen nutzen und davon abhängig die Tabelle erstellen.
    Bsp. Wenn 1 dann create Tabelle1 wenn 2 dann create Tabelle2 etc.

    • Rolf_Kunzi
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Schade, so hab ichs nun gemacht gibt halt viel Code aber zum Glück gibts Cute & Paste.
    Kann ich die Tabellennamen einer DB in ein Array abfüllen?

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Man kann alles in ein Array packen. Die Frage ist, wie du an den TabellenKlarnamen rankommst. Es gibt zur Zeit keine Funktion, die den TabellenKlarnamen ermittelt.
    Als Denkmodell könnte man die REST-API nutzen um aus dem Response die Tabellennamen als Klarnamen zu ermitteln. Funktioniert jedoch nur in den Cloudversionen von Ninox.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Noch eine Anmerkung.
    Mein Post bezüglich der Variablen für Tabellennamen war nicht ganz richtig. Die Funktion eval() könnte bei bestimmten Anwendungsfällen helfen. Schau dir mal das Praxisbeispiel 019 in der 0001_Ninox-Reference an. Dort ist solch ein Fall dargestellt inkl. zugehörigem ScriptCode.

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

    Soweit ich weiß(!), funktioniert eval() aber nur mit Lesezugriffen wie beim "select". Schreibende Aktionen wie "create" sind damit offenbar nicht möglich. 

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Deshalb der Konjunktiv. 😉 Danke für den Hinweis.