Daten aus einer anderen Datenbank abfragen und in aktuelle Tabelle einfügen
Hallo, liebes Forum,
ich bin ein Ninox-Neuling und versuche momentan, ein paar Datenbanken, die ich vorher in Filemaker zusammengeschustert hatte, in Ninox neu aufzubauen, weil Ninox für meine Zwecke besser geeignet ist als FM. Mit der Zeit werde ich mich auch mit der Ninox-eigenen Skriptsprache auseinandersetzen, wollte aber schon mal in Erfahrung bringen, ob mein spezieller Wunsch mittels der Skriptsprache überhaupt erfüllbar ist.
Folgender Ansatz:
Meine Tabelle #1 in Datenbank #1 hat als erstes eine Textspalte mit je einem Eintrag, bestehend aus drei Buchstaben und einer Zahl, also z.B. "ABC 123". Die zweite Textspalte ist eine normale Textzeile.
Ich möchte, wenn ich in die erste Spalte (Tabelle #1) einen Wert wie "ABC 123" schreibe, dass in derselben Zeile in der zweiten Spalte automatisch ein Text eingefügt wird, der aus der Datenbank #2 importiert werden soll. Dieser Text findet sich dort, auf dieses Beispiel bezogen, in der Tabelle "ABC". Dort müsste in der ersten Spalte nach "123" gesucht werden. Wenn der Text gefunden wird, soll in der zweiten Spalte der Text ausgelesen werden und in die zweite Spalte von Datenbank #1 eingefügt werden. Das ganze soll quasi vonstatten gehen, sobald ich das Datenfeld verlasse (per Tab oder Return). Sind solche Datenbankübergreifende Aktionen möglich?
Viele Grüße, Martin
5 Antworten
-
Hallo Martin,
na dann mal ein "Herzlich Willkommen" in der Ninox-Community :)
Damit stellst du dir eine für den Anfang nicht ganz einfache Herausforderung die bisher nur möglich ist wenn du die Cloud-Version von Ninox einsetzt. Hier kannst du dann entweder über freigegebene Ansichten in der Datenbank #2 und einem http-Aufruf aus Datenbank #1 arbeiten oder du nutzt die REST-Schnittstelle von Ninox um auf Datenbank #2 zuzugreifen. In beiden Fällen musst du dann noch die richtigen Werte aus dem empfangenen Text herauslesen.
Mit ein wenig Einarbeitung und Ausprobieren kommst du da aber rein :) Und sonst gibt es ja noch dieses Forum, ein engagiertes Support-Team bei Ninox und nicht zu vergessen die Ninox-Partner. ;)
VG Frank
-
Hallo Frank,
ein Bekannter hat mich gefragt, ob ich ihn bei einem ähnlichen Anliegen unterstützen kann. Er möchte, dass nach einem Upate / Insert die Datensätze aus "Datenbank_1.Tabelle_Foo" übertragen werden an Datenbank_alle in die Tabelle_Foo.
Ich vermute, dass
- per Console der Befehl
do as server zusammen mit http("GET", "http://mytestservice.com/path")
genutzt werden kann, um die "Datenbank_1" abzufragen- das result der get-Abfrage kann dann vermutlich in die Zieldatenbank "Datenbank_alle" zur Not wieder per http-api gesendet werden
1.) Laut Anleitung soll ein API-Key erzeugt werden, damit auf eine Datenbank zugegriffen werden kann. Dies geht anscheinend in meiner Test-Version nicht - stimmt dies?
2.) Ist die Console geeignet den vertraulichen Api-Key dort abzulegen?
3.) Kann ich per Trigger auf eine Tabelle auch Funktionen der Console aufrufen?
Dank Dir
-
Hallo surfmuggle
Um innerhalb von Ninox Daten von einer Datenbank zu einer Datenbank zu Kopieren oder abzufragen benötigst du die RET-API von Ninox.
Diese funktioniert auch in der Testversion von Ninox.
Ich kann dir nur empfehlen erstmal die Dokumentation dazu durchzulesen um ein näheres Verständnis zu erhalten.
Einen oder mehrere API-Keys kannst du erzeugen, wenn du Ninox im Browser startest, in ein eigenes Team wechselst und dann auf das Zahnrad rechts oben in der Ecke klickst.
In dem aufgeklappten Menue gehst du auf den Punkt 'Zapier Integrations'. Dort kannst du den oder die Ninox-API-Keys generieren.
Die console dient eigentlich einzig dem testen von Ninox-Script und ist nicht für die permanenten Ablage von Script-Code geeignet.
Das eigentliche Script, welches dann dein Vorhaben ausführen soll, wird sich eher hinter einem Trigger oder einem Button befinden.
Wenn du deine Datenbanken erstellt hast und dann zu dem Punkt kommst, wo du die REST-API einstzen möchtest, stelle konkrete Fragen zu deinem Problem und es wird sich sicher jemand im Forum finden, der dir weiterhelfen kann.
Wenn möglich, sollte man in Ninox versuchen, sein Projekt in nur einer Datenbank abzubilden. Über die Benutzersteuerung kann man Einschränkungen definieren, wer wie auf welche Daten zugreifen kann.Ninox Datenbanken produktiv über die REST-API zu verbinden birgt immer gefahren und macht einiges komplizierter.
-
Hallo UweG, vielen Dank für die schnelle Antwort. ich haben den Api Key gefunden.
Wie würdest Du folgenden Use Case abbilden?
Jeder User hat seine eigene Tabelle (ggf. zukünftig auch n Tabellen). Jeder User darf nur in seiner eigenen Tabelle arbeiten (Insert, Update)
Der Admin möchte die Eingaben der 4 User (/ der 4 Tabellen) in einer Ziel-Tabelle zusammenführen. In der Ziel-Tabelle muss erkennbar sein, aus welcher Quell-Tabelle ein Datensatz stammt (Spalter mit User_ID).
In einer Datenbank wie MySQL, SQL-Server würde ich eine View oder eine temporäre Tabelle anlegen und die Daten per UNION ALL zusammenführen (z.B. https://stackoverflow.com/questions/591382).
Nach meinem Verständnis dieser Antwort https://ninox.com/en/forum/technical-help-5ab8fe445fe2b42b7dd39ee7/have-sql-command-that-i-am-trying-run-with-ninox-5e50b90b912a65423a70f1c9 und der Docu unter https://ninox.com/en/manual/calculations/reference-of-functions-and-language ist dies nicht möglich
Das Schaubild zeigt die Anforderungen: ein User darf nur in seiner Tabelle Daten pflegen (ggf. Insert, Update, ohne Delete). Der Admin möchte alle Datensätze der Tabelle zusammen führen.
Vielen Dank
-
Warum so kompliziert?
Eine Tabelle mit allen Datensätzen, wenn die Daten in allen Tabellen gleich sind.
Über Userzuordnungen kann man die Sichtbarkeit der Datensätze einschränken, so dass jeder User nur seine eigenen Datensätze gezeigt bekommt und der Admin auf alle Datensätze zugreifen kann.
Solch eine Arbeitsanforderung setzt jedoch eine Ninox-Lizens für jeden User voraus, wenn man sich nicht zuviel Aufwand bei der Userverwaltung machen möchte.
Mit den Ninox Cloudlizenzen wird automatisch der User gespeichert, der den Datensatz erstellt oder geändert hat.
Wenn nur mit einer Ninox-Lizens gearbeitet werden soll, muss man eine eigene User-Verwaltung innerhalb von Ninox aufbauen, was erheblichen Aufwand erfordert.
Hier im Forum gab es schon einige Anfragen zu diesem Szenario.
Das mit dem löschen der Datensätze ist so eine Sache.
Mit den üblichen Ninox-Bordmitteln wirst du es nicht vermeiden können, dass Datensätze gelöscht oder dupliziert werden können.
Auch hier gibt es im Forum Lösungsvorschläge um die Datenbank vor versehentlichen Bedienfehler zu schützen.
Wenn du in Ninox noch nicht versiert bist, kann ich dir nur raten mit einer Anfrage an den Ninox-Support in das Team 'Webinar DE 2021' einzuladen.
Dort findest du neben vielen Beispieldatenbanken von Usern auch eine ReferenzDatenbank für die in Ninox bekannten Funktionen für die Scripterstellung.
Content aside
- vor 3 JahrenZuletzt aktiv
- 5Antworten
- 2485Ansichten