Come recuperare gli elementi selezionati in una casella di riepilogo a selezione multipla come stringa delimitata da virgole in Microsoft Access
Le informazioni in questo articolo si applicano ai file di database di Microsoft Access con estensione .mdb oppure .accdb e ai file di progetto di Microsoft Access con estensione .adp.
Moderato: richiede competenze di base di macro, codifica e interoperabilità.
Riepilogo
Questo articolo descrive come recuperare gli elementi selezionati da una casella di riepilogo a selezione multipla e quindi archiviare gli elementi selezionati come stringa delimitata da virgole in Microsoft Access.
Ulteriori informazioni
In Microsoft Access, il valore della proprietà MultiSelect della casella di riepilogo in una maschera o in un report determina se la casella di riepilogo è una casella di riepilogo a selezione singola o una casella di riepilogo a selezione multipla. In una casella di riepilogo a selezione multipla è possibile selezionare più voci di elenco contemporaneamente.
È possibile utilizzare la proprietà Value della casella di riepilogo per recuperare l'elemento selezionato dalla casella di riepilogo. Tuttavia, quando si utilizza una casella di riepilogo a selezione multipla e si tenta di recuperare gli elementi selezionati tramite la proprietà Value, la proprietà Value restituisce Null.
È possibile recuperare gli elementi selezionati in una casella di riepilogo a selezione multipla e quindi archiviare gli elementi selezionati come stringa delimitata da virgole a livello di codice. A tal fine, attenersi alla seguente procedura:
Avviare Microsoft Access.
Aprire il database di esempio Northwind.
Nella sezione Oggetti della finestra Database fare clic su Moduli.
Nota In Access 2007 fare clic su Struttura modulo nel gruppo Moduli della scheda Crea .
Nel riquadro destro fare doppio clic su Crea modulo in visualizzazione Struttura.
Nota In Access 2007 ignorare questo passaggio.
Aggiungere i controlli seguenti al form e quindi impostare le proprietà dei controlli come specificato:
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"
Scegliere Codice dal menu Visualizza.
Nota In Access 2007 fare clic su Visualizza codice nel gruppo Strumenti della scheda Progettazione .
Incollare il codice seguente nella Editor di 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
Chiudere la Editor di Visual Basic.
Salvare il modulo come Form1.
Chiudere il modulo.
Aprire il modulo Form1 in visualizzazione Maschera:
Nella sezione Oggetti della finestra del database fare clic su Moduli.
Nota Nel riquadro di spostamento di Access 2007 fare clic sul gruppo Moduli .
Nel riquadro destro fare clic con il pulsante destro del mouse su Form1 e quindi scegliere Apri.
Nota In Access 2007 fare clic con il pulsante destro del mouse su Form1 e quindi scegliere Apri.
Selezionare più elementi nella casella di riepilogo. A tale scopo, fare clic su un elemento nella casella di riepilogo, tenere premuto CTRL e quindi fare clic su altri elementi nella casella di riepilogo.
Fare clic su Visualizza elementi selezionati.
Gli elementi selezionati dalla casella di riepilogo a selezione multipla vengono visualizzati come stringa delimitata da virgole nella casella di testo.
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per