Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Ersetzen Sie Kombinationsfelder durch Nachbauten, die noch viel mächtigere Fähigkeiten besitzen.

Techniken

Formulare, Steuerelemente, VBA

Voraussetzungen

Access 2002 und höher, Access 2000 mit Einschränkungen

Beispieldateien

combofakes.mdb

Shortlink

518

Kombinationsfeld-Nachbau mit Pepp

Sascha Trowitzsch, Berlin

Kombinationsfelder spielen eine wichtige Rolle bei der Dateneingabe in Formularen. Auch wenn sie mit zahlreichen Eigenschaften und Programmiermöglichkeiten ausgestattet sind, gibt es immer wieder Fälle, in denen man sich eine ausgefeiltere Bedienung oder eine andere Optik wünscht. Einige Änderungsmöglichkeiten finden Sie in diesem Beitrag.

Neben Textfeldern sind Kombinationsfelder wohl das zweitwichtigste Steuerelement in Formularen. Dennoch hapert es manchmal - der eine möchte gern Einträge mit den Pfeiltasten auswählen (siehe auch Beitrag Eingabe in Text- und Kombinationsfelder vereinfachen, Shortlink 516), der andere ist mit dem Erscheinungsbild nicht ganz zufrieden. Außer der Möglichkeit, mehrere Spalten in der Liste einzublenden, beschränken sich Formatierungen auf die Schrift. Funktionell bieten Kombinationsfelder zwar eine automatische Wortergänzung, eine Filterung der Liste ist aber nicht oder nur umständlich möglich. Dieser Beitrag soll zeigen, wie Sie mehr erreichen können: Basteln Sie sich Kombinationsfelder einfach selbst!

Wo ist das Problem?

Was soll Kombinationsfeldern, wie Access sie mitbringt, denn fehlen, könnten Sie fragen. Nichts, würde ich Ihnen antworten, solange sie nur einfache Listen mit einer mäßigen Zahl an Einträgen beherbergen. Sobald jedoch unter Hunderten oder Tausenden von Einträgen ausgewählt werden soll, kann dies zu einer Tipp- und Scroll-Arie ausarten. Wenn außerdem zu den einzelnen Einträgen genauere Informationen benötigt werden, helfen zusätzliche Spalten nur bedingt weiter.
Einige Beispiele dafür, was Kombinationsfelder unter Access nicht können:

  • Keine unterschiedlichen Schriftarten für die Spalten
  • Keine farbliche Unterscheidung der Zeilen (alternierender Hintergrund)
  • Keine Symbole oder Icons für die Einträge
  • Keine Filterung der Liste
  • Keine Filterung nach Teil des Feldinhalts (die automatische Begriffsergänzung berücksichtigt nur den Wortanfang, also Like "Begriff*", und nicht Like "*Begriff *").

Ein anderer Punkt ist der Ressourcenbedarf von Kombinationsfeldern. Jedes Kombinationsfeld hat ein eigenes Recordset als Basis, das unter Umständen mehrmals abgefragt oder aufgebaut wird. Jedes Recordset stellt im Prinzip jeweils eine komplette Tabelle dar. Für ein Formular mit zahlreichen Kombinationsfeldern, die vielleicht noch auf mehrere Registerkarten verteilt sind, steigt die Rechenleistung beim Füllen meist deutlich und auch Speicher und Netzwerktraffic sind betroffen. Ein gebundenes Kombinationsfeld ist im Grunde vergleichbar mit einem Unterformular. Dieser Umstand führt dazu, dass Access Formulare mit Kombinationsfeldern langsam lädt und die Belastung auf das Backend erhöht wird.
Wenn Sie nicht auf Kombinationsfelder verzichten können oder wollen, etwa, weil dem Kunden eine kompakte Oberfläche vorschwebt, dann sollten Sie eine ungebundene Version im Eigenbau in Betracht ziehen, um die Belastung des Systems zu verringern.

Wie baue ich ein Kombinationsfeld?

Technisch gesehen ist ein Kombinationsfeld unter Windows die Ableitung eines Textfeldes. Dem Textfeld wird zusätzlich ein Knöpfchen spendiert. Ein Klick auf den Button erzeugt dann ein Listbox-Fenster. Auf die gleiche Weise könnte man bei dem geplanten Nachbau eines Kombinationsfeldes verfahren und drei Elemente kombinieren: Dazu müssen Sie ein Textfeld, eine Schaltfläche mit Bild und ein Listensteuerelement im Formular platzieren und diese programmtechnisch verbinden. Ein solches Pseudokombinationsfeld hätte dann allerdings die gleichen Nachteile wie das eingebaute von Access, denn das Listenfeld ist in seinen Möglichkeiten ebenfalls ziemlich beschränkt. Besser ist es daher, statt des Listenfeldes ein randloses Formular in Datenblatt- oder Endlosansicht einzusetzen. Damit sind der Gestaltung der Liste dann keine Grenzen mehr gesetzt. Für das Formular selbst sind zwei Varianten implementierbar: Entweder ein Unterformular oder ein Popup-Formular.
Bevor wir ins Detail gehen, schauen wir uns einmal an, wie sich ein herkömmliches Kombinationsfeld eigentlich verhält.

Das muss ein Kombinationsfeld können

