Version 3
QUERY BY FORMULA ({Tabellenname}{; }{Formel})
Parameter | Typ | Beschreibung | |
Tabellenname | Tabelle | Tabelle, in der gesucht wird oder | |
Haupttabelle ohne Angabe | |||
Formel | Boolean | Wahre oder falsche Aussage |
Beschreibung
Der Befehl QUERY BY FORMULA sucht nach Datensätzen in Tabellenname. QUERY BY FORMULA ändert die aktuelle Auswahl Tabellenname für den aktuellen Prozess. Der erste Datensatz der neuen Auswahl ist nun der aktuelle Datensatz.
QUERY BY FORMULA und QUERY SELECTION BY FORMULA haben dieselbe Arbeitsweise. Der Unterschied liegt darin, dass QUERY BY FORMULA jeden Datensatz in der Tabelle durchsucht, während QUERY SELECTION BY FORMULA nur die Datensätze der aktuellen Auswahl durchsucht.
Beide Befehle wenden Formel auf jeden Datensatz der Tabelle bzw. der Auswahl an. Formel ist ein Boolean Ausdruck, der den Wert TRUE oder FALSE hat. Bei TRUE wird der Datensatz in die neue Auswahl aufgenommen.
Tabellenname ist optional. Wird dieser Parameter nicht angegeben, bezieht sich QUERY BY FORMULA auf die Haupttabelle
Formel ist ebenfalls optional. Wird dieser Parameter nicht angegeben, erscheint der Standardsucheditor des Benutzermodus. Wurde die Suche im Standardsuchfenster aufgerufen, können Sie durch Abfragen der Variablen OK feststellen, ob der Anwender die Suche abgebrochen hat. Bei Abbruch hat die Variable OK den Wert 0, sonst den Wert 1.
Formel kann einfach sein, also z.B. ein Datenfeld mit einem Wert vergleichen; oder komplex, also z.B. eine Berechnung durchführen oder eine Information in einer verknüpften Tabelle bewerten. Formel kann ein Befehl oder eine Funktion von 4th Dimension sein bzw. eine selbst erstellte Methode oder ein Ausdruck. Bei Feldern vom Typ Text oder alphanumerisch können Sie auch mit dem Joker-zeichen @ arbeiten.
QUERY BY FORMULA und QUERY SELECTION BY FORMULA suchen sequentiell, d.h., alle Datensätze der Tabelle werden nacheinander durchsucht. Die Zeit, die die Suche in Anspruch nimmt, vergrößert sich proportional zur Anzahl der Datensätze in der Tabelle. Ist das Feld indiziert und wird auf das Feld direkt zugegriffen, wird der Index benutzt. Bei Berechnung auf das Feld wie Teilstring (Feld) kann der Index nicht benutzt werden.
4D Server: Im 4D Server-Betrieb sollten Sie QUERY BY FORMULA mit Vorsicht anwenden. 4D Server sendet alle Datensätze an die Arbeitsstation, die prüfen muss, ob der Datensatz der Formel entspricht. Daher benötigt die Suche viel länger und belastet auch das Netzwerk stärker.
Beispiele
1. Dieses Beispiel findet die Datensätze für alle Rechnungen, die -unabhängig vom Jahr- im Monat Dezember eingegeben wurden. Dazu wird die Funktion Month of auf jeden Datensatz angewandt. Diese Suche könnte sonst nur ausgeführt werden, wenn für Monat ein eigenen Feld eingerichtet würde:
QUERY BY FORMULA ([Invoice]; Month of ([Invoice]Entered) = 12) ` Finde Rechnungen, die im Dezember eingegeben wurden
2. Dieses Beispiel findet die Datensätze für alle Personen, deren Name mehr als 10 Zeichen enthält:
QUERY BY FORMULA ([People]; Length ([People]Name)>10) ` Finde Namen, die mehr als 10 Zeichen enthalten
Referenz
QUERY, QUERY SELECTION, QUERY SELECTION BY FORMULA.
Case-Sensitive Operations in 4th Dimension, Optimizing Searches with Hashes