Datenbankabfrage
Beschreibung
Dieses Modul dient der Suche von Informationen. Dies kann zum einen über die nach Objekttypen kategorisierten Suchbegriffe erfolgen und zum anderen über allgemeine und eher technische Query-Funktionen.
Funktionalität
Erweiterte Suche
Das Fenster "Erweiterte Suche" wird stets über eine anderes Modul aufgerufen. In der Regel sind dies Listenfenster, in denen es ein Feld Suchbegriffe gibt. Ist die einfache Suche über die Suchbegriffe hier nicht ausreichen, so kann hier alternativ diese Maske aufgerufen werden. Die Ergebnisse der Suche werden stets an das aufrufende Modul zurück gesendet, welches daraufhin die Anzeige übernimmt.
Feld | Beschreibung | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Suchbegriffeingabe | Hier können die Suchbegriffe eingegeben werden. Diese können auch aus mehreren Wortgruppen (Matchcodes) bestehen. | ||||||||||||||
genau | Bei der genauen Suche wird nach der gesamte Wortgruppe gesucht. Da die eingegeben Wortgruppe als ganzes betrachtet wird, sind keine Anführungsstrichen (") erlaubt.
|
||||||||||||||
mit allen Wörtern | Die Suche wird mit allen Wörtern einzeln durchgeführt und es werden nur die Treffer zurückgegeben, welche bei jeder einzelnen Wortsuche gefunden wurden. Sollen mehrere Wörter als eine Wortgruppe betrachtet werden, so müssen diese in Anführungsstrichen (") stehen.
|
||||||||||||||
mit irgend einem der Wörter | Sofern eines der Wörter zu einem Treffer führt, wird dieser auch als Suchergebnis zurückgegeben. Sollen mehrere Wörter als eine Wortgruppe betrachtet werden, so müssen diese in Anführungsstrichen (") stehen. | ||||||||||||||
Wortanfang vergleichen | Ist diese Option gesetzt, so muss der Suchbegriff exakt so beginnen, wie die Texte, nach denen gesucht wird | ||||||||||||||
Groß-/Kleinschreibung beachten | z.Zt. nicht unterstützt |
Knopf | Beschreibung |
---|---|
Suchen | Startet die Suche |
Datenaufbereitung und Filterung
Im Widget zur Datenaufbereitung und Filterung werden verschiedene Kriterien angegeben und miteinander verknüpft. Bei der Ausführung werden diese so angeordnet, dass die Ausführung möglichst schnell geht bei gleichbleibender Bedeutung des konfigurierten logischen Ausdrucks. Sobald für ein Objekt entschieden werden kann, ob es auf sicher zur Ergebnismenge gehört oder nicht, werden für dieses Objekt keine weiteren Kriterien ausgewertet.
Kriterien
Am Anfang ist das Widget noch leer und über das grüne Plus können Kriterien hinzugefügt werden. Die einzelnen Kriterien können über das rote X auf der rechten Seite wieder entfernt werden. Die Reihenfolge der Kriterien kann über die Pfeile auf der linken Seite geändert werden.
Die einzelnen Kriterien können durch die Verknüpfungen UND und ODER verbunden werden, um so Wahrheitsausdrücke zu bilden. Außerdem können die öffnenden und schließenden Klammern zur Gruppierung verwendet werden. Nicht geschlossene Klammern werden am Ende automatisch geschlossen.
Kategorien
Jedes Kriterium kann aus einer der fünf Kategorien Query, Attribut, Formel, Callback oder InstantView sein.
Ein Kriterium vom Typ Query definiert eine Bedingung an ein Datenfeld eines Objektes, damit es zur Ergebnismenge gehört. Das erste der Felder definiert hierbei den Zugriffsausdruck, der getestet werden soll. Statt des Zugriffsausdrucks kann auch der Name einer Spalte eingegeben werden. Über den Button mit den drei Punkten neben dem Feld kann entweder ein Zugriffsausdruck über den Zugriffsausdruck-Konfigurator oder eine der definierten Spalten ausgewählt werden. In der Mitte wird der Vergleichsoperator ausgewählt und dann rechts der Wert, mit dem verglichen werden soll, angegeben. Sollte eine Methode ausgewählt sein und diese nicht in einem Query-Ausdruck verwendet werden können, wird das Kriterium während der Ausführung automatisch in eins vom Typ Callback umgewandelt.
Ein Kriterium vom Typ Attribut definiert ein Attribut mit einem Vergleichsoperator und einem Vergleichswert. Für jedes Objekt wird geprüft, ob es das entsprechende Attribut hat und der Wert des Attributes zu dem Vergleichsoperator und Vergleichswert passt.
Bei einem Kriterium vom Typ Formel wird eine Formel definiert, die dann für jedes Objekt ausgewertet wird. Liefert die Formel TRUE (bzw. einen Wert, der zu TRUE evaluiert), gehört das Objekt zur Ergebnismenge, ansonsten nicht.
Bei einem Kriterium vom Typ Callback wird InstantView®-Quelltext angegeben, der für jedes Objekt aufgerufen wird. Das Objekt liegt dabei oben auf dem Stack. Der Quelltext soll am Ende einen Wert zurückliefern, der TRUE entspricht, wenn das Objekt zur Ergebnismenge gehört, ansonsten einen Wert, der zu FALSE evaluiert.
Ein Kriterium vom Typ InstantView ist insofern anders als die anderen Kriterien, dass es nicht für jedes Objekt einzeln aufgerufen wird. Stattdessen liegt bei Ausführung des angegeben InstantView®-Quelltextes eine Collection mit den bisher ausgewählten Objekten auf dem Stack und am Ende wird auch wieder eine Collection mit Objekten auf dem Stack erwartet. Die Verwendung dieses Kriterientyps bietet die volle Flexibilität an Bearbeitungsmöglichkeiten. Naturgemäß kann ein Kriterium dieses Typs nicht an eine andere Stelle der Verarbeitung verschoben werden, daher unterbricht ein Kriterium vom Typ InstantView die Optimierung. Kriterien vor und hinter diesem Kriterium werden unter sich optimiert, es ist aber sichergestellt, dass alle Kriterien, die davor stehen auch vorher ausgeführt werden und alle dahinter danach. Aus demselben Grund können bei diesem Kriterium auch keine Klammern definiert werden und es werden zusätzlich automatisch alle vorher noch geöffneten Klammern geschlossen.
Parameter
Um die Kriterien dynamisch während der Ausführung zu bestimmen, können Parameter verwendet werden. Das ist zum Beispiel sinnvoll, um Berichte zum aktuellen Monat zu starten. Parameter können für Kriterien vom Typ Query, Callback oder InstantView, nicht jedoch für Formeln verwendet werden. Am einfachsten lassen sich Parameter über den Knopf mit den drei Punkten rechts der entsprechenden Felder verwenden. In der Auswahl hat man die Möglichkeit, neue Parameter zu definieren oder bereits vorhandene Parameter zu bearbeiten. Die Definition eines Parameters wird während der Ausführung durch seinen Wert ersetzt.
Wenn Parameter per Hand definiert werden sollen, kann das über folgende Syntax getan werden:
${Name := Initialisierung}$
Name steht hierbei für den Namen und ist optional (in dem Fall entfällt auch :=). Der Name kann entweder als einfacher String oder mehrsprachig als T("Erste Sprache", "Zweite Sprache") angegeben werden.
Initialisierung enthält InstantView®-Quelltext, der bei der Ausführung ausgewertet wird und den aktuellen Wert des Parameters berechnet. Dieser Quelltext kann die folgenden Konstanten enthalten:
Konstante | Typ | Bedeutung |
---|---|---|
TODAY | CX_DATE | Heute |
YESTERDAY | CX_DATE | Gestern |
TOMORROW | CX_DATE | Morgen |
WEEK | CX_DATE | Die aktuelle Kalenderwoche |
MONTH | CX_DATE | Aktueller Monat |
YEAR | CX_DATE | Aktuelles Jahr |
Wenn für ein Kriterium die Checkbox Parameter abfragen ausgewählt ist, wird bei der Ausführung ein Fenster mit den Parametern dieses Kriteriums und den berechneten Werten angezeigt. Hierfür werden die Namen der Parameter verwendet. Die Werte können dann in dem Fenster noch verändert werden.
Da bei der Initialisierung gültige InstantView®-Syntax erwartet wird, müssen reine Textangaben (z. B. als voreingetragene Werte bei der Parameter-Abfrage) in String-Notation mit doppelten Anführungszeichen hinterlegt werden. Ansonsten wird der Text fälschlicherweise als Anweisung interpretiert und nicht erkannt:
${Name := "vorgegebene Zeichenkette"}$
Zusätzlich zur Initialisierung mittels Quelltext gibt es noch die Möglichkeit, Auswahlfenster für die Werte der Parameter zu verwenden. Die Syntax dafür ist dann
${Name := //START_MSG;END_MSG}$
Name ist hierbei wieder der Name des Parameters. START_MSG definiert die Message, die zum Öffnen des Auswahlfensters gesendet werden soll und END_MSG definiert die Message, mit der das Ergebnis aus dem Auswahlfenster zurückgeschickt wird.
Verwandte Themen
Technische Dokumentation
Datenbankabfrage App
Modulname
advancedSearch.app
Klassen
-
Security
Neben der Beschränkung der Zugriffsrechte über die Klasse und deren Datenfelder kann das Modul über einige der empfangenen Messages in seiner Nutzung beschränkt werden.
Message | Parameter | Funktion | Security | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ADVANCED_SEARCH |
|
||||||||||||||||
ADVANCED_SEARCH_HTML_EXPORT |
Diese Message dient nur dazu, um den Button für den HTML-Export in der Suche zu aktivieren bzw. zu sperren. | ||||||||||||||||
ADVANCED_SEARCH_EXCEL_EXPORT |
Diese Message dient nur dazu, um den Button für den EXCEL-Export in der Suche zu aktivieren bzw. zu sperren. |
Message | Parameter | Funktion | Empfangs-Modul |
---|---|---|---|
ADVANCED_SEARCH_RESULT |
COLLECTION | Sendet das Ergebnis als Collection an die ListBox, wenn der "Übernehme"-Button gedrückt und keine Callback-Funktion beim Aufruf definiert wurde. |