Abrufen der ausgewählten Elemente in einem Listenfeld mit mehrfacher Auswahl als durch Trennzeichen getrennte Zeichenfolge in Microsoft Access
Dieser Artikel bezieht sich auf Microsoft Access-Datenbankdateien (.mdb) oder Microsoft Access-Datenbankdateien (.accdb), und auch auf Microsoft Access-Projektdateien (.adp).
Moderat: Erfordert grundlegende Makro-, Programmier- und Interoperabilitätskenntnisse.
Zusammenfassung
In diesem Artikel wird beschrieben, wie Sie ausgewählte Elemente aus einem Listenfeld mit mehrfacher Auswahl abrufen und die ausgewählten Elemente dann 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 es sich bei dem Listenfeld um ein Listenfeld mit einzeler Auswahl oder um ein Listenfeld mit mehrfacher Auswahl handelt. 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 Listenfeld mit Mehrfachauswahl 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 die ausgewählten Elemente dann programmgesteuert als durch Trennzeichen getrennte Zeichenfolge speichern. Gehen Sie dazu wie folgt vor:
Starten Sie Microsoft Access.
Öffnen Sie die Beispieldatenbank Northwind.
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.
Doppelklicken Sie im rechten Bereich in der Entwurfsansicht auf Formular erstellen.
Hinweis Überspringen Sie in Access 2007 diesen Schritt.
Fügen Sie dem Formular die folgenden Steuerelemente hinzu, und legen Sie dann die Eigenschaften der Steuerelemente 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"
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 den folgenden Code in die 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 als Form1.
Schließen Sie das Formular.
Öffnen Sie das Formular Form1 in der Formularansicht:
Klicken Sie im Abschnitt Objekte des Datenbankfensters auf Formulare.
Hinweis Klicken Sie in Access 2007 im Navigationsbereich auf die Gruppe Formulare .
Klicken Sie im rechten Bereich mit der rechten Maustaste auf Form1, und klicken Sie dann auf Öffnen.
Hinweis Klicken Sie in Access 2007 mit der rechten Maustaste auf Form1, und klicken Sie dann auf Öffnen.
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 im Listenfeld auf weitere Elemente.
Klicken Sie auf Ausgewählte Elemente anzeigen.
Die elemente, die aus dem Listenfeld für mehrfache Auswahl ausgewählt werden, 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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für