Lookup - der FlexSelectionButton und große Datenmengen

lookup
sql

#1

Für einfache Auswahlen wird üblicherweise gerne eine Combobox verwendet. Sobald jedoch mehr als nur eine handvoll Einträge zur Auswahl stehen, wird dies schnell unübersichtlich.

Im iNOW gibt es daher den FlexSelectionButton. Dieser funktioniert im Prinzip wie die klassische “F4 - Auswahl” Taste, nur mit dem Unterschied, dass kein F4 ausgelöst (und damit ein anderer Bildschirm angezeigt wird), sondern dass die Auswahldaten per SQL ermittelt und in einem Fenster zur Auswahl angeboten werden.

Ein Beispiel für kleine Datenmengen finden Sie hier: Lookup - Verwendung des FlexSelectionButton

Wenn man auf größere Datenmenge zugreift, dann macht es u.U. keinen Sinn, zunächst alle Datensätze in den Speicher zu laden (z.B. bei einer Kundenauswahl)

Hier bietet es sich, dass der Anwender einen einfachen Suchbegriff als Vorfilter eingibt.

SQL Abfrage

Zunächst sollte das SQL Statement hinterlegt werden. Hierbei sollten mindestens zwei Werte selektiert werden, der Eingabewert (Key) und der zugehörige Anzeigetext (DisplayText). In dem Beispiel wird als zusätzliche Spalte noch der Ort angezeigt.

Um sich mit dem Beispiel der Praxis anzunähern, wird der Anzeigetext nicht aus einem einzelnen Feld gelesen, sondern er wird aus zwei Feldern zusammengesetzt. Evtl. kann es Sinn machen in der DB2 hierfür eine View zu definieren.

Damit man Filtern bzw. Suchen kann muss eine entsprechende Suchbedingung im SQL formuliert werden. In der Abfrage kann der Platzhalter {value} verwendet werden. Hier wird zur Laufzeit der vom Anwender eingegebene Suchbegriff eingesetzt.

In dem Beispiel wird die Suche unabhängig von Groß-/Kleinschreibung gezeigt.

select CUSTID, Concat(Concat(Trim(NAME1), ' '), Trim(NAME2)) as Anzeige, CITY  from cust
where Upper(NAME1) like Upper('%{value}%')
OR Upper(NAME2) like Upper('%{value}%')

Einstellungen Filter

Mit FilterColumns aktivieren Sie die Filterung, mit FilterMinChars bestimmen Sie, wie viele Zeichen der Anwender mindestens eingeben muss, bevor eine Suche möglich ist.
Mit FilterMaxRecords können Sie die Anzahl der maximal angezeigten Sätze einschränken.

Weitere Einstellungen

Options2

Damit die Auswahl übernommen werden kann, hinterlegen Sie den Feldnamen des Eingabewerts in der Eigenschaft FieldNameKey, den Feldnamen des Anzeigewerts in der Eigenschaft FieldNameDisplayText.

Mit ValueDisplayControl können Sie ein Control auswählen, in das der ausgewählte Wert eingetragen wird. Mit TextDisplayControl wählen Sie ein Control aus, in das der Anzeigetext zu dem ausgewählten Wert eingetragen wird.

Mit FormHeight, FormWidth können Sie die Größe des Fensters bestimmen, mit Caption die Überschrift setzen. Wenn Sie die Eigenschaft FitColumsToFormWidth auf True setzen, dann füllen die Tabellenspalten die komplette Breite aus, was zu einer besseren Darstellung führt.

Die Formatierung der Spalten können Sie über die Eigenschaft Columns vornehmen. Legen Sie in dem Editor für jede Spalte einen Eintrag an und setzen Sie FieldName und Caption.

Hier sehen Sie das fertige Beispiel: