0

csv Import

Hallo, finde den Fehler einfach nicht.

Habe eine Kreuztabelle KREUZ, die einerseits auf die Tabelle PERSONEN mit einer PERS_ID verknüpft ist und mit einer zweiten Tabelle KURSE, die KURSNAME enthält. Die Tabelle ordnet also Persone bestimmten Kursen zu. Jetzt möchte ich Kurse aktualisieren, also Personen erhalten einen andereren Kurs zugeteilt. Durch die LIstenansicht und Filter habe ich jetzt genau die DAtensätze in der Ansicht, die aktualisieren möchte, starte den csv-Import, wähle dort:

Welche Daten? Nur vorhandene Zeilen erneuern

Mehrdeutige Zeilen: Alle aktualisieren

Bei der Zuordnung der Felder wähle ich als Schlüsselfeld das verknüpfte Feld mit der PERS_ID und das Feld mit dem verknüpften KURSNAME sollen alle aktualisiert werden.

Ich hatte erwartet, dass jetzt die neuen Kursnamen eingetragen werden, passiert aber nicht. Wo ist der Denkfehler?

Danke für Hilfe.

Grüße Maurice

7 Antworten

null
    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Den Datensatz einer verknüpften Tabelle weist man über dessen ID (Nr) zu. Wenn also in der Tabelle KURSE der Datensatz mit dem Feld "HANDBALL" die interne Datensatz-Nr 14 hat, dann kannst Du die Verknüpfung auf KURSE mit ...

    KURSE := 14 

    ... mit dem entsprechenden Datensatz verknüpfen. So auch im Import. Versuche doch mal, statt des Kursnamens, eine entsprechende Zahl zu importieren.

    Das Filtern in einer Ansicht kannst Du dir aber sparen - der Import kann mit Ansichten nix anfangen. Du wählst beim Import ja die Tabelle aus - aber keine Ansicht. D.h. alles läuft hierbei richtigerweise über deine PERS_ID als Schlüssel.

    • Maurice
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Verstehe, was du meinst. In Funktionsfeldern arbeite ich auch mit der (internen) ID-Nr von Ninox. Aber beim csv-Import kommt ja der Importdialog, in dem ich per Drag and Drop die Felder zuweise. Und da ziehe ich einfach das Feld Kursname auf das entsprechende Feld der csv-Datei. Wo kann ich da die ID von Kursname angeben?

    • Torsten_Stang.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    ohne in medias res gehen zu wollen:

     

    der CSV-Import ist, sofern man ein halbwegs komplexes Datenmodell hat, nur rudimentär. Ich nutze hierfür eigentlich immer eigene Tabellen, in die ich die CSV importiere und aus denen ich dann per Skript die Datensätze so aktualisiere, wie ich es brauche.

    • Maurice
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    danke. Das hilft mir.  Du machst das dann per Massendatenänderung und Skript, richtig?

    Das (Skripting) kann ich nicht jedem/r zumuten, die mit der Datenbank arbeiten werden. Der Abgleich der Pers-ID (eigene ID-Nummer) als Schlüsselfeld geht scheinbar nicht, wenn dieses verknüpft ist. Das heißt: in der Tabelle, in der Pers-ID als (nicht-verknüpftes) Feld liegt, kann ich mir auch Hilfsfelder anlegen (Extra-Kartennreiter), in die ich den csv-Import mache, um dann per Skript die gwünschten Felder zu aktualisieren. In einer anderen Datenbank habe ich es so gemacht, wollte mir den Umweg beim jetzigen Projekt, das deutlich komplexer ist, sparen. Geht wohl nicht. Da ist echt noch Luft nach oben bei Ninox.

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Das wäre auch mein Ansatz gewesen - lieber in eine gesonderte IMPORT Tabelle und dann via Script, for-Schleifen usw. die Daten zuweisen. 

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Müssen die änderungen bzw. zuweisungen der Kurse denn "extern" stattfinden und importiert werden? Ginge das Zuweisen nicht direkt in der Ninox? 

    • Torsten_Stang.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Nein, ich mache das in der Regel über Buttons, hinter denen das Script liegt. Das Button-Script läuft per Schleife durch die Import-Tabelle und verarbeitet die Daten so wie ich es benötige. Bearbeitete Datensätze werden, je nachdem wie weit man dem Script traut, entweder als bearbeitet markiert oder direkt gelöscht.

    Der Button selbst ist enweder in der Import-Tabelle direkt oder in einem Dashboard.