Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
827423 How to retrieve the selected items in a multiple selection List Box as a comma-delimited string in Microsoft Access
Dieser Artikel bezieht sich auf Microsoft Access-Datenbanken (.mdb oder .accdb) und Microsoft Access-Projekte (.adp).
Mittel: Erfordert grundlegende Kenntnisse in den Bereichen Makros, Programmierung und Interoperabilität.
Zusammenfassung
In diesem Artikel wird erläutert, wie ausgewählte Elemente aus einem Mehrfachauswahl-Listenfeld abgerufen und anschließend als durch Trennzeichen getrennte Zeichenfolge gespeichert werden können.
Weitere Informationen
In Microsoft Access bestimmt die MultiSelect-Eigenschaft des Listenfelds in einem Formular oder in einem Bericht, ob das Listenfeld ein Einzelauswahl- oder ein Mehrfachauswahl-Listenfeld ist. In einem Mehrfachauswahl-Listenfeld können Sie mehrere Listenelemente gleichzeitig auswählen.
Über die Value-Eigenschaft des Listenfelds können Sie die ausgewählten Elemente aus dem Listenfeld abrufen. Wenn Sie jedoch ein Mehrfachauswahl-Listenfeld verwenden und versuchen, die ausgewählten Elemente mithilfe der Value-Eigenschaft abzurufen, gibt die Value-Eigenschaft NULL zurück.
Sie können die ausgewählten Elemente in einem Mehrfachauswahl-Listenfeld auswählen und anschließend als durch Trennzeichen getrennte Zeichenfolge programmgesteuert speichern. Gehen Sie hierzu folgendermaßen vor:
-
Starten Sie Microsoft Access.
-
Öffnen Sie die Beispieldatenbank "Nordwind".
-
Klicken Sie im Datenbankfenster unter Objekte auf Formulare.
Hinweis: Klicken Sie in Access 2007 in der Gruppe Formulare auf der Registerkarte Erstellen auf Formularentwurf. -
Doppelklicken Sie im rechten Bereich auf Erstellt ein Formular in der Entwurfsansicht.
Hinweis: Überspringen Sie diesen Schritt in Access 2007. -
Fügen Sie dem Formular die folgenden Steuerelemente hinzu, und legen Sie die Eigenschaften der Steuerelemente folgendermaßen fest.
Listenfeld
----------------------------------------------------
Name : NamesList
Herkunftstyp : Tabelle/Abfrage
Datensatzherkunft: SELECT FirstName FROM Employees
Mehrfachauswahl : Erweitert
Breite : 9cm
Höhe : 2cm
Textfeld
-----------------------
Name : mySelections
Breite : 9cm
Höhe : 0,6cm
Befehlsschaltfläche
----------------------------------
Name : testmultiselect
Beschriftung : Ausgewählte Elemente anzeigen
Breite : 3,5cm
Höhe : 0,8cm
Befehlsschaltfläche
----------------------
Name : ClrList
Beschriftung : Liste löschen
Breite : 3,5cm
Höhe : 0,8cm -
Klicken Sie im Menü Ansicht auf Code.
Hinweis: Klicken Sie in Access 2007 auf der Registerkarte Entwurf in der Gruppe Tools auf Code anzeigen. -
Fügen Sie folgenden Code in den Visual Basic-Editor ein:
Option Compare Database
Option Explicit
Private Sub Form_Current()
Dim oItem As Variant
Dim bFound As Boolean
Dim sTemp As String
Dim sValue As String
Dim sChar As String
Dim iCount As Integer
Dim iListItemsCount As Integer
sTemp = Nz(Me!mySelections.Value, " ")
iListItemsCount = 0
bFound = False
iCount = 0
Call clearListBox
For iCount = 1 To Len(sTemp) + 1
sChar = Mid(sTemp, iCount, 1)
If StrComp(sChar, ",") = 0 Or iCount = Len(sTemp) + 1 Then
bFound = False
Do
If StrComp(Trim(Me!NamesList.ItemData(iListItemsCount)), Trim(sValue)) = 0 Then
Me!NamesList.Selected(iListItemsCount) = True
bFound = True
End If
iListItemsCount = iListItemsCount + 1
Loop Until bFound = True Or iListItemsCount = Me!NamesList.ListCount
sValue = ""
Else
sValue = sValue & sChar
End If
Next iCount
End Sub
Private Sub clearListBox()
Dim iCount As Integer
For iCount = 0 To Me!NamesList.ListCount
Me!NamesList.Selected(iCount) = False
Next iCount
End Sub
Private Sub testmultiselect_Click()
Dim oItem As Variant
Dim sTemp As String
Dim iCount As Integer
iCount = 0
If Me!NamesList.ItemsSelected.Count <> 0 Then
For Each oItem In Me!NamesList.ItemsSelected
If iCount = 0 Then
sTemp = sTemp & Me!NamesList.ItemData(oItem)
iCount = iCount + 1
Else
sTemp = sTemp & "," & Me!NamesList.ItemData(oItem)
iCount = iCount + 1
End If
Next oItem
Else
MsgBox "Nothing was selected from the list", vbInformation
Exit Sub 'Nothing was selected
End If
Me!mySelections.Value = sTemp
End Sub
Private Sub clrList_Click()
Call clearListBox
Me!mySelections.Value = Null
End Sub -
Schließen Sie den Visual Basic-Editor.
-
Speichern Sie das Formular unter dem Namen Formular1.
-
Schließen Sie das Formular.
-
Öffnen Sie das Formular Formular1 in der Formularansicht.
-
Klicken Sie im Fenster Datenbank im Bereich Objekte auf Formulare.
Hinweis: In Access 2007 klicken Sie im Navigationsbereich auf die Gruppe Formulare. -
Klicken Sie im rechten Bereich mit der rechten Maustaste auf Formular1, und klicken Sie dann auf Öffnen.
Hinweis: Klicken Sie in Access 2007 mit der rechten Maustaste auf Formular1, und klicken Sie dann auf Öffnen.
-
-
Wählen Sie mehrere Elemente im Listenfeld aus. Klicken Sie hierzu auf ein Element im Listenfeld, halten Sie die [STRG]-Taste gedrückt, und klicken Sie anschließend auf weitere Elemente im Listenfeld.
-
Klicken Sie auf Ausgewählte Elemente anzeigen.
Die Elemente, die in dem Mehrfachauswahl-Listenfeld ausgewählt wurden, werden als eine durch Trennzeichen getrennte Zeichenfolge in dem Textfeld angezeigt.
Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Spezialisten von Microsoft Support Services können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind.
Informationsquellen
Weitere Informationen dazu, wie Sie ausgewählte Elemente in einem Mehrfachauswahl-Listenfeld auf einer Datenzugriffsseite abrufen können, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
225098 ACC2000: Werte mehreres Auswahl-List-Felds in einer Datenzugriffsseite wählte aus, wie abgerufen wird
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.