4D v16.3Einführung in Mengen |
|||||||||||||||||||||||||||||
|
4D v16.3
Einführung in Mengen
Einführung in Mengen
Mengen sind ein leistungsstarkes und effizientes Werkzeug zum Bearbeiten von Datensatzauswahlen. Sie können Mengen erstellen, speichern, laden und löschen, sowie der aktuellen Auswahl zuordnen. Mit 4D können Sie außerdem folgende Standardmengen bilden:
Eine Menge ist die kompakte Darstellung einer aktuellen Auswahl. Menge und Auswahlen haben gewisse Ähnlichkeiten. Eine Menge ist eine boolesche Tabelle, die ausgewählte Datensätze durch 1 bzw. nicht ausgewählte durch 0 anzeigt.
Sie können sich die aktuelle Auswahl als eine Liste oder Tabelle, die auf jeden Datensatz der Auswahl zeigt, vorstellen. In dieser Liste sind nur die Datensätze der aktuellen Auswahl aufgeführt. Die aktuelle Auswahl enthält nicht die Datensätze selbst, sondern nur die Zeiger auf ihre Adressen. Jeder Zeiger auf einen Datensatz belegt im Speicher 32 Bits oder 4 Bytes. Arbeiten Sie in einer Tabelle, arbeiten Sie immer mit einer aktuellen Auswahl. Sortieren Sie die aktuelle Auswahl, sortieren Sie in Wirklichkeit nur die Zeiger. Es gibt in jedem Prozess nur eine aktuelle Auswahl pro Tabelle. Eine Menge ist die Beschreibung einer Auswahl. Jeder Datensatz wird mit einem Bit (1/8 eines Byte) dargestellt: Dieses Bit enthält die Ziffer 1 für die ausgewählten und die Ziffer 0 für die nicht ausgewählten Datensätze. Das Arbeiten mit Mengen ist daher sehr schnell. 4D muss nur wenige Informationen verarbeiten. Die Größe einer Menge in Bits entspricht immer der Anzahl der Datensätze der Tabelle. Erzeugen Sie beispielsweise eine Menge aus einer Tabelle mit 10 000 Datensätzen, umfasst die Menge 10 000 Bits bzw. 1 250 Bytes oder 1,2 KB im RAM. Für eine Tabelle können Sie beliebig viele Mengen erzeugen. Eine Menge ist nie sortiert, da sie nur die Information enthält, ob der Datensatz enthalten oder nicht enthalten ist. Im Gegensatz dazu ist eine temporäre Auswahl sortiert, sie benötigt jedoch in den meisten Fällen mehr Speicher. Weitere Informationen dazu finden Sie im Abschnitt Einführung in temporäre Auswahl. Eine Menge merkt sich, welcher Datensatz beim Erstellen der Menge der aktuelle Datensatz war. Folgende Tabelle zeigt die Unterschiede zwischen der aktuellen Auswahl und der Menge:
Eine Menge bezieht sich immer auf die Tabelle, für die sie erzeugt wurde. Bei Operationen mit mehreren Mengen, wie Schnitt- oder Vereinigungsmengen, müssen alle Mengen der gleichen Tabelle angehören. Mengen sind von den Datensätzen abhängig. Nach einer Änderung in der aktuellen Auswahl kann die Menge veraltet sein, vor allem beim Anlegen bzw. Löschen von Datensätzen. Es gibt folgende Arten:
Hinweise:
Nachfolgende Tabelle zeigt, wie temporäre Auswahlen sichtbar sind, je nachdem, wo sie erstellt wurden:
Eine Menge lässt sich innerhalb einer Transaktion erzeugen. Sie können eine Menge mit Datensätzen erstellen, die innerhalb einer Transaktion erzeugt wurden oder eine Menge mit Datensätzen, die außerhalb einer Transaktion erstellt oder geändert wurden. Endet die Transaktion, sollten Sie die während der Transaktion erstellte Menge löschen, da sie keine zuverlässige Darstellung der Datensätze ist, insbesondere wenn die Transaktion abgebrochen wurde. Folgendes Beispiel löscht doppelte Datensätze aus der Tabelle [People]. Eine Schleife For...End for durchläuft alle Datensätze und vergleicht den aktuellen Datensatz mit dem vorigen. Sind Name, Straße und Postleitzahl gleich, wird der Datensatz in die Menge gelegt. Am Ende der Schleife wird diese Menge die aktuelle Auswahl, die alte aktuelle Auswahl wird gelöscht: CREATE EMPTY SET([People];"Duplikate") Alternativ dazu können Sie am Ende der Methode die Datensätze auch zuerst auf dem Bildschirm anzeigen oder ausdrucken, um so einen genaueren Vergleich auszuführen. 4D unterhält die Menge UserSet, die automatisch die aktuellste Datensatzauswahl speichert, die der Benutzer auf dem Bildschirm markiert hat. So können Sie mit MODIFY SELECTION oder DISPLAY SELECTION eine Gruppe Datensätze anzeigen, den Benutzer auffordern, davon welche auszuwählen und das Ergebnis dieser manuellen Auswahl in einer Auswahl oder eine temporären Menge zurückzugeben. 4D Server: Die Systemmenge UserSet ist lokal, auch wenn ihr Name nicht mit dem Dollarzeichen ($) beginnt. Stellen Sie deshalb beim Aufrufen von INTERSECTION, UNION und DIFFERENCE sicher, dass UserSet nur mit lokalen Mengen genutzt wird. Weitere Informationen dazu finden Sie in der Beschreibung dieser Befehle und im Handbuch 4D Server im Abschnitt 4D Server, Mengen und temporäre Auswahlen. Es gibt nur eine Menge UserSet pro Prozess. Eine Tabelle hat keine eigene Menge UserSet. UserSet wird sozusagen Eigentum einer Tabelle, wenn für die Tabelle eine Datensatzauswahl angezeigt wird. 4D verwaltet die Menge UserSet für Listenformulare, die im Designmodus oder über die Befehle MODIFY SELECTION bzw. DISPLAY SELECTION angezeigt werden. Diese Funktionsweise ist jedoch nicht für Unterformulare aktiv. Folgende Methode zeigt Datensätze an, lässt den Benutzer einige auswählen und zeigt dann die ausgewählten Datensätze in UserSet an: ` Zeige alle Datensätze und lass den Benutzer eine beliebige Anzahl auswählen. Die Befehle APPLY TO SELECTION, DELETE SELECTION, ARRAY TO SELECTION und JSON TO SELECTION erzeugen in der Multiprozess-Umgebung automatisch die Menge LockedSet. Auch Suchbefehle erstellen eine solche Menge, wenn sie im Kontext "Suchen und Sperren" gesperrte Datensätze finden (siehe Befehl SET QUERY AND LOCK).
Siehe auch
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v16) |
|||||||||||||||||||||||||||