Lade...
 

Datenbankabfrage

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.

Felder
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.
 
Suchbegriffe des Objektes Suche nach wird gefunden
  • Kinderspielzeug
  • Groß
  • Farbe grün und blau
Spielzeug ja
rbe ro ja
rot blau nein
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.
 
Suchbegriffe des Objektes Suche nach wird gefunden
  • Kinderspielzeug
  • Groß
  • Farbe grün und blau
Spielzeug ja
Spielzeug klein nein
"Farbe grün" groß ja
"Farbe blau" groß nein
Farbe blau groß ja
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
Knöpfe
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:

Konstanten
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.

Empfangene Messages
Message Parameter Funktion Security
ADVANCED_SEARCH
Top Definition des ListBox- oder TreeBox-Widgets das für die Anzeige der Liste verwendet werden soll.
Top - 1 Kollektion von Objekten, die angezeigt werden dürfen bzw. INVALID, wenn keine Einschränkung der Objekte notwendig ist.
Top - 2

Ein Objekt eines Dictionaries über das gesucht werden kann.

Top - 3

Funktionaler Aufruf zum Anzeigen der Objekte in der Liste. Es wird eine Kollektion der gefundenen Objekte übergeben.
Beispiel:

({ ClearObox(, ListBox) [] SetSort(, ListBox) FillObox(, ListBox) })


Wird INVALID übergeben, empfängt das Widget die Message "ADVANCED_SEARCH_RESULT".
Beispiel: 

ADVANCED_SEARCH_RESULT: TRUE Widget cxWidget::FillListBox
Top - 4

Funktionaler Aufruf für einen zusätzlichen Filter der gefundenen Objekte.
Beispiel:

({
  LocalVar(tmpColl)
  Dup -> tmpColl GetVector iterate(UNSAFE)
  {
    Dup Type CX_ITEM = if { Drop continue }
    tmpColl Remove
  }
  tmpColl
})
Top - 5 String als Default für die Dictionary-Suche
Top - 6 Name des Datenkonnektors
   

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.  

 

Gesendete Messages
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.  

 

Operativer Betrieb