Inhalt eines Kombinationsfeldes anpassenKombinationsfelder dienen üblicherweise der Auswahl von in Lookuptabellen oder Wertlisten gespeicherten Daten. Gelegentlich verwendet man sie auch zum Neuanlegen von Lookupdaten, das Ändern der eigentlichen Inhalte eines Kombinationsfeldes ist eigentlich nicht geplant. Aber es ist möglich, wie folgender Beitrag zeigt.

BeispieldatenbankDie Beispieldatenbank enthält ein Formular zur Anzeige der Artikel der Nordwinddatenbank mit einem Kombinationsfeld zur Auswahl der Kategorie.

Funktion von Kombinationsfeldern erweiternWenn Sie einem Kombinationsfeld eine Funktion zum Ändern seines Inhalts mitgeben, erweitern Sie seine Fähigkeiten enorm und sparen sich weitere Formulare zum Bearbeiten seiner Daten.
Eine einfache Schaltfläche öffnet dabei eine Inputbox zur Eingabe des neuen Inhalts (siehe Abbildung 1). Die Änderung des Inhalts bezieht sich direkt auf die Daten der zugrundeliegenden Tabelle.
Abbildung 1: Ändern eines Kombinationsfeldinhalts
Die durch die Schaltfläche ausgelöste Ereignisprozedur liest den aktuellen Inhalt des Kombinationsfeldes ein und bietet ihn in einer Inputbox als Grundlage für den neuen Ausdruck an. Per Execute-Methode ändert die Prozedur den entsprechenden Datensatz der Tabelle Kategorien. Damit das Kombinationsfeld den geänderten Inhalt anzeigt, aktualisiert die Prozedur die Datensatzherkunft und stellt das Kombinationsfeld über die Eigenschaft ItemData wieder auf den richtigen Datensatz ein.
Private Sub cmdAendern_Click()
Dim db As DAO.Database
Dim strKategorie As String
Dim intKategorie As Integer
strKategorie = InputBox("Geben Sie den neuen Kategorienamen ein.", _
& "Kategoriename ändern", Me![Kategorie-Nr].Column(1))
If Not (strKategorie = Me![Kategorie-Nr].Column(1) Or strKategorie = "") _
Then
Set db = CurrentDb
db.Execute ("UPDATE Kategorien SET Kategoriename = '" _
& strKategorie & "' WHERE [Kategorie-Nr] = " _
& Me![Kategorie-Nr]), dbFailOnError
intKategorie = Me![Kategorie-Nr].ListIndex
Me![Kategorie-Nr].Requery
Me![Kategorie-Nr] = Me![Kategorie-Nr].ItemData(intKategorie)
Set db = Nothing
End If
End Sub |