Grundsätzlich lässt sich ein Kombinationsfeld vollständig sowohl mit der Maus als auch mit der Tastatur bedienen. Mit der Maus hat man diese Abfolge: Ein Klick auf den Pfeil-Button öffnet die Liste, die Bildlaufleiste dient zum Navigieren und ein Klick auf einen Eintrag wählt diesen aus.
Die Tastatur bietet weitere Möglichkeiten: Innerhalb des Textbereichs verhält sich das Kombinationsfeld nämlich genau so wie ein Textfeld. Mit der Taste F4 oder der Tastenkombination Alt + Cursor nach unten klappen Sie das Kombinationsfeld auf. Die gleichen Tastaturanweisungen oder die Tasten Escape und Tab schließen die Liste wieder. Das Scrollen durch die Liste geschieht durch die Cursor nach unten- und Cursor nach oben-Tasten oder, für größere Sprünge, mit Bild auf und Bild ab. Die Eingabe von Zeichen in das Textfeld navigiert zu entsprechenden Einträgen, falls die automatische Ergänzung eingeschaltet ist. Die Eingabetaste schließlich wählt den markierten Eintrag aus.

Die Liste selbst hat eine Datenherkunft, die auf einer Tabelle, einer Wertliste oder, ab Access 2002, direkt auf einem Recordset basiert. Die veraltete Möglichkeit, es mit einer benutzerdefinierten Funktion zu füllen, bleibt hier außen vor. Das Steuerelement lässt sich direkt an ein Datenfeld des Formulars oder eines Berichts binden - die Auswahl eines anderen Eintrags ändert also den Wert des zu Grunde liegenden Feldes.

Wollte man all diese Eigenschaften per Eigenbau akribisch nachbilden, würde dies eine ganze Menge Arbeit bedeuten. In den folgenden Beispielen ist das nur teilweise umgesetzt. Schließlich sollen die neuen Kombinationsfelder ja neue Möglichkeiten aufweisen, die dann unter Umständen auch eine andere Bedienung erfordern. Wichtig ist vor allem, dass die Liste sich mit den erwähnten Tastenkombinationen öffnen und schließen lässt, eine Verwendung auch allein mit der Maus möglich ist und das Ergebnis schließlich im zugewiesenen Datenfeld des Formulars landet.

Eigenbau, Version mit Unterformular

In Abb. 1 sehen Sie, wie sich die einzelnen Komponenten des nachgebildeten Kombinationsfeldes zusammenfügen. Ausgangspunkt ist ein Textfeld mit Beschriftung ("Label"), an dessen rechter Seite eine Schaltfläche mit Bild angeflanscht wird. Das Textfeld ist im Formular ungebunden.

missing image file

Abb. 1: Nachgebildetes Kombinationsfeld

Unterhalb des Textfeldes ist ein Unterformular angebracht, das rechtsbündig mit der Schaltfläche abschließt. Seine Eigenschaft Sichtbar wurde in der Entwurfsansicht auf Nein eingestellt. Vielleicht wundern Sie sich darüber, warum das Unterformular so klein ist, obwohl es nachher doch die ganze ausgeklappte Liste anzeigen soll. Der Grund ist ganz einfach der, dass das Unterformular über anderen weiteren Steuerelementen des Formulars liegen muss, sie also in der Entwurfsansicht überdecken würde. Das machte die Arbeit am Formularentwurf etwas schwierig, falls Sie nachträglich die überdeckten Steuerelemente bearbeiten wollten. Stattdessen wird das Unterformular zur Laufzeit beim Laden des Formulars per VBA auf die gewünschte Größe gebracht.

Ein Wort zur Schaltfläche: Hier muss man sich leider entscheiden, welches Bildchen man für das Pfeilsymbol anheften möchte. Je nach Access-Version, nach Betriebssystem und nach Einstellung der Option Mit einem Design versehene Steuerelemente verwenden sieht ein Kombinationsfeld-Pfeil unterschiedlich aus. In Abb. 1 wurde ein Symbol mit XP-Style unter Access 2003 verwendet. Man könnte zwar zur Laufzeit die Einstellungen ermitteln und in Abhängigkeit davon individuelle Bildchen in den Button laden, der Aufwand hierfür scheint aber etwas übertrieben.

Es macht ja nichts, wenn der User bemerkt, dass es sich nicht um ein Windows-konformes Kombinationsfeld handelt. Im Verzeichnis der Beispieldatenbank comboboxfakes.mdb finden Sie zwei unterschiedliche Bilddateien, die sich für den Button eignen.

Wie nun die einzelnen Elemente zusammenarbeiten, lässt sich am besten anhand der Beipieldatenbank demonstrieren. Als Datenbasis wurde die von der Nordwind-Datenbank abgeleitete Version Südsturm verwendet. Das Formular frmBestellungen (s. Abb. 2) zeigt die Bestellungen einzelner Kunden und die zugehörigen Bestelldetails in einem Unterformular. Zwei gefakte Kombinationsfelder sind eingebaut: Ganz oben eines zur Auswahl des Kunden und im Unterformular eines zur Auswahl von Artikeln für eine Bestellung.

missing image file

Abb. 2: Das Formular
Kundenbestellungen der Beispieldatenbank

Das Kundenkombinationsfeld ist in der Unterformularversion ausgeführt. Im Unterformular für die Artikel ist das nicht möglich, weil dieses selbst in Endlosansicht vorliegt und - abgesehen vom fehlenden Platz pro Zeile - damit nicht erlaubt, Unterformulare einzufügen. Dort kommt die Version mit einem Popup-Formular zur Anwendung, die später besprochen wird.
Das Öffnen des Kundenkombinationsfeldes mit F4, Alt + Cursor nach unten oder Klick auf die Pfeil-Schaltfläche führt zur in Abb. 3 dargestellten Erscheinung.

missing image file

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.