Budibase Internal DB Beziehungen Relationships Beschreibung: Ein Nachteil von der Budibase DB ist, das in einigen GUI Elementen wie auch im AUtomator die Verknüpften Tabellen Felder nicht angezeigt werden. Aber es gibt Gott sei Dank ein Workaround dafür. Wir wollen in diesem Beispiel bestellungen kunden zu ordnen. Ausgangssituation. In unserem Beispiel haben wir eine Tabelle Kunden und eine Tabelle Bestellungen. Wir haben die Anzahl der Felder so minimalistisch gelassen, weil es hier ums Prinzip geht Die Tabelle Kunden hat folgene Felder. AutoID Name Vorname Die Tabelle Bestellungen hat folgende Felder AutoID artikel anzahl preis gesamtpreis Der Gesamtpreis ist vom Typ Formula. Also ein berechneter Wert. Die formel dazu heißt {{ multiply anzahl preis }} Beziehung herstellen WIr gehen auf die Tabelle Kunden und erstellen ien neues Feld mit dem Namen bestellung. als Type wählen wir Relationship Dann wählen wir die Tabelle aus mit der Verknüpft werden soll. also Bestellungen Welche Beziehung soll es sein. Hier kann ein Kunde mehrere Bestellungen, Also one kunden row -> many bestellungen rows nun wird auch automatisch ein feld in der tabelle bestellungen angelegt. Wir müssen nur noch den namen angeben. Kunden oder kunde macht vielleicht sinn Über add row fügen wir zwei kunden ein. Max Mustermann und Anna Schulz Jetzt sieht unsere Tabelle Kunden so aus. Nun legen wir eine Bestellung an, werden aber gleich sehen das da was nicht stimmt bzw blöd ist Eine neue Row in bestellungen anlegen. Artikel intel i5 preis 150 anzahl 2 und nun können wir den kunden auswählen. und da haben wird, es werden die IDs vom  Kunden angezeigt. Ein bisschen blöd sich die ids zu merken wer nun Max oder Anna ist Grundsätzlich erstell ich noch ein Feld in der tabelle mit dem namen der tabelle und anzeige dran. Bei Kunden zum Beispiel. kundenanzeige. Es gibt bei feldern ein Flag das geschaltet werden kann, das dieses als Anzeige Benutzt werden soll, bei Beziehungen. Wir erstellen ein neues Feld kundenanzeige vom typ Formula Wir wollen das in diesem Feld der Vorname und Nachname zusammen angezeigt wird. Das ist die Formel. Über das Blitzsymbol kann man schnell die Formel zusammen klicken. {{ Vorname }} {{ Name }} Und nun kommt der Clou. Den schieber use as table display coloumn aktivieren. In einer tabelle kann das immer nur ein Feld sein. Würded Ihr ein anderes Feld dies einhaken, würde hier der Haken wieder rausgehen. Nun gehen wir wieder in unsere Bestellungen und wählen den Kunden aus. Tadaaa, jetzt ist es lesbarer als nur die IDs. Nun wollen wir natürlich eine App draus bauen. Allerdings kann Budibase nicht auf die verlinke id zugreifen. Wir erstellen uns zwei screens. Eine mit ner Tabelle für die kunden. Dazu Komponente table block hinzufügen und die Tabelle kunden auswählen Jetz konfigurieren wir noch de culoums. Denn die Bestellungen und die Kundenazeige wollen wir da nicht drin haben. in unserem Beispiel sollen die Bestellungen über einen Button geöffnet werden als modal. So das  alle Bestellungen für den Kunden auf einen Blick sind.N Und das ist der Grund warum in Budibase ein Workaround nutzen muss, denn Relationship Felder werden nicht angezeigt. Aber dazu später. Unser Screen sieht jetzt so aus Nun erstellen wir einen zweiten screen mit einer Tabelle die die Bestellungen beinhaltet. ich hab den Screen Details genannt. Wieder einen Tabell hinzugefügt und die Spalten angepasst. Die Spalte Kunde brauchen wir nicht, da ja nur bestellungen von einem kunden aufgerufen werden. Unser Screen sieht dann so aus. Nun gehen wir in den ersten screen zurück und erstellen einen Button in der Tabelle Diesem Button geben wir folgende Eigenschaften. Dazu kilicken wir den Button an. Nun geben wir den button einen Namen buttonBestellungen anzeigen Dann Anzeigetexte Betsellungen öffnen. Nun auf define actions klicken. Dort Update State Action hinzufügen Eine Vaaible mit KUNDENID angeben und dann auf den Blitz klicken Nun als Wert die ID von der Tabell Kunden angeben. Über den Asistenten -> Table -> _id schnell ausgwählt Nun ein navigate als zwiete Aktion hinzufügen. Dort denn screen details auswählen: ob im Vollbild oder Modal geöffnet werden soll bleibt euch überlassen. ich find das Modal aber an Budibase ja so genial, deshalb lass ich Modal drin. So nun kommt der eigentliche Workaround, aber erstmal schauewn wir uns an, wass denn nicht funktioniert. Dazu gehen wir in den Screen details. klicken unseren Dataprovider an und gehen auf define Filters. Denn hier wollen wir ja nur die Betsellungen vom kunden mit der ID die vir in die variable gesetzt haben lesen. Aber hier ist das Problem kein Feld kunden in der auswahl!!!! Da behlfen wir uns eines kleinen tricks. Wir gehen die Tabelle Bestellen zurück und fügen ein neues Feld hinzu. Dieses nennen wir kundenrel. Ich mach das immer so, das ich in einer tabelle wo ich ein relationsfeld habe, dieses feld nochmals erstelle allerdings mit rel am ende und vom typ formula. Dann nur static und folgende Formel rein. wichtig unter javascript!!! wichtig ist auf die Groß und Kleinsschreibung des Feldnamens zu achten. Deshalb schreib ich alle Feldnamen in tabellen immer alles klein return $("kunden") ? $("kunden").map(x => x._id) : "" Nun in der Tabelle bestellungen das neue Feld erstellen mit Static Nun nachdem auf dem Blitz geklickt wurde auf Javascript klicken und die oben genannte formel angeben. wichtig ist auf die Groß und Kleinsschreibung des Feldnamens zu achten. Deshalb schreib ich alle Feldnamen in tabellen immer alles klein Nun sieht das ganze so aus und speichern Nun haben wir einen pointer auf die ID. Jetzt legen wir noch eine betsellung an, damit wir zwei datensätze haben. Nachdem wir diese angelegt haben. Sind in unserer Datenbak zwei Kunden und zwei Bestellungen. Wir haben die Bestellungen jeweils einem Kunden zugeordnet. Da wir den filter noch definiert haben werden beide angezeigt Nun wieder auf define filzter im Dataprovider Jetzt steht kundenrel in der Auswahl. Jippie Nun die Formel vervollständigen. Dazu equal auswählen und bindings, dann wird der blitz freigeschaltet. Dann auf den blitz klicken unter State werden alle Variablen angezeigt die angelegt wurden. Nun auf State klicken und die Variable KUNDENID raussuchen. Wenn wir nachher noch mehrere Screens haben, wir können diese Variable immer wieder überschreiben, beim button. Denn es kann ja immer nur ein fenster gleichzeitig angezigt werden. Deshalb ist in meinem gesamten Programm auch KUNDENID verwendetbar. Weil wo ichs brauche schreib ich die neue ID rein, über die Buttons im Home screen oder wo auch immer ich das brauche. Nun sieht die Formel so aus, noch speichern fertig. Nun können wir auf preview gehen und auf den Home screen Nun bei dem jeweiligen Kunden auf bestellungen öffnen klicken Und eh voila, ein Modal mit den Bestellungen für den Kunden, in diesem Falle Max Und hier Anna Wir legen noch eine Bestellung für Anna an. Dazu wieder in die Data wechseln und eine row anlegen in bestellungen und Anna zuordnen. Nun hat Anna zwei Bestellungen. Fertig, kleiner Trick große wirkung, mit dem extra Feld in das die id kopiert wird.