4D v14.34D Tabellen und Methoden aufrufen |
||||||||||
|
4D v14.3
4D Tabellen und Methoden aufrufen
4D Tabellen und Methoden aufrufen
Der Zugriff auf 4D Tabellen, auf die in der Wakanda Applikation Bezug genommen wird, richtet sich danach, wie der externe Catalog integriert ist. Dies wird in Wakanda während der Verbindung zur remote Anwendung definiert (siehe Integration in aktives model oder eigenes model):
Bei Anbindung an das aktive model lassen sich 4D Tabellen, auf die in der Wakanda Applikation Bezug genommen wird, im server-seitigen JavaScript Code direkt als Eigenschaften des ds Objekts verwenden, genauso wie lokale Datastore Klassen. Beispiel für eine Suche in den Datensätzen der Tabelle [Angestellte]: var emp = ds.Angestellte.query("Alter > :1",30); // die Datensätze in der Tabelle Angestellte finden // in denen in der Variablen <em>emp</em> Alter größer als 30 ist Auf Client Seite können Sie auch die automatischen Abläufe von Datasources nutzen, die auf Datastore Klassen basieren und mit Widgets verknüpft sind. Weisen Sie z.B. die Datasource ’angestellte’ einem Widget vom Typ ’Grid’ zu, lässt sich die Liste der Angestellten automatisch anzeigen: Ist die Tabelle einer Datasource zugewiesen, können Sie auch darüber auf die Daten zugreifen. Sie sortieren z.B. eine Collection Datensätze der Datasource ’angestellte’. sources.angestellte.orderBy("Alter"); //sortiert die Collection Angestellte nach Alter Weitere Informationen dazu finden Sie in der Wakanda Dokumentation. Die referenzierten 4D Tabellen werden im Server-seitigen JavaScript Code als Eigenschaften des Catalog verwendet, in den sie beim Erstellen des Links gelegt wurden. Catalog hat den Namen, der im Verbindungsparameter Remote datastore name (Wakanda Studio Verbindungsdialog) oder in localName (JavaScript Methode) definiert wurde. Haben Sie z.B. einen Link mit Namen "my4Dstore" erstellt und wollen eine Suche in den Datensätzen der Tabelle [Angestellte] durchführen, schreiben Sie folgenden Code: var emp2 = my4Dstore.Angestellte.query("Alter > :1", 30); // suche in den Datensätzen der Tabelle Angestellte // im Link mit Namen "my4Dstore" Hinweis zur Implementation: Auf Client Seite ist mit der aktuellen Version von 4D Mobile für ein eigenes model derzeit kein Zugriff auf remote Klassen möglich. 4D Methoden, auf die in der Wakanda Applikation verwiesen wird, lassen sich direkt im JavaScript Code als Eigenschaften der Objekte Datastore Klasse, Entity Collection oder Entity verwenden, jeweils nach dem Bereich, der auf 4D Seite definiert wurde (siehe Tabelle und Bereich der Projektmethoden). Hier die Entsprechungen zwischen 4D und Wakanda:
Hinweis: Über Datasources lassen sich 4D Methoden auch auf der Client Seite aufrufen (siehe unten); in diesem Fall sind alle Methoden verfügbar und die Datasource wendet sie je nach Kontext automatisch auf die aktuelle Collection bzw. Entity an. Führen Sie z.B. eine Suche über die Methode query aus (siehe voriger Abschnitt), gibt Wakanda eine Entity Collection zurück. In dieser Collection können Sie jede 4D Projektmethode ausführen, für die als Bereich "aktuelle Auswahl" definiert wurde. Es gibt drei Wege, um 4D Methoden über JavaScript Code aufzurufen:
Sie können, wie bei Standardmethoden, während dem Aufruf Parameter übergeben, die dann der Reihe nach in den Parametern $1, $2, etc. empfangen werden. In ähnlicher Weise gibt die Methode ein Ergebnis in der $0 Variable zurück. Hierzu ein Beispiel: Angestellte mit einem Gehalt unter 1500 sollen 5% mehr bekommen.
Mit dem Befehl können Sie eine 4D Auswahl auch direkt als eine Wakanda Collection zurückgeben. Hierzu ein Beispiel: Beim Aufrufen einer 4D Methode über den Wakanda Link geschieht folgendes:
Beachten Sie, dass der 4D Kontext nach Ausführen einer Methode über 4D Mobile zurückgesetzt wird:
Achten Sie darauf, dass der Bereich der 4D Methode zum Typ des aufgerufenen Wakanda Objekts passt. Sonst gibt Wakanda den Fehler "TypeError: 'undefined' is not a function" zurück. Nehmen wir beispielsweise die 4D Methode "getcursel" mit folgendem Code: $0:=Records in selection([Table_1]) Auf Wakanda Seite gibt es die Methode run: var tt = ds.Table_1.query("Field_2 = 'a*'").getcursel(); Die Methode query( ) gibt eine Collection zurück. Ist für die Methode getcursel als Bereich (Gültig) "aktueller Datensatz" gewählt, gibt Wakanda folgenden Fehler zurück: |
EIGENSCHAFTEN
Produkt: 4D ARTIKELVERWENDUNG
4D Mobile ( 4D v14 R3) Geerbt von : 4D Tabellen und Methoden aufrufen ( 4D v14 R2) |
||||||||