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

Kombifeldeintrge nach Prioritt

Die Eintrge von Kombinationsfeldern sind in der Regel nach dem Alphabet sortiert, gelegentlich auch nach anderen Kriterien wie der Reihenfolge beim Anlegen der enthaltenen Daten. Warum soll ein Kombinationsfeld nicht einfach einmal die meistgenutzten Daten anzeigen?

Daten mit Prioritt

Damit man Daten berhaupt nach der Anzahl der bisherigen Aufrufe sortieren kann, muss man diese Anzahl zunchst einmal speichern. Dazu fgen Sie der entsprechenden Tabelle ein Feld namens Anzahl hinzu. Die Tabelle des Beispiels sieht nun etwa wie in Bild 1 aus.

Bild 1: Diese Tabelle liefert die Daten fr das nach Prioritt sortierte Listenfeld.

Erstellen Sie nun ein Formular mit einem passenden Kombinationsfeld, dass Sie beispielsweise cboHaeufigeEintraege nennen. Als Datensatzherkunft verwenden Sie eine Abfrage, die auf der Tabelle tblBeispiel basiert und deren Eintrge erst in absteigender Reihenfolge nach dem Feld Anzahl und dann alphabetisch nach dem anzuzeigendne Text sortiert (siehe Bild 2).

Bild 2: Diese Abfrage dient als Datensatzherkunft des Kombinationsfeldes cboHaeufigeEintraege.

Nun fehlt nur noch eine Funktion, die den Inhalt des Feldes Anzahl bei jeder Auswahl eines der Eintrge im Kombinationsfeld um Eins hochzhlt. Dazu legen Sie fr die Ereigniseigenschaft Nach Aktualisierung die folgende Prozedur an:

Private Sub cboHaeufigeEintraege_AfterUpdate()

    CurrentDb.Execute "UPDATE tblBeispiel SET Anzahl = Anzahl + 1 WHERE ID = " & Me.cboHaeufigeEintraege, dbFailOnError

    Me!cboHaeufigeEintraege.Requery

End Sub

Die Routine fhrt eine Aktionsabfrage aus, die den Wert des Feldes Anzahl um Eins erhht - natrlich nur fr den Datensatz, den der Benutzer im Kombinationsfeld zuletzt ausgewhlt hat. Durch die Requery-Methode sorgen Sie dafr, dass die Datensatzherkunft direkt beim Auswhlen des neuen Eintrags aktualisiert wird.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.