Per primo non si comprende come hai gestito con il "Between" il criterio... devi spiegaro meglio, magari dacci un Link da cui capire lo scenario.
Se hai usato una Query Parametrica con i criteri... nonostante sicuramente funzioni, non è il modo più funzionale, soprattutto se devi filtrare in modo Flessibile Oggetti DatBound.
Le query con criteri, hanno un'efficienza ridotta rispetto alle queries senza criteri, se poi ai criteri devi aggiungere la condizione di Implementazione del TUTTI... è un Nuovo Criterio, se questi fossero N si avrebbe una Query con efficienza molto scadente.
Access in questo offre la possibilità di gestire la proprietà FILTER dell'oggetto DataBound che è una Form, in modo estremamente più funzionale avendo come principio il fatto che se un Criterio non serve... non si usa.
Quindi dovrai basare la tua Form su una Tabella o Query senza alcun Criterio, poi costruirai la WHERE CONDITION in modo dinamico ed applicherai quella che corrisponde al necessario... e se nessun criterio è richiesto, li rimuovi.
Esempio
Dim strFilter As string
If IsDate(Me!DataInizio) And IsDate(Me!DataFine) Then strFilter="CampoData Between " & clng(Me!DataInizio) & " AND " & clng(Me!DataFine)
If Len(strFilter)>0 then
Me.NomeSubForm.Form.Filter=strFilter
Me.NomeSubForm.Form.FilterOn=True
Else
Me.NomeSubForm.Form.FilterOn=False
End if
Questa è una LOGICA FUNZIONALE... se poi i criteri diventano N la struttura da usare è la stessa con concatenazione
Dim strFilter As string
If IsDate(Me!DataInizio) And IsDate(Me!DataFine) Then strFilter="(CampoData Between " & clng(Me!DataInizio) & " AND " & clng(Me!DataFine) & ") AND "
If Len(Me.ComboSelezione & vbNullstring)>0 Then strFilter="(CampoIdEsempio = " & Me!ComboSelezione & ") AND "
.... ' ecc per tutti gli N criteri che si possono fare...
If Len(strFilter)>0 then
strFilter=Mid$(strFilter,1,len(strFilter)-5) ' uso [-5] per rimuovere " AND " finale di concatenazione del Criterio
Me.NomeSubForm.Form.Filter=strFilter
Me.NomeSubForm.Form.FilterOn=True
Else
Me.NomeSubForm.Form.FilterOn=False
End if