(ACCESS) Filtrare query senza filtro ma con variabili di una selezione multipla.
Salve a tutti.
Ho un problema da risolvere per fare un piccolo motore di ricerca che potrei risolvere con un filtro di una query.
In verità non sono in grado di scrivere il codice per costruire un filtro complesso e quindi per rendere "modulare" e di facile modificabilità la query, la maschera e i report, voglio evitare di scrivere la sql con righe di codice in VBA creando delle query parametriche basate unicamente su caselle di testo, selezioni multiple, ecc di una form.
Per semplificare diciamo che ho un Db con 2 tabelle.
Tabella "iscritti" è composta come segue:
IDiscritti codice
1 PA
2 MM05
ecc ecc
Tabella "Tab015" è composta come segue:
codice Desc_codice
PA PAGAMENTO
MM05 Abbonamento MM05
ecc ecc
La form "RICERCA" ha una casella di riepilogo con una selezione multipla chiamata "codice1" (in verità ne avrà tante di caselle) che prende i dati da "Tab015".
Con il seguente codice (ne scrivo solo una parte per fare capire) la casella "codice1" riempie una casella di testo chiamata "codice" facendo una stringa che come risultato finale avrà come valori (a seconda dei codici che seleziono) "PA, MM05, ecc".
Private Sub codice1_Click()
For Each varItem In Me!codice1.ItemsSelected
Me!codice = Me!codice & Me!codice1.Column(0, varItem) & ", "
Next varItem
End Sub
La form richiama con un bottone il report "ELENCO" i cui dati sono basati sulla query "00_RICERCA"
La query "00_RICERCA" è composta come segue:
SELECT iscritti.codice, iscritti.* FROM iscritti
WHERE ((iscritti.codice) In ([forms]![RICERCA]![codice]))
Ora: se nella maschera la casella "codice" ha 1 valore solo (es: MM05) la query "00_RICERCA" funziona filtrando i dati correttamente.
Però se la casella codice ha più di 1 valore (es: PA, MM05) la query "00_RICERCA" non funziona.
Inserendo a mano i valori PA, MM05 la query funziona perfettamente (la condizione diventa: WHERE ((iscritti.codice) In ([PA, MM05)).
Ho provato a inserire tutti gli apici possibili e immaginabili facendo in modo che la casella di testo "codice" avesse i seguenti valori:
"PA", "MM05"
oppure
'PA', 'MM05'
Tuttavia il risultato è sempre lo stesso: funziona con un valore solo (con o senza apici)
Penso che il problema stia nel fatto che non riesco a "formattare" le condizioni separate da una virgola come stringhe singole mentre la query mi legge la casella "codice" come un unica stringa: un po come se la stringa finale della condizione fosse "PA, MM05, ecc" e non "PA", "MM05", "ecc".
C'è un modo per "formattare" le stringhe in modo corretto senza usare VBA (o usandolo solo in minima parte)?
grazie per la pazienza a chiunque mi può dare una mano.