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 5/2011.

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

Erweitern Sie Kombinationsfelder um eine Funktion, die per Doppelklick zwischen den Einträgen blättert.

Techniken

Kombinationsfelder, VBA, Klassenprogrammierung

Voraussetzungen

Access 2000 und höher

Beispieldateien

KombifeldPerDoppelklick.mdb

Shortlink

www.access-im-unternehmen.de/792

Kombinationsfeldeintrag per Doppelklick

André Minhorst, Duisburg

Eine gute Ergonomie macht sich manchmal in Kleinigkeiten bemerkbar. So machte mich zuletzt ein Kunde darauf aufmerksam, dass es doch toll wäre, die Einträge von Kombinationsfeldern wie auch im Eigenschaftsfenster von Access einfach per Doppelklick auszuwählen - so, dass mit jedem Doppelklick der jeweils nächste Eintrag angezeigt wird. Nun, technisch ist das recht leicht umzusetzen, aber die Idee muss man erstmal haben! In diesem Beitrag lesen Sie nun, wie Sie Ihre Kombinationsfeldeinträge mit einer Funktion zum Auswählen von Einträgen per Doppelklick ausstatten.

Voraussetzung für die hier vorgestellte Lösung ist ein beliebiges Kombinationsfeld - egal, ob es aus einer Feldliste, einer Wertliste oder einer Tabelle oder Abfrage als Datensatzherkunft gefüttert wird. Zu Beginn der Entwicklung dieser Lösung schien es drei Fälle zu geben, um die man sich beim Auslösen der Ereignisprozedur Beim Doppelklicken kümmern muss:

  • Anzeigen des ersten Eintrags, wenn zuvor noch kein Eintrag markiert war, das Kombinationsfeld also den Wert Null enthält,
  • Auswählen des folgenden Eintrags, wenn ein beliebiger Eintrag außer dem letzten Eintrag ausgewählt ist und
  • Anzeigen des Wertes Null, wenn der Doppelklick bei ausgewähltem letzten Eintrag stattfindet, damit das Springen von Eintrag zu Eintrag von vorn begonnen werden kann.

Die zweite Frage, die sich stellte, war: Wie erfahre ich, welcher der jeweils nächste Eintrag ist und wähle diesen aus - und wie identifiziere ich den letzten Eintrag des Kombinationsfeldes?

Leeres Kombinationsfeld

Beginnen wir mit dem Fall, dass das Kombinationsfeld noch leer ist. Zu Beispielzwecken verwenden wir im Formular frmKombifeldPerDoppelklick gleich zwei Kombinationsfelder - eines mit einer Wertliste und eines mit einer auf der Tabelle tblPersonal basierenden Abfrage (s. Abb. 1). Legen Sie dort zunächst eines der Kombinationsfelder, zum Beispiel cboPersonal, den Wert [Ereignisprozedur] für die Eigenschaft Bei Doppelklick an und erstellen Sie mit einem Klick auf die Schaltfläche mit den drei Punkten die entsprechende Ereignisprozedur.

pic001.png

Abb. 1: Beispielformular zum Ändern des Kombinationsfeldeintrags per Doppelklick

Ob aktuell kein Eintrag ausgewählt ist, ermitteln Sie mit der Funktion IsNull. Liefert IsNull(Me!Personal) den Wert True zurück, ist noch kein Eintrag ausgewählt. In diesem Fall soll der erste Eintrag aktiviert werden. Wie dies funktioniert, wurde in Access im Unternehmen schon zigfach durchexerziert - und zwar dort, wo gleich beim Öffnen eines Formulars der erste Eintrag eines Kombinationsfeldes angezeigt werden soll.

Den entsprechenden Wert ermitteln Sie über die Eigenschaft ItemData mit dem Index 0:

Me!cboPersonal = Me!cboPersonal.ItemData(0)

Damit können Sie den Fall des leeren Kombinationsfeldes bereits testen:

If IsNull(Me!cboPersonal) Then

    Me!cboPersonal = Me!cboPersonal.ItemData(0)

End If

Kombinationsfeld mit ausgewählten Wert

Wenn bereits ein Wert ausgewählt ist, soll das Kombinationsfeld beim Doppelklick zum nächsten Eintrag springen. Dazu fügen Sie zur obigen If...Then-Bedingung zunächst einfach einen Else-Zweig hinzu. Im ersten Fall haben wir mit der ItemData-Eigenschaft und dem Index 0 den Wert des ersten Eintrags des Kombinationsfeldes ermittelt. Auf die gleiche Weise können Sie auch die übrigen Einträge selektieren - Sie brauchen nur den der Position entsprechenden Index anzugeben.

Woher aber erhalten wir die Position? Dazu offeriert das Kombinationsfeld die ListIndex-Eigenschaft. Sie gibt den Index des aktuell ausgewählten Eintrags zurück. Der per Doppelklick auszuwählende Eintrag ist der nächste Eintrag, also addieren wir den Wert 1 zum Index und ermittelten mit ItemData den Wert zu diesem Index. Diesen weisen Sie dem Kombinationsfeld zu und sorgen so dafür, dass per Doppelklick die folgenden Einträge angesteuert werden können.

Letzter Wert

Was aber ist mit dem letzten Eintrag? Soll beim Doppelklick auf den letzten Eintrag wieder der erste Eintrag angezeigt werden oder das Kombinationsfeld gar wieder geleert werden? Am ergonomischsten wäre es wohl, wenn nach dem letzten Eintrag zunächst wieder ein leeres Kombinationsfeld und erst dann wieder der erste Eintrag ausgewählt würde. Auf diese Weise würde der Benutzer leicht erkennen können, dass er alle Einträge einmal durchlaufen hat.

Das Schöne an dieser Variante ist, dass Sie gar nichts mehr tun müssen, um sie zu realisieren: Wenn das Kombinationsfeld den letzten Eintrag anzeigt und der Benutzer per Doppelklick zum folgenden Eintrag springen will, liefert Me!cboPersonal.ItemData(Me!cboPersonal.ListIndex + 1) den Wert Null, weil es keinen entsprechenden Wert im Kombinationsfeld findet.

Die Variante aus Listing 1 scheint also bereits die komplette Lösung unseres Problems zu sein. Und es kommt noch besser: Wenn kein Wert im Kombinationsfeld ausgewählt ist, liefert nicht nur IsNull den Wert True, sondern die ListIndex-Eigenschaft auch noch den Wert -1. Was bedeutet das? Nun: Sie können auch noch diesen Fall mit der folgenden Anweisung abhandeln:

Listing 1: Auswählen des jeweils nächsten Datensatzes per Doppelklick

Private Sub cboPersonal_DblClick(Cancel As Integer)

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.