Abrufen der ausgewählten Elemente in einem Listenfeld mit mehrfacher Auswahl als durch Trennzeichen getrennte Zeichenfolge in Microsoft Access

Hinweis

Office 365 ProPlus wird in Microsoft 365-Apps für Unternehmen umbenannt. Weitere Informationen zu dieser Änderung finden Sie in diesem Blogbeitrag.

Dieser Artikel bezieht sich entweder auf eine Microsoft Access-Datenbankdatei (MDB) oder auf eine Microsoft Access-Datenbankdatei (ACCDB) und auf eine Microsoft Access-Projektdatei (ADP).

Moderat: Erfordert grundlegende Makro-, Codierungs- und Interoperabilitätskenntnisse.

Zusammenfassung

In diesem Artikel wird beschrieben, wie Sie ausgewählte Elemente aus einem Mehrfachauswahllistenfeld abrufen und dann die ausgewählten Elemente als durch Trennzeichen getrennte Zeichenfolge in Microsoft Access speichern.

Weitere Informationen

In Microsoft Access bestimmt der Wert der MultiSelect-Eigenschaft des Listenfelds in einem Formular oder in einem Bericht, ob das Listenfeld ein einzelnes Auswahllistenfeld oder ein Mehrfachauswahl-Listenfeld ist. In einem Listenfeld mit mehrfacher Auswahl können Sie mehrere Listenelemente gleichzeitig auswählen.

Sie können die Value-Eigenschaft des Listenfelds verwenden, um das ausgewählte Element aus dem Listenfeld abzurufen. 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 Mehrfachauswahllistenfeld abrufen und dann die ausgewählten Elemente programmgesteuert als durch Trennzeichen getrennte Zeichenfolge speichern. Führen Sie hierzu folgende Schritte aus:

  1. Starten Sie Microsoft Access.

  2. Öffnen Sie die Northwind-Beispieldatenbank.

  3. Klicken Sie im Abschnitt Objekte des Datenbankfensters auf Formulare.

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

  4. Doppelklicken Sie im rechten Bereich in der Entwurfsansicht auf "Formular erstellen".

    Hinweis Überspringen Sie in Access 2007 diesen Schritt.

  5. Fügen Sie dem Formular die folgenden Steuerelemente hinzu, und legen Sie dann die Eigenschaften von Steuerelementen wie angegeben fest:

    List Box
    ----------------------------------------------------
    Name : NamesList
    Row Source Type : Table/Query
    Row Source : SELECT First Name FROM Employees
    Multi Select : Extended
    Width : 3.5"
    Height : 0.75"
    
    Text Box
    -----------------------
    Name : mySelections
    Width : 3.5"
    Height : 0.25"
    
    Command Button
    ----------------------------------
    Name : testmultiselect
    Caption : Display Selected Items
    Width : 1.375"
    Height : 0.3"
    
    Command Button
    ----------------------
    Name : ClrList
    Caption : Clear List
    Width : 1.375"
    Height : 0.3"
    
  6. Klicken Sie im Menü Ansicht auf Code.

    Hinweis Klicken Sie in Access 2007 auf der Registerkarte "Entwurf" in der Gruppe "Extras" auf "Code anzeigen".

  7. Fügen Sie den 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

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

  2. Speichern Sie das Formular als Formular1.

  3. Schließen Sie das Formular.

  4. Öffnen Sie das Formular Form1 in der Formularansicht:

    1. Klicken Sie im Abschnitt Objekte des Datenbankfensters auf Formulare.

      Hinweis Klicken Sie in Access 2007 im Navigationsbereich auf die Formulargruppe.

    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 "Form1", und klicken Sie dann auf "Öffnen".

  5. Wählen Sie mehrere Elemente im Listenfeld aus. Klicken Sie dazu auf ein Element im Listenfeld, halten Sie die STRG-TASTE gedrückt, und klicken Sie dann auf weitere Elemente im Listenfeld.

  6. Klicken Sie auf "Ausgewählte Elemente anzeigen".

Die aus dem Mehrfachauswahl-Listenfeld ausgewählten Elemente werden als durch Trennzeichen getrennte Zeichenfolge im 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 Funktionsfähigkeit 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 Microsoft Support-Spezialisten 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.