0

Datenbanken verbinden

Hallo zusammen,

 

ich hatte die Tage ein Gespräche mit einem Ninox Mitarbeiter, wo ich mich grob über das Verbinden von 2 Datenbänken informieren wollte.

Dieser hat mich an den Support weitergeleitet und der Wiederrum an das Handbuch und das Handbuch wieder an euch.

Ich verstehe nicht wirklich wie dort eine anfrage zwischen 2 Datenbänken funktionieren soll.

hat eventuell jemand mal ein script mit einer falschen API damit ich sehe ich so eine abfrage aussehen könnte, oder gibt es vielleicht jemanden, der mir ein wenig dazu erläutern könnte.

 

danke euch

6 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo
    Zwei Datenbanken kann man nur mit der REST-API von Ninox verbinden.
    Voraussetzung hierfür ist ein Ninox-ABO. Mit den reinen Apps ohne Ninox-Cloud Anbindung funktioniert es nicht,
    Ich kann auch nur zum Anfang auf die Dokumentation zur Ninox-API verweisen um sich Grundkenntnisse zu verschaffen. Die neuere englische Dokumentation findet man unter:

    https://docs.ninox.com/en/api/introduction

    An der aktuallisierten deutschen Dokumentation wird noch gearbeitet.
    Eine simple Lösung gibt es nicht. Alles muss per Script programmiert werden und man sollte sich mit der Script-Sprache von Ninox und den vorhandenen Funktionen schon etwas auskennen oder in der Reference-Datenbank nachschlagen.
    Ab und an gibt es auch ein Webinar zur Ninox-API auf englisch, dessen Termin ab und an  unter Hilfe-> Webinare angezeigt wird.

    Als Beispiel ein http-call um einen Record mit Name und Vorname in eine Tabelle einer anderen Ninox-DB anzulegen:
    Voraussetzung ist, dass in der entsprechenden Tabelle die Datenfelder (Vorname, Nachname) bereits vorhanden sind.
    Man kann mit einfachen Mitteln über die API keine Teams, Datenbanken, Tabellen erstellen.

    let vHeader := {Authorization: Bearer 'NinoxAPI Key', Content-Type: application/json}
    let vURL := "https://api.ninoxdb.de/v1/teams/'TeamID'/databases/'DatabaseID'/tables/'TableID'/records"
    let vBody:={Vorname:"Uwe", Nachname: "G"}
    http("Post",vUrl,vHeader,vBody)

    Man kann mit dem freien Programm 'Postman' ersteinmal ohne große Scriptkenntnisse experimentieren um über die API Datenbankinhalte auszulesen (GET), ändern (PUT), anzulegen (POST), löschen (DELETE) oder über query-Abfragen zu filtern.

    • Andi_Neumaier
    • vor 1 Jahr
    • Gemeldet - anzeigen

    UweG Hi Uwe, auch an dieser Stelle. 

    Weißt du denn zufällig, ob es über die API auch möglich ist die Inhalte einer anderen Datenbank anzeigen zu lassen, und dann eine Auswahl zu treffen? 

    Ich denke an folgendes: 

    Wir haben einmal ein Warenwirtschaftssystem, ein PPS System und eine FiBu mit Ninox realisiert. In jeder Datenbank/Programm habe ich eine Kunden/Lieferanten Tabelle. Diese hätte ich am liebsten losgelöst und zentral als eigene Datenbank, sodass die anderen Programme darauf zugreifen. 

    Aktuell kopiere ich die Kunden/Lieferanten über die API und Befehlschaltflächen in die einzelnen Programme. Das zentral verwalten zu können wäre natürlich ein Traum. 

    Freue mich auf dein Feedback. 

    Viele Grüße,
    Andi

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Andi Neumaier Vielleicht nicht in der Form wie du es dir genau wünschst.
      Ohne API wird es nicht funktionieren.
      Ich habe mal so ein Szenario nachgebaut.
      Dazu habe ich die Kontakte-DB von Ninox etwas angepasst und eine weitere neue Ninox-DB erstellt.
      Über die neue DB lasse ich mir in einem Funktionsfeld per html-Darstellung die Kontakttabelle der Kontakt-DB anzeigen. Ich kann jetzt in dem Funktionsfeld so agieren, als ob ich mich direkt in der Tabelle der anderen DB befinde.
      Wenn ich einen Kontakt auswähle öffnet sich das entsprechende Formular. In dem Formular habe ich einen Button mit den API-Daten der anderen DB hinterlegt.
      Betätige ich den Button, werden die ausgewählten Kontaktdaten in diese DB übertragen und man kann mit ihnen weiterarbeiten. Bei einer anderen Auswahl werden die Daten einfach überschrieben.
      Du kannst dir ja beide DB'en in dein Team laden und noch die entsprechenden API-Daten im Button der Kontakttabelle ergänzen.
      In der anderen DB kopierst du in das Script des Formelfeld die entsprechende Url der Tabellenanzeige aus der Kontakte-DB hinein.
      Sind alle Änderungen vorgenommen, sollte in dem Formelfeld die Tabellenansicht der anderen DB zu sehen sein und du kannst durch auswählen einzelner Records die Formularansicht aufrufen und mit drücken des Buttons 'DataTransfer' die Werte in dein aktuell geöffnetes Formular zur Weiterverarbeitung transferieren.
      Letztendlich muss man sagen, daß Ninox eigentlich nicht dafür geeignet ist smooth mit verschiedenen DB'en zusammen zu arbeiten, wenn man die Daten der anderen DB'en im Arbeitsprozess nutzen möchte. Da bietet es sich eher an alles in eine DB zu packen und über die Tabellen eine Trennung zu schaffen. (Meine persönliche Meinung)
      Leider lässt sich die modifizierte Kontakte-DB nicht hochladen.
      Lade dir die Kontakte-DB aus den Template in dein Team.
      Erstelle im Formular von den Kontakten einen Button mit folgendem Script:

      let vApiKey := "APIKEY EINTRAGEN";let vTeamIDAPI1 := "TEAMID EINTRAGEN";let vDatabaseIDAPI1 := "DATABASEID EINTRAGEN DB API1";let vTableID := "A";let vNameID := "A";let vVornameID := "B";let vDataKompakt := "C";let vUrl := "https://api.ninoxdb.de/v1/teams/" + vTeamIDAPI1 + "/databases/" + vDatabaseIDAPI1 + "/tables/" + vTableID + "/records";let vHeader := {        Authorization: "Bearer " + vApiKey,        'Content-Type': "application/json"    };let vBodyAPI1 := [{            id: 1,            fields: {                Name: Nachname,                Vorname: Vorname,                KontaktDaten: "Name: " + Nachname + "Vorname: " + Vorname            }        }];http("POST", vUrl, vHeader, vBodyAPI1)

      Ergänze das Script um deine API-Daten.

      Hier die AusgangsDB aus der du die Kontakt-DB aufrufst.:

      • Andi_Neumaier
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG Das klingt super spannend. Werde ich doch direkt mal so versuchen. 

      Aber wie hast du denn die html-Darstellung in ein Funktionsfeld rein gebracht? 

      • Andi_Neumaier
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Andi Neumaier Ah sorry schon gesehen. Aber wie schaffst du es, dass sich das Formular öffnet wenn du in der html-Ansicht einen Kontakt auswählst? 

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Andi Neumaier Wenn du im Funktionsfeld auf einen Tabelleneintrag klickst, öffnet sich der zugehörige Record. Wenn du nicht weiter kommst, kann ich es auch in einem Zoom-Meeting zeigen. Einfach deine Mailadresse in der persönlichen Mitteilung angeben, dann sende ich eine Einladung.

Content aside

  • vor 1 JahrZuletzt aktiv
  • 6Antworten
  • 430Ansichten
  • 2 Folge bereits