Newsgroup: it.comp.appl.access
Titolo: IF-THEN-ENDIF in Query A97

Buongiorno a tutti.
Versione Access97
Problema: in una tabella, estrarre e, quindi, visualizzare in una casella
combinata solo alcuni dei valori in elenco, sulla base della precedente
scelta di alcuni valori in un'altra casella combinata presente nella
medesima tabella. E' possibile utilizzare IF THEN ENDIF?
Ho una tabella chiamata Rilievo, in cui ho due campi (SPP e ETA), il campo
ETA è una casella combinata il cui elenco di valori si basa su una query
che estrae informazioni dalla tabella (LUT_CLasseEta).
Vorrei che nella tabella Rilievo, una volta scelto un valore nel campo
SPP, l'elenco di valori in ETA venisse ridotto a solo alcuni (scelti da
me) tra quelli originari, contenuti nella tabella LUT_ETA.
So che questo è possibile se facessi il tutto tramite maschere e, quindi
con il codice vba solito, ma non posso passare per le maschere, tutto il
database DEVE essere solo tabellare.
E' possibile utilizzare l'istruzione IF... THEN ... ELSIF ... ELSE...
ENDIF in una query messa in "origine riga" in access97?
Io ho provato a scrivere nel seguente modo:
SELECT LUT_ClasseEta.ID_ETA, LUT_ClasseEta.ETA
FROM LUT_ClasseEta
WHERE
IF Rilievo.SPP = 0 OR Rilievo.SPP = 1 OR Rilievo.SPP = 2 THEN
ID_ETA = 0 OR ID_ETA = 1 OR ID_ETA = 2
ELSEIF Rilievo.SPP = 3 OR Rilievo.SPP = 4 OR Rilievo.SPP = 5 Or
Rilievo.SPP = 6 OR Rilievo.SPP = 7 THEN
ID_ETA = 0 OR ID_ETA = 1 OR ID_ETA = 3
ELSEIF Rilievo.SPP = 8 OR Rilievo.SPP = 9 OR Rilievo.SPP = 10 Or
Rilievo.SPP = 11 OR Rilievo.SPP = 12 OR Rilievo.SPP = 13 OR Rilievo.SPP =
14 OR Rilievo.SPP = 15 OR Rilievo.SPP = 16 OR Rilievo.SPP = 17 OR
Rilievo.SPP = 18 OR Rilievo.SPP = 19 OR Rilievo.SPP = 20 THEN
ID_ETA = 0
ENDIF
ORDER BY LUT_ClasseEta.ETA;
Ma naturalmente non funziona.
Grazie per l'attenzione,
Gloria
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Vai sul Sito Comune (link qui sotto) e nella Sezione Forms leggi la mia FAQ
intitolata "Sincronizzare in una maschera due o più caselle combinate tra
loro in gerarchia".
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao. Prova così:
SELECT LUT_ClasseEta.ID_ETA, LUT_ClasseEta.ETA
FROM LUT_ClasseEta
WHERE
IIF(Rilievo.SPP = 0 OR Rilievo.SPP = 1 OR Rilievo.SPP = 2,
ID_ETA = 0 OR ID_ETA = 1 OR ID_ETA = 2,
IIF(Rilievo.SPP = 3 OR Rilievo.SPP = 4 OR Rilievo.SPP = 5 Or
Rilievo.SPP = 6 OR Rilievo.SPP = 7,
ID_ETA = 0 OR ID_ETA = 1 OR ID_ETA = 3,
IIF(Rilievo.SPP = 8 OR Rilievo.SPP = 9 OR Rilievo.SPP = 10 Or
Rilievo.SPP = 11 OR Rilievo.SPP = 12 OR Rilievo.SPP = 13 OR Rilievo.SPP =
14 OR Rilievo.SPP = 15 OR Rilievo.SPP = 16 OR Rilievo.SPP = 17 OR
Rilievo.SPP = 18 OR Rilievo.SPP = 19 OR Rilievo.SPP = 20,
ID_ETA = 0, ID_ETA Like "*")))
ORDER BY LUT_ClasseEta.ETA;
L'intenzione è quella di sfruttare tre funzioni IIF nidificate. Se
Rilievo.SPP è maggiore di 20 dovrebbe restituire tutti i record. Non l'ho
provata, spero che funzioni. Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 provata, spero che funzioni. Ciao
GRAZIE,
si č sulla strada giusta, anche se non č perfetta, ma almeno ho il punto
di partenza, con poche modifiche dovrebbe funzionare perfettamente. Da qui
proseguo e poi farň sapere le fine della storia.
Ciao,
