Version 11.2 (Geändert)
Sie können mit Interprozess-, Prozess- und lokalen Mengen sowie temporären Auswahlen arbeiten. Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache im Kapitel Mengen.
Prozessmengen/temporäre Auswahlen: Auf ein Prozessobjekt lässt sich nur über den Prozess zugreifen, der es erzeugt hat. Wurde es in einem Client Prozess erstellt, kann nur der auf dem Server angelegte Zwillingsprozess darauf zugreifen UserSet und LockedSet sind Prozessmengen. Prozessmengen werden gelöscht, sobald die Prozessmethode beendet ist. Prozessobjekte benötigen keine spezifische Vorsilbe im Namen.
Interprozessmengen/temporäre Auswahlen: Ein Interprozessobjekt ist für alle Prozesse auf dem Rechner (Server oder Client) sichtbar, der sie erzeugt hat. Eine Menge oder temporäre Auswahl ist ein Interprozessobjekt, wenn das Zeichen <> ( "kleiner als" gefolgt von "größer als") vorangestellt ist.
Hinweis: Diese Schreibweise gilt für Windows und Macintosh. Auf Macintosh können Sie auch das Zeichen ¸ benutzen. Tippen Sie dazu bei gedrückter Umschalt- und Wahltaste den Buchstaben v ein.
Lokale Mengen/Client Mengen/temporäre Auswahlen: Ein lokales/Client Objekt ist nur in dem Prozess sichtbar, der es angelegt hat. Der Name von lokalen bzw. Client Objekten beginnt mit dem Dollarzeichen ($). Auch die Systemmenge UserSet gehört zu den lokalen bzw. Client Mengen, obwohl sie nicht mit einem Dollarzeichen $ beginnt.
Nachfolgende Tabelle zeigt, wie temporäre Auswahlen sichtbar sind, je nachdem, wo sie erstellt wurden. Die Tabelle ist für beide Objektarten gleich:
x = sichtbar
Sie müssen die Sichtbarkeit von Prozessen je nach der Art der Operationen, die Sie ausführen wollen, berücksichtigen. Wollen Sie z.B. eine Operation vom Typ INTERSECTION ausführen, stellen Sie sicher, dass alle Mengen auf dem Rechner sichtbar sind, der diese Operation ausführt.
Zur Optimierung sollten Sie den Erstellungsort und die Reichweite der Objekte jeweils nach der erforderlichen Sichtbarkeit wählen.
4D Server und die Menge UserSet
Remote 4D erstellt die Menge UserSet als lokale Menge (auch wenn der Name nicht mit einem $-Zeichen beginnt), um das Erstellen der Menge zu optimieren. UserSet enthält die Datensätze, die der Anwender in einer mit den Befehlen MODIFY SELECTION oder DISPLAY SELECTION erzeugten Liste angeklickt hat.
Wollen Sie UserSet als Parameter für die Befehle DIFFERENCE, INTERSECTION oder UNION übergeben, wenn die anderen Parameter Interprozess- oder Prozessmengen sind, müssen Sie UserSet (eine lokale Menge) zuerst in eine Interprozess- oder Prozessmenge kopieren, um diese Menge mit dem Befehl benutzen zu können.
Beispiel:
ALL RECORDS ([Tabelle]) ` Lass den Benutzer einige Datensätze auswählen MODIFY SELECTION ([Tabelle];*) ` Prüfe, ob der Benutzer einige Datensätze ausgewählt hat If (Records in set("UserSet")>0) ` Suche die Datensätze, die auszuschließen sind QUERY([Tabelle];[Tabelle]Flag#0) ` Erstelle eine Menge aus der sich ergebenden Auswahl CREATE SET([Tabelle];"auszuschließen") If (Application type = 4D Remote Mode) ` UserSet ist lokale Menge, kopiere sie in eine nicht-lokale Menge COPY SET ("UserSet";"Benutzerauswahl") `über das Netzwerk kopiert ` Rufe DIFFERENCE auf und übergebe 3 nicht-lokale Parameter vom Typ Menge DIFFERENCE ("Benutzerauswahl";"auszuschließen";"Benutzerauswahl") Else ` Rufe DIFFERENCE DIFFERENCE ("UserSet";"auszuschließen";"Benutzerauswahl") End if CLEAR SET("auszuschließen") USE SET("Benutzerauswahl") CLEAR SET("Benutzerauswahl") End if
Sie können die Operation auch mit folgendem Code ausführen:
ALL RECORDS ([Tabelle]) ` Lass den Benutzer einige Datensätze auswählen MODIFY SELECTION ([Tabelle];*) ` Prüfe, ob der Benutzer einige Datensätze ausgewählt hat If (Records in set("UserSet")>0) ` Suche die Datensätze, die auszuschließen sind QUERY([Tabelle];[Tabelle]Flag#0) ` Erstelle eine Menge aus der sich ergebenden Auswahl CREATE SET([Tabelle];"auszuschließen") If (Application type = 4D Remote Mode) ` UserSet ist lokale Menge, kopiere sie in eine nicht-lokale Menge CREATE SET([Tabelle];"$auszuschließen") `kopiere vom Server auf den Client ` Rufe DIFFERENCE auf und übergebe 3 nicht-lokale Parameter vom Typ Menge DIFFERENCE ("UserSet";"$Auszuschließen";"UserSet") Else ` Erstelle eine nicht lokale Menge aus der sich ergebenden Auswahl CREATE SET([Tabelle];"auszuschließen") ` Rufe DIFFERENCE DIFFERENCE ("UserSet";"auszuschließen";"Benutzerauswahl") End if CLEAR SET("$auszuschließen") USE SET("UserSet") `
kopiere vom Client zum Server End if
Im ersten Beispiel werden drei Mengen erstellt und eine über das Netzwerk kopiert. Im zweiten Beispiel werden zwei Mengen erstellt und zwei über das Netzwerk kopiert. Wählen Sie je nach Ihrem Bedarf eine ähnliche Programmierung.
4D Server und die Menge LockedSet
LockedSet ist eine Prozessmenge, die in dem Prozess und auf dem Rechner sichtbar ist, der sie erstellt hat, sowie im Trigger auf dem Server-Rechner.
Referenz
COPY SET, Einführung, Einführung in Mengen.