De geselecteerde items in een keuzelijst met meerdere selecties ophalen als een door komma's gescheiden tekenreeks in Microsoft Access

Dit artikel is van toepassing op een Microsoft Access-databasebestand (.mdb) of op een Microsoft Access-databasebestand (.accdb) en op een Microsoft Access-projectbestand (.adp).

Gemiddeld: vereist basisvaardigheden voor macro's, codering en interoperabiliteit.

Samenvatting

In dit artikel wordt beschreven hoe u geselecteerde items ophaalt uit een keuzelijst met meerdere selecties en de geselecteerde items vervolgens opslaat als een tekenreeks met komma's in Microsoft Access.

Meer informatie

In Microsoft Access bepaalt de waarde van de eigenschap MultiSelect van de keuzelijst in een formulier of rapport of de keuzelijst één keuzelijst of een keuzelijst met meerdere keuzelijsten is. In een keuzelijst met meerdere selecties kunt u meerdere lijstitems tegelijk selecteren.

U kunt de eigenschap Waarde van de keuzelijst gebruiken om het geselecteerde item op te halen uit de keuzelijst. Wanneer u echter een keuzelijst met meerdere selecties gebruikt en u de geselecteerde items probeert op te halen met behulp van de eigenschap Waarde, retourneert de eigenschap Waarde null.

U kunt de geselecteerde items in een keuzelijst met meerdere selecties ophalen en de geselecteerde items vervolgens programmatisch opslaan als een door komma's gescheiden tekenreeks. Ga hiervoor als volgt te werk:

  1. Start Microsoft Access.

  2. Open de voorbeelddatabase Northwind.

  3. Klik in de sectie Objecten van het venster Database op Formulieren.

    Opmerking Klik in Access 2007 op Formulierontwerp in de groep Formulieren op het tabblad Maken .

  4. Dubbelklik in het rechterdeelvenster op Formulier maken in de ontwerpweergave.

    Opmerking Sla in Access 2007 deze stap over.

  5. Voeg de volgende besturingselementen toe aan het formulier en stel vervolgens de eigenschappen van besturingselementen in zoals opgegeven:

    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. Klik in het menu Beeld op Code.

    Opmerking Klik in Access 2007 op Code weergeven in de groep Extra op het tabblad Ontwerpen .

  7. Plak de volgende code in de Visual Basic-Editor:

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. Sluit de Visual Basic-Editor.

  2. Sla het formulier op als Formulier1.

  3. Sluit het formulier.

  4. Open het formulier Form1 in de formulierweergave:

    1. Klik in de sectie Objecten van het databasevenster op Formulieren.

      Opmerking Klik in Access 2007 in het navigatiedeelvenster op de groep Formulieren .

    2. Klik in het rechterdeelvenster met de rechtermuisknop op Formulier1 en klik vervolgens op Openen.

      Opmerking Klik in Access 2007 met de rechtermuisknop op Formulier1 en klik vervolgens op Openen.

  5. Selecteer meerdere items in de keuzelijst. Klik hiervoor op een item in de keuzelijst, houd Ctrl ingedrukt en klik vervolgens op meer items in de keuzelijst.

  6. Klik op Geselecteerde items weergeven.

De items die zijn geselecteerd in de keuzelijst met meerdere selecties, worden weergegeven als een door komma's gescheiden tekenreeks in het tekstvak.

Microsoft verstrekt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie. daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen.