|
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:
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.
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.
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:
Diese Name-Value-Pairs haben folgende Bedeutung:
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
|
||||||||
|