29/06/2023 - Pattygirl ha scritto:
29/06/2023 - By65Franco ha scritto:
Ciao,
la query che devi filtrare da dove la richiami?
Ho inserito il percorso della casella di riepilogo nei criteri della query. Ma non filtra gli items
Voglio dire:
- hai una Form con una Casella di Riepilogo Multi Scelta: SI
- selezioni le voci che ti interessano (uno o più elementi della casella di riepilogo) ESATTO
- apri la query in visualizzazione
- come apri la Query? vai nel riquadro di spostamento ed esegui la query o la richiami dalla FORM: fatto un pulsante dove ho inserito dopo aggiornamento me. Requery
Concordo con @Alex in merito alla Query Parametrica…
Ma visto che sei agli inizi e che hai già creato la tua form e la tua casella di riepilogo, a mio avviso potrebbe essere più semplice continuare a lavorare sulla Form e utilizzare la Query che hai per alimentare una SubForm da inserire nella tua Form.
Il mio suggerimento potrebbe essere questo:
- Hai una Form
- Hai una Casella di Riepilogo
- Hai una Query
- Inserisci nella Form una SubForm con origine dati la tua Query alla quale toglierai la parte parametrica che in questo caso non servirà.
- La SubForm sarà in Visualizzazione Foglio Dati e in questo modo visualizzi la tua Query popolata esattamente come prima.
- Inserisci due Pulsanti uno per applicare il Filtro e uno per Resettare il Filtro
- Inserisci in Vba su Pulsante Filtro, la lettura degli elementi selezionati nella Casella di Riepilogo
- Inserisci in Vba su Pulsante Reset, il ripristino del filtro e delle selezioni eseguite nella Casella di Riepilogo
Per darti una traccia ho preso una tabella qualsiasi di un DB che ho fatto quanto segue:
- Tbl_Colori … tabella
- Qry_Colori … query su Tbl_Colori
- Frm_Colori … la form contiene due Pulsanti, una Casella di Riepilogo e una SubForm
- btnFilter … pulsante per applicare il filtro
- btnFiltreReset … pulsante per resettare filtro e selezioni casella di riepilogo
- ElencoColori … casella di riepilogo con multi scelta estesa
- SFrm_Colori … sub form con origine record la query Qry_Colori
La form si presenta semplicemente in questo modo (è solo un esempio) ;)
e il codice in Vba per la Form, la subform e per i pulsanti sarà:
Option Compare Database
Option Explicit
' APPLY FILTER
Private Sub btnFilter_Click()
Me.SFrm_Colori.Form.Filter = MyFilterForm
Me.SFrm_Colori.Form.FilterOn = True
End Sub
' RESET FILTER
Private Sub btnFilterReset_Click()
Me.SFrm_Colori.Form.FilterOn = False
Me.ElencoColori.Requery
End Sub
' SET FILTER
Private Function MyFilterForm() As String
MyFilterForm = vbNullString
Dim varSel As Variant
For Each varSel In Me.ElencoColori.ItemsSelected
If MyFilterForm <> vbNullString Then MyFilterForm = MyFilterForm & " OR "
MyFilterForm = MyFilterForm & "Colore = '" & Me.ElencoColori.ItemData(varSel) & "'"
Next varSel
End Function
n.b. in MyFilterForm viene costruita la stringa del filtro da passare alla subform
Tutto qua… un semplice e banale esempio che ti porterà a conosce le sub form e come applicare i filtri alle form
p.s. Ho utilizzato l'operatore = per filtrare i Colori Selezionati nella Casella di Riepilogo, ma ovviamente puoi utilizzare le Like e tutti gli altri operatori di confronto disponibili.
Ho utilizzato OR per congiungere i confronti, ma puoi utilizzare le AND e le OR combinate come meglio credi.