Datensätze kopieren bzw. verschieben in eine andere Tabelle
Liebes Team, bin neu hier und die DAtenbank gefällt mir sehr gut. ICh habe nur eine Frage. Ich habe drei Tabellen, gibt es eine Möglichkeit einen ganzen Datensatz in eine andere Tabelle zu kopieren bzw. zu verschieben. Danke
14 Antworten
-
Hallo trainer33,
so wie in excel mit copy7paste geht es in ninox nicht. Generell dilt, wenn du in einer Datenbank die selben Daten an mehreren Stellen hast (Redundanz), muss man überlegen ob man an dieser Stelle mit Tabellenverknüpfungen besser bedient wird.
Leo
-
Hallo Trainer, direkt, also per Drag 'n' Drop oder so, geht das nicht. Mit einem Skript ist es aber kein Problem. Voraussetzung, um Daten von einer Tabelle in eine andere zu verschieben, ist natürlich, dass die Datentypen der Felder übereinstimmen.
Angenommen, du willst Daten von 'TabelleA' in 'TabelleB' verschieben. Dann könntest du in 'TabelleA' eine Schaltfläche mit folgendem Code erstellen:
let me := this;
let newRec := (create 'TabelleB');
newRec.(TEXTFELD := me.TEXTFELD);
newRec.(ZAHLENFELD := me.ZAHLENFELD);
newRec.(DATUMSFELD := me.DATUMSFELD);
...
Und so weiter. Man muss also jedes Feld einzelne übertragen, wobei die groß geschriebenen Namen im Beispiel durch die tatsächlichen Namen in 'TabelleA' und "TabelleB' ersetzt werden müssen.
Wenn der urpsüngliche Datensatz in 'TabelleA' nach der Übertragung gelöscht werden soll, kann man auch noch ein
delete me;
hinzufügen. Soll auch gleich der neu erstellte Datensatz in 'TabelleB' geöffnet werden, dann ginge das mit
openRecord(newRec)
-
Leo war wieder schneller. Aber in diesem Fall ergänzt mein Text seinen Hinwris vielleicht ganz gut.
-
Vielen Dank hat super geklappt
-
danke schonmal an @Der Copytexter.
ich hab da noch eine ergänzende Frage.
kann ich auch aus mehreren Tabellen z.b. Kontakte in einer Tabelle zusammenfügen?
Ich habe hier z.B. eine "Kundentabelle" mit Kind "Ansprechpartner des Kunden", "Lieferanten" mit Kind "Ansprechpartner Lieferant", "Servicepartner" mit Kind "ASP SP" usw.
Ich möchte nun eine zentrale Kontaktdaten-Tabelle in der alle unterschiedlichen Kontakte zusammengeführt werden.
Kann ich das mit obiger Formel aus den einzelnen Tabellen verwirklichen, oder macht eine zentrale lösung da mehr Sinn? Ich verkopfe mich da schon seit ein paar tagen wie ich das am besten löse.
-
Hallo Alexander, verstehe ich das richtig: Du hast aktuell drei verschiedene Untertabellen mit Kontakten und möchtest die nun alle in einer Tabelle zusammenfassen? Das wäre m. E. durchaus sinnvoll und mit Ninox auch schnell gemacht. Im Prinzip ähnlich wie in obigem Skript, allerdings soll in diesem Fall ja nicht ein einzelner Datensatz verschoben werden, sondern alle. Das lässt sich mit einer for-Schleife machen. Dabei können auch die Verknüpfungen des Kontaktes zum Kunden, Lieferanten oder Service-Partner übernommen werden.
Also: Die Tabelle 'Kontakte' mit den benötigten Datenfeldern erstellen und sie jeweils N:1 mit den drei Tabellen 'Kunden', 'Lieferanten' und 'Service-Partner' verknüpfen. Dann für jede der drei Untertabellen ein Skript der folgenden Art ausführen (entweder per Schaltfläche oder per Console):
for i in select 'Ansprechpartner des Kunden' do
let newK := create Kontakte;
newK.(Kunden := i.Kunden);
newK.(Nachname := i.Nachname);
newK.(Vorname := i.Vorname);
newK.(GebDatum := i.Geburtstag);
...
end
Wobei die Namen der select-Tabelle (im Beispiel 'Ansprechpartner des Kunden') und der jeweiligen Verknüpfung ('Kundentabelle') ausgetauscht werden müssten. Die Felder 'Nachname' usw. sind auch erfunden und dienen nur der Veranschaulichung. Man könnte die Untertabellen mit dem Skript auch gleich löschen, aber das würde ich persönlich eher manuell nach Überprüfung des Ergebnisses machen. Sicher ist sicher ...
-
'Kundentabelle' = 'Kunden'
-
Hallo liebe Community,
der Beitrag hat mir gerade schon sehr weitergeholfen. Vor allem die Lösung von planox. Vielen Dank! Das einzige was ich leider nicht hinbekommen habe, ist das Bildfeld inklusive Bild zu verschieben.
newRec.(Bild := me.Bild);
Das erstellt zwar das Bild-Feld in der neuen Tabelle aber das Bild selbst wird nicht übertragen. Gibt es dafür eine Lösung?
Vielen Dank und beste Grüße
-
Ich habe es so gelöst: Mehrere Datensätzen ändern und mittels berechneter Wert zuweisen für neues Feld in Tabelle B und der Inhalt übernommen aus Feld der andere Tabelle A. Super funktioniert. Dann in Tabelle A gegebenfalls Feld löschen.
-
Hallo Zusammen
ich habe ein ähnliches Anliegen wie oben trainer33 und habe versucht mit dem script
let me := this;
let newRec := (create 'TabelleB');
newRec.(TEXTFELD := me.TEXTFELD);
newRec.(ZAHLENFELD := me.ZAHLENFELD);
newRec.(DATUMSFELD := me.DATUMSFELD);
...
(vgl. oben) entsprechend den richtigen Bezeichnungen in meinen Tabellen einen TRiggerbutto zu erstellen. Leider ohne Erfolg.
Frage 1
am Bsp
newRec.(TEXTFELD := me.TEXTFELD);
muss bei TEXFELD links vom ":" der Name von Tabelle a oder B rein?
Content aside
- vor 2 JahrenZuletzt aktiv
- 14Antworten
- 1943Ansichten
-
6
Folge bereits