Abrufen der ausgewählten Elemente in einem Mehrfachauswahl-Listenfeld als durch Trennzeichen getrennte Zeichenfolge in Microsoft Access

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:

  1. Starten Sie Microsoft Access.

  2. Öffnen Sie die Beispieldatenbank "Nordwind".

  3. Klicken Sie im Datenbankfenster unter Objekte auf Formulare.

    Hinweis: Klicken Sie in Access 2007 in der Gruppe Formulare auf der Registerkarte Erstellen auf Formularentwurf.

  4. Doppelklicken Sie im rechten Bereich auf Erstellt ein Formular in der Entwurfsansicht.

    Hinweis: Überspringen Sie diesen Schritt in Access 2007.

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

  6. Klicken Sie im Menü Ansicht auf Code.

    Hinweis: Klicken Sie in Access 2007 auf der Registerkarte Entwurf in der Gruppe Tools auf Code anzeigen.

  7. 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

  8. Schließen Sie den Visual Basic-Editor.

  9. Speichern Sie das Formular unter dem Namen Formular1.

  10. Schließen Sie das Formular.

  11. Öffnen Sie das Formular Formular1 in der Formularansicht.

    1. Klicken Sie im Fenster Datenbank im Bereich Objekte auf Formulare.

      Hinweis: In Access 2007 klicken Sie im Navigationsbereich auf die Gruppe Formulare.

    2. 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.

  12. 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.

  13. 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.

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×