0

Datenimport Auswahlfeld

Hallo liebe Ninox Gemeinde,

ist es möglich beim .csv-Import ein Auswahl-Feld zu befüllen? Bspw. wenn ein Produkt mehrere Farben hat.

Vielen Dank schon mal

11 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Achim,

    nein, die Auswahlfelder müssen vorher definiert und  mit allen verfügbaren Optionen (in dienem Fall-Farben) manuell gefüllt werden. 

    Leo

    • Achim_Rager
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    danke für deine schnelle Antwort. Ich hoffe das die Möglichkeit in absehbarer Zeit besteht. Gibt es eigentlich so etwas wie eine Roadmap von Ninox?

    Achim

    • Dirk_Spannaus
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Das gibts immer noch nicht wie es aussieht. Frustrierend!

      • Developer by Smartplanung
      • smartplanung
      • vor 1 Jahr
      • Gemeldet - anzeigen

       mittlerweile gibt es dynamische Auswahlfelder, womit man sich die Daten aus Tabellen holen kann. CSV kann man in Tabellen importieren - somit auch in Auswahlfeldern anzeigen lassen.

      • Dirk_Spannaus
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Ja schon, nur löst das m.E. nicht folgendes Problem: Ein Kunde importiert regelmäßig csv mit immer den gleichen Spalten. Manche Felder sollen Auswahlfelder sein. Im Vorhinein lässt sich aber nicht bestimmt, ob aus dem anderen System ggf. mal neue Optionen dazu genommen werden. Beim Import sollten neue Optionen in dem Feld als Option ergänzt werden.

      Die csv müsste also zweimal importiert werden - einmal in die Tabelle mit den Optionsfeldern, danach in die eigentliche Wertetabelle, damit dann die Optionen bereitstellen. Fühlt sich an wie "durch die Brust ins Auge". Oder habe ich etwas übersehen?

      (Das Ursprungssystem hat leider weder API noch Webhook, deswegen manuell. Aber per API könnte ich die Optionen in einem Feld ja auch nicht direkt erweitern?)

      • Developer by Smartplanung
      • smartplanung
      • vor 1 Jahr
      • Gemeldet - anzeigen

       also ich habe das jetzt nicht direkt geprüft. Aber es sollte z.B. so gehen:

      CSV wird über Bildfeld mit einem Script in Tabelle A importiert. Neue Artikel werden hinzugefügt, bestehende ggf. angepasst und fehlende fliegen raus oder was auch immer man möchte. Nach dem Import in Tabelle A wird eine weitere Schleife erstellt, welche die entsprechenden Felder durchiteriert und sich die Werte für ein Auswahlfeld rausholt und in Tabelle B schreibt.

      Natürlich muss man das programmieren. Aber die Anwendung an sich würde für den Benutzer automatisiert ablaufen.

      Mit API wäre das ähnlich möglich. Solange ich ein dynamisches Auswahlfeld habe, kann ich per API auch die dazugehörige Tabelle anpassen.

      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      hallo Patrick, ich würde das Thema gerne noch einmal aufgreifen. Ich habe ein dynamisches Auswahlfeld. Wie würde denn das Script aussehen? Mit meinem Brett vorm Kopf, kann mir da gerade garnichts dazu vorstellen.😅

      DAnke schon mal.

      Gruß Kruna

      • Developer by Smartplanung
      • smartplanung
      • vor 1 Jahr
      • Gemeldet - anzeigen

       um das Auswahlfeld zu erweitern?

      Du greifst ja mit dem dAF auf eine Tabelle zu. Beim iterieren nutzt Du die selbe Tabelle. Wenn man jetzt davon ausgeht, dass man in der csv per for Schleife zugreifen kann, wäre hier ein Beispiel. Ohne es jetzt geprüft zu haben, ggf. muss man das mit der CSV selbst noch etwas anpassen: 

      for i in csv do
         let value := i.value
         let check := false
         for n in select Auswahlfeldtabelle do
            if n.value = value then
               check := true;
            end
         end
         if not check then
            let rec := (create Auswahlfeldtabelle)
            rec.(value := value)
         end
      end
      

      Du holst Dir den benötigten Wert aus der CSV per Schleife (i) und prüfst diesen Wert nun mit einer weiteren Schleife (n) gegen. Wenn Du einen Treffer hast (Wert bereits vorhanden), wird nach der Schleife (n) ein neuer Record mit dem Wert erstellt. Anschließend wird der nächste Wert aus der CSV geprüft.

      Dasselbe könnte man dann machen, um ggf. Werte wieder zu löschen. Dabei iterierst Du mit der ersten Schleife durch die Tabelle und gleichst dann jeden Wert mit einer weiteren Schleife in der CSV ab. Wenn kein Treffer, wird gelöscht.

      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      leider verstehe ich nicht, wo ich das eingeben soll und überhaupt komme ich hier an meine Grenzen...😅

      Eigentlich möchte ich folgendes erreichen - falls das überhaupt möglich ist -

      Ich habe eine csv zB mit verschiedenen Handelszentralen. In ninox habe ich eine Tabelle erstellt mit allen Handelszentralen, die in der csv sind.

      In Tabelle A habe ich ein DAF (select Handelszentralen). Nun möchte ich die csv importieren. Wie kann ich dann aus der csv die jeweilige Handelszentrale in das DAF füllen? Geht das überhaupt?

      Vielen Dank und gruß Kruna

      • Developer by Smartplanung
      • smartplanung
      • vor 1 Jahr
      • Gemeldet - anzeigen

       sorry für die Verwirrung. Direkt aus eine CSV kann man ein DAF nicht füllen. Man muss die CSV in eine Tabelle schreiben: https://forum.ninox.de/t/m1hn9qb/import-der-daten-einer-csv-datei-die-in-einem-bildfeld-abgelegt-ist

      Dafür wird eine for-Schleife genutzt und über einen Button ausgelöst. Dort packt man dann den von mir beispielhaften Code mit rein, sodass für jeden Eintrag in der CSV geprüft wird, ob die Handelszentrale bereits in deiner Tabelle Handelszentralen vorhanden ist. Wenn ja, passiert nichts weiter und wenn nein, wird ein neuer Datensatz dafür in Handelszentralen erstellt.

      Das DAF verweist dann auf diese Tabelle.

      Und ich muss gestehen, der von mir oben genannte Code ist vielleicht etwas unperformant. Man könnte das einfacher lösen, in dem man statt der "n" Schleife direkt eine cnt(select...) Abfrage macht und prüft, wie viele Ergebnisse man erhält:

      for i in csv do
         if cnt(select Auswahlfeldtabelle where value = i.value) = 0 then
            let rec := (create Auswahlfeldtabelle)
            rec.(value := value)
         end
      end
      
      
      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      tausend dank!! Alles gut, keine Verwirrung, eher meine Unkenntnis.😅

      Ich schaue mir das mal in Ruhe an und melde mich dann, falls ich nicht weiterkommen.

      Nochmals vielen Dank für Deine Hilfe.

      Gruß kruna