Jak pobrać zaznaczone elementy z pola listy wielokrotnego wyboru jako ciąg rozdzielany przecinkami w programie Microsoft Access
Uwaga
Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.
Ten artykuł dotyczy pliku bazy danych programu Microsoft Access (mdb) lub pliku bazy danych programu Microsoft Access (accdb) oraz pliku projektu programu Microsoft Access (adp).
Umiarkowany. Wymaga podstawowych umiejętności makr, kodowania i współdziałania.
Podsumowanie
W tym artykule opisano sposób pobierania zaznaczonych elementów z pola listy wielokrotnego wyboru, a następnie przechowywania zaznaczonych elementów jako ciągu rozdzielanego przecinkami w programie Microsoft Access.
Więcej informacji
W programie Microsoft Access wartość właściwości MultiSelect pola listy w formularzu lub raporcie określa, czy pole listy jest pojedynczym polem listy wyboru, czy polem listy wielokrotnego wyboru. W polu listy wielokrotnego wyboru możesz zaznaczyć wiele elementów listy jednocześnie.
Właściwość Wartość pola listy umożliwia pobranie wybranego elementu z pola listy. Jednak w przypadku użycia pola listy wielokrotnego wyboru i próby pobrania wybranych elementów przy użyciu właściwości Value właściwość Value zwraca wartość Null.
Zaznaczone elementy można pobrać do pola listy wielokrotnego wyboru, a następnie programowo przechowywać jako ciąg rozdzielany przecinkami. Aby to zrobić, wykonaj następujące kroki.
Uruchom program Microsoft Access.
Otwórz przykładową bazę danych Northwind.
W sekcji Obiekty okna Baza danych kliknij pozycję Formularze.
Uwaga W programie Access 2007 kliknij pozycję Projekt formularza w grupie Formularze na karcie Tworzenie.
W prawym okienku kliknij dwukrotnie pozycję Utwórz formularz w widoku projektu.
Uwaga Pomiń ten krok w programie Access 2007.
Dodaj do formularza następujące kontrolki, a następnie ustaw właściwości kontrolek zgodnie z ustawieniami:
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"
W menu Widok kliknij polecenie Kod.
Uwaga W programie Access 2007 kliknij pozycję Wyświetl kod w grupie Narzędzia na karcie Projektowanie.
Wklej następujący kod w Edytorze Visual Basic:
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
Zamknij Edytor Visual Basic.
Zapisz formularz jako formularz1.
Zamknij formularz.
Otwieranie formularza Form1 w widoku formularza:
W sekcji Obiekty okna bazy danych kliknij pozycję Formularze.
Uwaga W programie Access 2007 w okienku nawigacji kliknij grupę Formularze.
W prawym okienku kliknij prawym przyciskiem myszy pozycję Formularz1, a następnie kliknij polecenie Otwórz.
Uwaga W programie Access 2007 kliknij prawym przyciskiem myszy pozycję Formularz1, a następnie kliknij polecenie Otwórz.
Zaznaczenie wielu elementów w polu listy. W tym celu kliknij element w polu listy, przytrzymaj naciśnięty klawisz CTRL i kliknij więcej elementów w polu listy.
Kliknij pozycję Wyświetl zaznaczone elementy.
Elementy wybrane z pola listy wielokrotnego wyboru są w polu tekstowym wyświetlane jako ciąg rozdzielany przecinkami.
Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.