Button Home/Top/Zurück


Suchdialog




In den Foren gibt es regelmäßig Beiträge zu Problemen mit Kombinations- und Listenfeldern, welche auf die hohe Anzahl von Datensätzen zurückzuführen sind, die in diesen Steuerelementen angezeigt werden sollen.
Das Hauptproblem ist allerdings nicht, daß die Steuerelemente nicht ordentlich funktionieren sondern ehr der falsche Einsatz dieser Controls.

Ein typisches Beispiel ist die Verwendung eines Kombinationsfeldes für die Auswahl einer Postleitzahl. Es gibt z.Zt. über 40.000 Postleitzahlen in Deutschland. Nicht nur, daß es für den Endbenutzer ein Zumutung ist wenn er sich durch 40.000 Datensätze navigieren muß um eine PLZ auszuwählen, so müssen diese zig Tausend Daten bei einer Aufteilung der Datenbank in Front- und Backend, für die Anzeige komplett über das LAN geladen werden.

Ich habe schon bei einigen Software-Entwicklungsprojekten mitgearbeitet. In allen Projekten gab es eine GUI-Styleguide, in welchem u.a. festgelegt war, daß in einer Combobox (Kombinationsfeld) nicht mehr als 20 Einträge und in einer Listbox (Listenfeld) nicht mehr als das fünffache an sichtbaren Zeilen enthalten sein durfte.

Für alle anderen Anwendungsfälle musste/sollte ein Suchdialog verwendet werden.
Natürlich sollte nun nicht jeder Entwickler seine eigenen Suchdialoge entwerfen und implementieren. Es wurde ein Standarddialog zur Verfügung gestellt, der parametergesteuert alle notwendigen Sucheanfragen abdecken konnte,

Einen solchen Suchdialog möchte ich hier vor- und zur Verfügung stellen.



Ein Suchdialog hat im allgemeinen folgendes Layout:

Layout des Suchdialoges



Es handelt sich um einen modalen Dialog, der eine Auswahlliste, ein Eingabefeld zur Filterung der Ergebnismenge, einen Button zum Abbrechen und einen Button zur Übernahme der Auswahl enthält.

Im Ausgangsdialog sind im allgemeinen Buttons vorgesehen, über die eine Suche gestartet werden kann.
Diese Buttons sind meist mit einem Fernglas als Bild oder mit einem Fragezeichen beschriftet.

Layout Start der Suche


Beim Aufruf des Suchdialoges wird der aktuelle Feldinhalt (hier die PLZ 1583) als Suchkriterium übernommen, in das Eingabefeld des Suchdialoges eingetragen und die Ergebnismenge entsprechend eingeschränkt.

Eine weiter Eigenart solcher Funktionen ist, daß wenn die Suche nur einen Treffer liefert, dieser direkt in das Ausgangsformular übernommen wird ohne den Suchdialog anzuzeigen.
Der Suchdialog würde in diesem Fall lediglich eine Zeile in der Auswahlliste anzeigen, die der Benutzer auswählen und übernehmen müsste. Das kann automatisiert werden.

Außerdem erlaubt eine Suchfunktion die Übernahme von mehreren Werten aus der Auswahlliste in den Ausgangsdialog. Im oben zu sehenden Beispiel wird bei Auswahl einer PLZ auch der Ort in den Ausgangsdialog übernommen.

Wie nun schon mehrmals erwähnt, gibt es für die Suche eine Funktion, die den Aufruf des Suchdialoges und die korrekte Übergabe der Suchparameter verantwortlich ist.
In dem Download-Beispiel wird diese Funktion in das Ereignis Beim Klick der Buttons eingetragen.

Ereignisprozedur



Damit ist schon einmal klar, über welches Steuerelement die Suche gestartet wird.
Nun fehlen noch einige Parameter, die für die Suche notwendig sind. Hierfür kann die Eigenschaft Marke des Suchbuttons verwendet werden.
In dem Download-Beispiel wird dort z.B. folgendes eingetragen:

Ereignisprozedur



Diese Name-Value-Pairs haben folgende Bedeutung:
  • Ctrl:dfPLZ,dfOrt gibt an, in welche Steuerelemente die ausgewählten Werte übernommen werden sollen. Dabei wird das erste Steuerelement (dfPLZ) zusätzlich als Filterlieferant betrachtet.
  • Tbl:PLZ ist der Name der Tabelle/Abfrage in der gesucht werden soll.
  • Fld:PLZ,Ort gibt an, welche Felder der Tabelle/Abfrage in der Auswahlliste des Suchdialoges angezeigt werden sollen. Über das erste Feld (PLZ) wird gefiltert.
Hier wird also nach Postleitzahlen gesucht (dfPLZ und PLZ stehen jeweils an erster Stelle). Im Suchdialog würde neben der PLZ auch der Ort angezeigt werden. Wird im Suchdialog ein Ergebnis ausgewählt, werden PLZ und Ort in das Ausgangsformular übernommen.

Für die Suche nach einem Ort müssten lediglich dfPLZ und dfOrt sowie PLZ und Ort in den Parametern vertauscht werden.
	  Ctrl:dfOrt,dfPLZ,Tbl:PLZ,Fld:Ort,PLZ
	  

Ich spare mir (erst einmal) die komplette Beschreibung, wie der Suchdialog funktioniert. Einfach downloaden und ausprobieren.
Sollte es trotzdem Fragen oder Probleme geben...bin ich im MS-Office-Forum zu finden Ha ha ha ;)
WinZip Icon Beispiel als ZIP-File (55 KB) zum downloaden.
WinZip Icon Postleitzahlen MDB als ZIP-File (491 KB) zum downloaden.
Access Icon Beispiel als MDB (186 KB) zum downloaden.

Button Home/Top/Zurück