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
-
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.
-
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.
-
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. -
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? -
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. -
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. -
Soweit ich weiß(!), funktioniert eval() aber nur mit Lesezugriffen wie beim "select". Schreibende Aktionen wie "create" sind damit offenbar nicht möglich.
-
Deshalb der Konjunktiv. Danke für den Hinweis.
Content aside
- vor 3 JahrenZuletzt aktiv
- 8Antworten
- 972Ansichten