Grazie delle risposte. ho quasi risolto.
@osvaldo: purtroppo non sono riuscito a gestire i filtri maschera. ovvero non so come fare per non selezinare manualmente ogni volta filtro avanzato>filtro maschera>ecc...; vorrei avere una cosa intuitiva per l'utente finale;
@alex: per OR intendi organizzazione?
ad ogni modo il problema era la query base, che era organizzata tipo foglio excel nella quale facevo di tutto: raggruppamenti, somme, calcoli tra campi e in più pretendevo di poterci mettere 3 filtri!
il problema che mi si pone ora è come gestire 3 filtri (combobox) in contemporanea in modo che non tutti siano attivi allo stesso momento (OR) oppure (SE) ce ne sono di attivi più di uno combinarli (AND).
in ogni combobx ho aggiunto la voce 0 in modo che se selezionato mostri tutti i record. quello che manca è il legame con gli altri 2 filtri.
credete sia il caso di utilizzare del codice per codificare ogni possibile opzione (if filtro 1&filtro2&filtro3 then...else if filtro &filtro2 ecc)?
EDIT (14/12/14 14:01): seguendo l'ipotesi codice VB, avrei 4 opzioni: filtri tutti spenti, filtri tutti accesi, 1 filtro spento e 2 accesi, 1 acceso e 2 spenti. credo sia tutto.
questo è lo pseudocodice che adotterei
'filtro1 filtro2 filtro3
'if (filtro1 filtro2 filtro3) = 0
' then showall
'Else
'if (filtro1 filtro2 filtro3)>0
'then query filtro1 filtro2 filtro3
'else
' if filtro 1 = 0 and (filtro2 e filtro3)>0
'then query filtro 2 e filtro3
'Else
' if filtro 2 = 0 and (filtro1 e filtro3)>0
'then query filtro1 e filtro3
'else
' if filtro 3 = 0 and (filtro1 e filtro2)>0
'then query filtro 1 e filtro2
'else
'if filtro1 > 0 and (filtro2 e filtro3)=0
'then query filtro1
'else
'if filtro2 > 0 and (filtro1 e filtro3)=0
'then query filtro2
'else
'if filtro3 > 0 and (filtro1 e filtro2)=0
'then query filtro3
'End If
dove il valore 0 corrisponde alla voce nulla in combobox che permettere di spegnere i lfiltro e far vedere tutti i risultati (è riferito agli ID [chiave primaria])
EDIT2 (20:11)
Me.FilterOn = False
If ordine_data = 0 And ordine_barcode = 0 And ordine_fornitore = 0 Then
MsgBox "nessun filtro selezionato"
DoCmd.ShowAllRecords
ElseIf ordine_data > 0 And ordine_barcode > 0 And ordine_fornitore > 0 Then
MsgBox "tutti i filtri selezionati"
Me.FilterOn = True
Me.Filter = ordine_data
Me.Filter = ordine_barcode
Me.Filter = ordine_fornitore
ElseIf ordine_data = 0 And ordine_barcode > 0 And ordine_fornitore > 0 Then
MsgBox "data=0, barcode e fornitore selezionati"
Me.FilterOn = True
Me.Filter = ordine_barcode
Me.Filter = ordine_fornitore
ElseIf ordine_barcode = 0 And ordine_data > 0 And ordine_fornitore > 0 Then
MsgBox "barcode=0, data e fornitore selezionati"
Me.FilterOn = True
Me.Filter = ordine_data
Me.Filter = ordine_fornitore
ElseIf ordine_fornitore = 0 And ordine_data > 0 And ordine_barcode > 0 Then
MsgBox "fornitorre=0, barcode e data selezionati"
Me.FilterOn = True
Me.Filter = ordine_data
Me.Filter = ordine_barcode
ElseIf ordine_data > 0 And ordine_barcode = 0 And ordine_fornitore = 0 Then
MsgBox "data selezionato, fornitore e barcode=0 "
Me.FilterOn = True
Me.Filter = ordine_data
ElseIf ordine_barcode > 0 And ordine_data = 0 And ordine_fornitore = 0 Then
MsgBox "barcode selezionato, fornitore e data=0 "
Me.FilterOn = True
Me.Filter = ordine_barcode
Else
If ordine_fornitore > 0 And ordine_data = 0 And ordine_barcode = 0 Then
MsgBox "fornitore selezionato, barcode e data=0 "
Me.FilterOn = True
Me.Filter = ordine_fornitore
End If
End If
me.requery
per ora questo è quanto sono riuscito a produrre (nota: il comando msgbox serviva a me per verifica).
questo il codice associato al command buttone "applica filtri". nella query devo mettere tale pulsante come criterio giusto?