Discussione:
Query a Criteri Multipli
(troppo vecchio per rispondere)
ENRICO
2004-11-15 14:24:10 UTC
Permalink
Buongiorno a tutti...
Non ho trovato niente di simile in giro ma forse mi sto solo
rimbecillendo....

comunque..ragazzi...

io dovrei fare una query con 6 criteri in contemporanea....

devo fare in modo che se non metto proprio tutti e 6 i criteri i
rimanenti vengano esclusi dalla ricerca...

mi spiego.. se per esempio scelgo solo "anno di progettazione" e "tipo di
Progetto" devo trovare tutti i progetti di quell'anno e di quel tipo......

ma se negli altri criteri che seguono non scrivo nulla........il criterio
parziale che ho scelto deve comparire...
col recordset completo anche degli altri criteri che pero' ho
tralasciato....


beh come diavolo si fa? qui tra AND e OR ci sono vari problemi.....AND mi
obbliga a mettere tutti i criteri ...OR se ne frega dei Criteri Multipli...
insomma AIUTOOOOOOOOOOOOOOOO!
giorgio rancati
2004-11-15 15:13:09 UTC
Permalink
Post by ENRICO
Buongiorno a tutti...
Non ho trovato niente di simile in giro ma forse mi sto solo
rimbecillendo....
comunque..ragazzi...
io dovrei fare una query con 6 criteri in contemporanea....
devo fare in modo che se non metto proprio tutti e 6 i criteri i
rimanenti vengano esclusi dalla ricerca...
mi spiego.. se per esempio scelgo solo "anno di progettazione" e "tipo di
Progetto" devo trovare tutti i progetti di quell'anno e di quel tipo......
ma se negli altri criteri che seguono non scrivo nulla........il criterio
parziale che ho scelto deve comparire...
col recordset completo anche degli altri criteri che pero' ho
tralasciato....
beh come diavolo si fa? qui tra AND e OR ci sono vari problemi.....AND mi
obbliga a mettere tutti i criteri ...OR se ne frega dei Criteri Multipli...
insomma AIUTOOOOOOOOOOOOOOOO!
Ciao Enrico,

ci sono due modi per farlo
1) Crei la query da VBA in modo dinamico e inserisci nella Where solo i
criteri che sono stati compilati

2) Includi tutti i criteri nella WHERE in logica AND e con la funzione IIF
controlli se il criterio è stato compilato.
es...
------------
SELECT *
FROM Tabella
WHERE Campo1=IIF('' &
Forms!Maschera1.Criterio1='',Campo1,Forms!Maschera1.Criterio1)
AND Campo2=IIF('' &
Forms!Maschera1.Criterio2='',Campo2,Forms!Maschera1.Criterio2)
AND Campo3=IIF('' &
Forms!Maschera1.Criterio3='',Campo3,Forms!Maschera1.Criterio3)
AND Campo4=IIF('' &
Forms!Maschera1.Criterio4='',Campo4,Forms!Maschera1.Criterio4)
AND Campo5=IIF('' &
Forms!Maschera1.Criterio5='',Campo5,Forms!Maschera1.Criterio5)
AND Campo6=IIF('' &
Forms!Maschera1.Criterio6='',Campo6,Forms!Maschera1.Criterio6)
--------------

In Questo modo se Criterio1 non è compilato la WHERE confronta Campo1=Campo1
che risulta sempre vero.
La stessa cosa vale per gli altri criteri.

Ciao Giorgio
giorgio rancati
2004-11-15 15:28:45 UTC
Permalink
se vuoi puoi farla anche senza IIF
--------------
SELECT *
FROM Tabella
WHERE (Campo1=Forms!Maschera1.Criterio1 OR '' &
Forms!Maschera1.Criterio1='')
AND (Campo2=Forms!Maschera1.Criterio2 OR '' & Forms!Maschera1.Criterio2='')
AND (Campo3=Forms!Maschera1.Criterio3 OR '' & Forms!Maschera1.Criterio3='')
AND (Campo4=Forms!Maschera1.Criterio4 OR '' & Forms!Maschera1.Criterio4='')
AND (Campo5=Forms!Maschera1.Criterio5 OR '' & Forms!Maschera1.Criterio5='')
AND (Campo6=Forms!Maschera1.Criterio6 OR '' & Forms!Maschera1.Criterio6='')
--------------

Ciao Giorgio

Loading...