Hämta markerade objekt i en flervalslistruta som en kommaavgränsad sträng i Microsoft Access
Anteckning
Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.
Den här artikeln gäller antingen en Microsoft Access-databasfil (.mdb) eller en Microsoft Access-databasfil (.accdb) och en Microsoft Access-projektfil (.adp).
Måttlig: Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter.
Sammanfattning
I den här artikeln beskrivs hur du hämtar markerade objekt från en flervalslistruta och sedan lagrar de markerade objekten som en kommaavgränsad sträng i Microsoft Access.
Mer information
I Microsoft Access avgör värdet för egenskapen MultiSelect för listrutan i ett formulär eller i en rapport om listrutan är en enskild markeringslistruta eller en flervalslistruta. I en flervalslistruta kan du markera flera listobjekt samtidigt.
Du kan använda egenskapen Värde för listrutan till att hämta det markerade objektet från listrutan. Men när du använder en flervalslistruta och försöker hämta de markerade objekten med hjälp av egenskapen Värde, returnerar egenskapen Value Null.
Du kan hämta de markerade objekten i en flervalslistruta och sedan lagra de markerade objekten som en kommaavgränsad sträng med programmering. Gör så här:
Starta Microsoft Access.
Öppna Northwind-exempeldatabasen.
Klicka på Formulär i avsnittet Objekt i databasfönstret.
Obs! I Access 2007 klickar du på Formulärdesign i gruppen Formulär på fliken Skapa.
Dubbelklicka på Skapa formulär i designvyn i det högra fönstret.
Obs! Hoppa över det här steget i Access 2007.
Lägg till följande kontroller i formuläret och ange sedan egenskaperna för kontrollerna enligt beskrivningen:
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"
Klicka på Kod på Visa-menyn.
Obs! I Access 2007 klickar du på Visa kod i gruppen Verktyg på fliken Design.
Klistra in följande kod i 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
Stäng Visual Basic Editor.
Spara formuläret som Formulär1.
Stäng formuläret.
Öppna formuläret Formulär1 i formulärvyn:
Klicka på Formulär i avsnittet Objekt i databasfönstret.
Obs! I Access 2007 går du till navigeringsfönstret och klickar på gruppen Formulär.
I det högra fönstret högerklickar du på Formulär1 och klickar sedan på Öppna.
Obs! I Access 2007 högerklickar du på Formulär1 och klickar sedan på Öppna.
Markera flera objekt i listrutan. Det gör du genom att klicka på ett objekt i listrutan, hålla ned CTRL och sedan klicka på fler objekt i listrutan.
Klicka på Visa markerade objekt.
De objekt som är markerade i flervalslistrutan visas som en kommaavgränsad sträng i textrutan.
Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov.