Stellen Sie sich vor, dass Ihre Datenbank mehrere Tabellen mit Typen oder Kategorien enthält. Diese Tabellen sind sehr einfach und bestehen oft nur aus einem Bezeichner und einem Textfeld. Nehmen wir zur Veranschaulichung an, es handelt sich um eine Datenbank zur Verwaltung von Schuhen. Um die Produkte zu qualifizieren, müssen wir ihren Typ, ihre Farbe, ihr Muster, ihr Material, ihre Jahreszeit usw. definieren.
Es ist mühsam, jede dieser Tabellen in einem Listenformular und einem Eingabeformular und den dazugehörigen Methoden zu verwalten. In diesem Fall ist die Verwendung eines generischen Formulars unerlässlich, um Doppelarbeit zu vermeiden und die Pflege zu vereinfachen.
Und genau hier kommen dynamische Formulare und JSON-Zeiger ins Spiel!
In diesem Blogbeitrag sehen Sie eine Möglichkeit, generische Formulare zu erstellen.
Mit dieser Datenbank können Sie fünf verschiedene Dialogfelder öffnen, wie unten gezeigt. Wenn Sie jedoch in den Entwurfsmodus zurückkehren, werden Sie feststellen, dass Sie keine Formulare im 4D Explorer finden…
Wie werden diese Formulare also erstellt?
In den drei unten beschriebenen Schritten:
1. Zunächst erstellen wir ein Listenformular, das wir in einer JSON-Datei speichern. Für die spezifischen Informationen über Tabellen und Felder verwenden wir JSON-Zeiger. Nehmen wir zum Beispiel an, wir wollen den Tabellennamen in den Fenstertitel schreiben. Im dynamischen Formular müssen wir ihn nur eingeben:
"windowTitle": { "$ref": "#/info/table" }
Hier ein weiteres Beispiel: Im Listenfeld wollen wir die Datenquelle der Spalte definieren, also schreiben wir:
"dataSource": { "$ref": "#/info/field1" }
2. Dann, zur Laufzeit, wenn der Benutzer auf den Menüpunkt klickt, injizieren wir ein Objekt, das die Tabelle mit den vom Benutzer ausgewählten Feldern definiert.
C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json"))
$o .
info:=$info
3. Um das Formular zu öffnen, ist nichts Besonderes erforderlich, verwenden Sie einfach den Open form window Befehl. Das Einzige, was Sie beachten müssen, ist, dass 4D die JSON-Zeiger auflöst, wenn Sie den Open form window Befehls auflöst:
$ref:=Open form window($o;Plain form window)
Das Gleiche kann mit dem Eingabeformular gemacht werden. Und nun probieren Sie es selbst aus!