Jak načíst vybrané položky v seznamu s vícenásobným výběrem jako řetězec oddělený čárkami v aplikaci Microsoft Access

Tento článek se vztahuje buď na soubor databáze Microsoft Access (.mdb), nebo na soubor databáze Microsoft Access (.accdb) a na soubor projektu (.adp) aplikace Microsoft Access.

Střední: Vyžaduje základní dovednosti v makrech, kódování a interoperabilitě.

Souhrn

Tento článek popisuje, jak načíst vybrané položky ze seznamu s více výběry a pak vybrané položky uložit jako řetězec oddělený čárkami v aplikaci Microsoft Access.

Další informace

V aplikaci Microsoft Access určuje hodnota vlastnosti MultiSelect seznamu ve formuláři nebo v sestavě, zda je seznam jedním nebo vícenásobným seznamem výběru. V seznamu s více výběry můžete vybrat více položek seznamu najednou.

K načtení vybrané položky ze seznamu můžete použít vlastnost Value seznamu. Pokud však použijete seznam s vícenásobným výběrem a pokusíte se načíst vybrané položky pomocí vlastnosti Value, vrátí vlastnost Value hodnotu Null.

Můžete načíst vybrané položky ze seznamu s vícenásobným výběrem a potom je uložit jako řetězec oddělený čárkami prostřednictvím kódu programu. Postupujte takto:

  1. Spusťte Aplikaci Microsoft Access.

  2. Otevřete ukázkovou databázi Northwind.

  3. V části Objekty v okně Databáze klikněte na Formuláře.

    Poznámka V Accessu 2007 klikněte na Návrh formuláře ve skupině Formuláře na kartě Vytvořit .

  4. V pravém podokně poklikejte na Vytvořit formulář v návrhovém zobrazení.

    Poznámka V Accessu 2007 tento krok přeskočte.

  5. Přidejte do formuláře následující ovládací prvky a pak podle potřeby nastavte vlastnosti ovládacích prvků:

    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. V nabídce View (Zobrazení) klikněte na Code (Kód).

    Poznámka V Accessu 2007 klikněte na Zobrazit kód ve skupině Nástroje na kartě Návrh .

  7. Do Editor jazyka Visual Basic vložte následující kód:

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. Zavřete Editor jazyka Visual Basic.

  2. Uložte formulář jako Formulář1.

  3. Zavřete formulář.

  4. Otevřete formulář Form1 ve formulářovém zobrazení:

    1. V části Objekty v okně Databáze klikněte na Formuláře.

      Poznámka V Accessu 2007 klikněte v navigačním podokně na skupinu Formuláře .

    2. V pravém podokně klikněte pravým tlačítkem na Form1 a potom klikněte na Otevřít.

      Poznámka V accessu 2007 klikněte pravým tlačítkem na Form1 a potom klikněte na Otevřít.

  5. V seznamu vyberte více položek. Uděláte to tak, že kliknete na položku v seznamu, podržíte stisknutou klávesu CTRL a kliknete na další položky v seznamu.

  6. Klikněte na Zobrazit vybrané položky.

Položky vybrané ze seznamu s vícenásobným výběrem se v textovém poli zobrazí jako řetězec oddělený čárkami.

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.