Newsgroup: it.comp.appl.access
Titolo: NOT BETWEEN con filtro su QUERY

Ciao a tutti ragazzi, ho un problema del quale non riesco a trovare la
soluzione, chiedo aiuto al newsgroup, confidando nella vostra
benevolenza (e preparazione):
in una query ho un criterio col quale filtro i dati con una between i
cui valori sono tratti da una combo di una maschera, ecco la sintassi:
Not Between IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[forms]!
[NOMEMASCHERA]![CAMPOFILTRO1];[forms]![NOMEMASCHERA]![CAMPOFILTRO2])
And IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[Forms]![NOMEMASCHERA]!
[CAMPOFILTRO1];[Forms]![NOMEMASCHERA]![CAMPOFILTRO2])
ma io devo porre una condizione, ma appena metto una if tipo:
=IIf([forms]![NOMEMASCHERA]![NOMECAMPO]![VALORE]="PRIMOVALORE";Not
Between IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[forms]![NOMEMASCHERA]!
[CAMPOFILTRO1];[forms]![NOMEMASCHERA]![CAMPOFILTRO2]) And IIf([Forms]!
[NOMEMASCHERA]![TIPO]="A";[Forms]![NOMEMASCHERA]![CAMPOFILTRO1];
[Forms]![NOMEMASCHERA]![CAMPOFILTRO2])
a quel punto non mi filtra più nulla e non mi dà nessun errore.
Qualche aiuto, dritta, consiglio, etc, etc...?
Thanks.

 ha scritto nel messaggio news:1182784255.7...@o11g2000prd.googlegroups.com...
Ciao a tutti ragazzi, ho un problema del quale non riesco a trovare la
soluzione, chiedo aiuto al newsgroup, confidando nella vostra
benevolenza (e preparazione):
in una query ho un criterio col quale filtro i dati con una between i
cui valori sono tratti da una combo di una maschera, ecco la sintassi:
Not Between IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[forms]!
[NOMEMASCHERA]![CAMPOFILTRO1];[forms]![NOMEMASCHERA]![CAMPOFILTRO2])
And IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[Forms]![NOMEMASCHERA]!
[CAMPOFILTRO1];[Forms]![NOMEMASCHERA]![CAMPOFILTRO2])
ma io devo porre una condizione, ma appena metto una if tipo:
IIf([forms]![NOMEMASCHERA]![NOMECAMPO]![VALORE]="PRIMOVALORE";Not
Between IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[forms]![NOMEMASCHERA]!
[CAMPOFILTRO1];[forms]![NOMEMASCHERA]![CAMPOFILTRO2]) And IIf([Forms]!
[NOMEMASCHERA]![TIPO]="A";[Forms]![NOMEMASCHERA]![CAMPOFILTRO1];
[Forms]![NOMEMASCHERA]![CAMPOFILTRO2])
___
Ciao,
se ho visto bene alla fine della condizione che hai riportato manca una parentesi chiusa alla fine (quella relativa all'iif più 
esterno),
da quanto dici non va in errore pertanto nell'sql la parentesi chiusa probabilmente c'è e semplicemente non l'hai scritta qui.
Inoltre manca la parte restituita dall'iif (più esterna) in caso la condizione non si verifichi, questa situazione non causa un 
errori durante l'esecuzione della query ma potrebbe essere fonte di risultati imprevisti, in generale è meglio specificare tutte le 
sezioni di iif.
Veniamo al problema: la mancata applicazione del filtro.
Nel primo caso, mettendo l'espressione between nella casella criteri della struttura di query, access genera un sql di questo tipo:
WHERE [CampoDaFiltrare] Not between IIf([Forms]![NOMEMASCHERA]... ecc.
pertanto durante l'esecuzione della query il campo oggetto del filtro verrà confrontato direttamente con le condizioni 
dell'operatore between dando quindi i risultati che ti aspetti.
Nel secondo caso, inglobando between in una iif l'istruzione sql risultante sarà:
WHERE [CampoDaFiltrare] =IIf([forms]![NOMEMASCHERA]![NOMECAMPO]=...
pertanto il campo oggetto del filtro sarà confrontato con il risultato della iif che, così com'è scritta, restituirà semplicemente 
vero o falso, a seconda del contenuto dei record, ma nessuno di questi risponderà a tale criterio. E' come se tu volessi filtrare il 
tuo campo (di tipo numerico o testo suppongo) scrivendo [CampoDaFiltrare]=True (o False), ecco perchè non ottieni risultati dal 
filtro così come l'hai scritto.
Per risolvere il problema devi riportare il nome del campo all'interno della iif e confrontare la stessa iif con True, tipo:
IIf([forms]![NOMEMASCHERA]![NOMECAMPO]="PRIMOVALORE";[CapoDaFiltrare] Not
Between IIf([Forms]![NOMEMASCHERA]![TIPO]="A";[forms]![NOMEMASCHERA]!
[CAMPOFILTRO1];[forms]![NOMEMASCHERA]![CAMPOFILTRO2]) And IIf([Forms]!
[NOMEMASCHERA]![TIPO]="A";[Forms]![NOMEMASCHERA]![CAMPOFILTRO1];
[Forms]![NOMEMASCHERA]![CAMPOFILTRO2]); criteri iif esterno in caso negativo...)=True
Ciao,
Mat.
___
