0

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

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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

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

    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)

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

    Leo war wieder schneller. Aber in diesem Fall ergänzt mein Text seinen Hinwris vielleicht ganz gut.

    • trainer33
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Dank hat super geklappt

    • Alex_Dr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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.

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

    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 ...

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

    'Kundentabelle' = 'Kunden'

    • Sebastian.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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

      • Firma OrganizeMe
      • organizeme
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Sebastian Hallo Sebastian,

      das geht nur über die API Schnittstelle. 

      Oder du baust dir ein eigenes Dateisystem auf, wo ein Datensatz immer nur eine Datei beinhaltet und verknüpfst dann diesen Datensatz öfter.

      Eventuell hilft dir da dieses Video: https://www.youtube.com/watch?v=TQ_pXxVKA14&t

      LG Philipp

    • Burkay
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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.

    • Digital Mover
    • DirkNey
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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?
     

      • pianofee
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Dirk.Ney TabelleA

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Dirk.Ney 

      let me := this;
      let newRec := (create 'TabelleB');
      newRec.('Feldname in TabelleB' := me.'Feldname in TabelleA';
          'zweiter Feldname in TabelleB' := me.'zweiter Feldname in TabelleA');
      
      • Digital Mover
      • DirkNey
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang 

      Danke Torsten

Content aside

  • vor 1 JahrZuletzt aktiv
  • 14Antworten
  • 1715Ansichten
  • 6 Folge bereits