Buongiorno a tutti,
ho un problema con il passaggio di informazioni da una maschera ai criteri di una query.
Ho una tabella TProdotti, legata ad una TcategoriaProdotti, in cui voglio filtrare i record a seconda della loro categoria.
Nella maschera McreaListino3 ho la casella di riepilogo “ElencoCosaOffrire” che contiene 5 valori: Riso;Salati;Dolci;Specialità;Liquidi
Il pulsante cmdListino lancia il seguente codice con cui crea la query QcreaListino3.
Private Sub cmdListino_Click()
Dim strLista As String
Dim varItem As Variant
If Me!ElencoCosaOffrire.ItemsSelected.Count = 0 Then Exit Sub
For Each varItem In Me!ElencoCosaOffrire.ItemsSelected
'Cattura le opzioni selezionate
strLista = strLista & _
Me!ElencoCosaOffrire.Column(0, varItem) & ","
Next varItem
'Elimina la virgola eccedente
strLista = Left$(strLista, Len(strLista) - 1)
'Imposta codice SQL della query
CurrentDb.QueryDefs("QCreaListino3").SQL = "SELECT * FROM TProdotti " _
& "WHERE Categoria IN (" & strLista & ") " _
& "ORDER BY [TProdotti].[Categoria], [TProdotti].[IDProdotto];"
' esempio funzionante: WHERE (((TCategorieProdotti.NomeCategoria) In ("Riso","Dolci")))
DoCmd.OpenQuery "QCreaListino3"
End Sub
Il problema è che la variabile strLista, che legge i valori selezionati tra i 5 di ElencoCosaOffrire, trasformata in criterio della query, assume le parentesi quadre e quindi la query non mi si compila correttamente.
Ad esempio: se sulla maschera seleziono “Riso” e “Dolci”, strLista = Riso,Dolci ma il criterio nella query si presenta in questa maniera: … IN([Riso],[Dolci]).
Quindi mi chiede di immettere il valore dei due parametri [Riso] e [Dolci] anziché filtrare – come vorrei – i valori della tabella TProdotti la cui Categoria sia Riso o Dolci.
E’ settimane che cerco nel forum ma non ho trovato niente che mi aiuti.
Qualcuno può darmi una mano?
Grazie mille a tutti!