Kapitel 3: Formulare und Steuerelemente
Bei der Anwendung der Format$-Funktion haben wir deshalb von einem Trick Gebrauch gemacht. Wir
geben im Formatierungsstring Tausender aus (das Komma im Formatierungsstring entspricht dem Tausen-
der-Separator!) und müssen deshalb die Werte der Variablen vorher mit 1000 multiplizieren. Als Resultat
erhalten wir jetzt auch bei der Ausgabe einen Punkt als Dezimaltrennzeichen.
Ein ungebundenes Kombinationsfeld füllen
ComboBox-Objekt: RowSourceType-, ColumnCount-, Column-Eigenschaft; AddItem-, RemoveItem-, Drop-
Down-Methode;
Listen- und Kombinationsfelder gehören zu den komplexeren Steuerelementen, die Ihnen Microsoft Access
standardmäßig zur Verfügung stellt. Da Microsoft Access ein Datenbankprogramm ist, sind seine Steuer-
elemente im Allgemeinen gebunden, so genannte »Bound Controls«, die man über spezielle Eigenschaften
(RecordSource, RowSource etc.) an die gewünschten Tabellen, Felder bzw. Datensätze »anbindet«.
Es gibt aber auch andere Einsatzgebiete, wo Listen-/Kombinationsfelder nicht direkt an die Datenbank ge-
koppelt sind, sondern zur Anzeige beliebiger Auflistungen verwendet werden sollen.
Oberfläche
Auf das Formular setzen Sie ein Kombinationsfeld, ein Bezeichnungsfeld und zwei Befehlsschaltflächen.
Quelltext
Beim Laden des Formulars werden die erforderlichen Voreinstellungen vorgenommen. Auch ein erster Ein-
trag für das Kombinationsfeld wird hinzugefügt.
Private Sub Form_Load()
With Kombinationsfeld0
.RowSourceType = "Value List" ' Herkunftstyp = "Wertliste"
.ColumnCount = 2 ' 2 Spalten
.ColumnWidths = "2 cm;2 cm" ' Spaltenbreite in cm
.Value = "Müller ; Max" ' Beispieleintrag
End With
End Sub
Die
AddItem
-Methode überträgt die
Value
-Eigenschaft an die erste Position in der Liste (deshalb der Index
0
). Anschließend wird der Eintrag im Anzeigefeld gelöscht und die Liste aufgeklappt:
Private Sub Befehl0_Click() ' Hinzufügen
With Kombinationsfeld0
Call .AddItem(.Value, 0)
.Value = ""
.SetFocus
.Dropdown ' Aufklappen
End With
End Sub
Ähnlich wie das Hinzufügen funktioniert das Entfernen. Als Parameter verlangt die
RemoveItem
-Methode
einen gültigen Eintrag (oder einen Index):
Private Sub Befehl1_Click() ' Löschen
178
HINWEIS
With Kombinationsfeld0
Call .RemoveItem(.Value)
.Value = ""
.SetFocus
.Dropdown ' Aufklappen
End With
End Sub
Leider wird im Eingabefeld des Kombinationsfeldes nur eine einzige Spalte angezeigt. Um zu demonstrieren,
wie man nach erfolgter Auswahl eines Eintrages auf beide Spalten zugreifen kann, erfolgt deren Anzeige mit
Hilfe der
Column
-Eigenschaft in einem separaten Bezeichnungsfeld:
Private Sub Kombinationsfeld0_Click() ' Eintrag auswählen
Dim z As Integer, s As Integer
With Kombinationsfeld0
z = .ListIndex
Bezeichnungsfeld0.Caption = .Column(0, z) & " ; " & .Column(1, z)
End With
End Sub
Beachten Sie, z.B. in der Column-Eigenschaft, dass Zeilen- bzw. Spaltenindex eines Kombinationsfeldes immer
mit 0 beginnen!
Test
Nach dem Öffnen des Formulars sollten Sie mittels »Hinzufügen«-Schaltfläche zunächst das Kombinations-
feld mit einigen Einträgen füllen, wobei jeder Eintrag aus zwei Spalten besteht. Trennen Sie die beiden
Werte durch ein Semikolon (;).
Anschließend können Sie das Kombinationsfeld aufklappen und Einträge auswählen bzw. löschen.
Abbildung 3.20 Laufzeitansicht
Bemerkungen
Aus Übersichtlichkeitsgründen wurde hier auf eine Fehlerbehandlung verzichtet. Zumindest beim
Löschvorgang wäre eine solche aber zu empfehlen.
Vom Prinzip her könnten Sie das Beispiel auch für Listenfelder anpassen, müssten dann aber für die
Eingabe ein Textfeld vorsehen.
179
Praxisbeispiele

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.