Newsgroup: it.comp.appl.access
Titolo: Funzione IIf

E' possibile con la funzione IIf, inserita come espressione in un campo di 
una query o in un modulo sotto una maschera, avere come valore restituito 
quanto segue:
- valore restituito "1" se nel campo "Tipo" ho all'interno un valore 
digitato che racchiude la lettera "B"
- valore restituito "2" se nel campo "Tipo" ho all'interno un valore 
digitato che racchiude la lettera "C"
Eventualmente che codice devo srivere?
Grazie mille
Gianni


Se una delle due occorrenze, B o C, c'è sicuramente, e solo una o l'altra,
puoi usare la seguente porzione di codice:
IIf(InStr(1, Tipo, "B") > 0, 1, 2)
Se invece può succedere che nessuna delle due lettere sia presente, usa la
seguente:
IIf(InStr(1, Tipo, "B") > 0, 1, IIf(InStr(1, Tipo, "C") > 0, 2, 0))
In quest'ultimo caso, se non sono presenti nè la B nè la C la funzione
restituirà 0 (zero)
Tieni presente che se sono presenti entrambe, la funzione ti restituirà
sempre solo il valore associato alla "B", che viene cercata per prima.
la funzione Instr cerca, partendo dal primo carattere, nella stringa Tipo,
la stringa "B" e restituisce la posizione in cui ha trovato la prima
occorrenza. Se non la trova, cerca la lettera "C" e fa la stessa cosa. Se
anche questa manca, il valore restituito sarà 0.
Saluti
Franco
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:151Z21Z34Z70Y1...@usenet.libero.it...

Ciao Franco, stò cercando di utilizzare queste espressioni ma mi
restituiscono degli errori che ti descrivo:
inserendo IIf(InStr(1, Tipo, "B") > 0, 1, 2) così com'è nella riga criteri
del campo Tipo di una query mi viene segnalato l'errore ""Operatore (.) o
punto esclamativo (!) non valido oppure parentesi non valide
nell'espressione".
Creando un campo espressione nella stessa query e immetendo l'espressione mi
viene segnalato ""Errore di sintassi, è possibile che sia stato immesso un
operando senza un operatore".
Se la inserisco su una routine evento del campo "Tipo" di una maschera mi
viene segnalato ""Errore di compilazione: Errore di sintassi""
Sai dirni con precisone quale è la sistassi giusta e dove posso usarla?
Inoltre se dovessi avere i valori nel campo di origine A, B, C, D e mi
servissero i valori restituiti 1, 2, 3, 4 cosa devo scrivere?
Grazie anticipatamente.
Ciao, Gianni

 ha scritto nel messaggio 
news:47401dd7$0$4794$4faf...@reader4.news.tin.it...

mi pare di aver capito che le istruzioni di cui sopra li inserisci in una 
query, se è così, devi sostituire le virgole con il puntoe virgola per 
separare le parti dell'istruzione.
Ciao
NSantini 

 ha scritto nel messaggio 
news:cYX%i.62$PC3...@nntpserver.swip.net...

Ciao ti ringrazio con ";" funziona sia nell' espressione della query che 
come origine controllo di un campo non associato di una maschera.
Non ho capito però xchè la stessa stringa mi da errore di sintassi se la 
inserisco in una routine.
Inoltre quello che interessa particolarmente  è sapere se posso utilizzare 
questa funzione x avere restituiti 4 valori diversi a seconda di quello che 
trova nel campo di origine come spiegavo nel post precedente.
Ho provato ad aggiungere qualche cosa alla funzione in questo modo: 
IIf(InStr(1, Tipo, "B") > 0, 1, IIf(InStr(1, Tipo, "C") > 0, 2, 0)> 0, 1, 
IIf(InStr(1, Tipo, "D") >0, 3, 0)) ma mi da un errore "Numero errato di 
argomenti specificati in una funzione nell'espressione immessa".
Te ne sono grato se puoi darmi ancora un aiuto.
Saluti, Gianni


le istruzioni se inserite come codice di una routine prendono la virgola al 
di fuori delle routine in genere prendono il punto e virgola.
Credo che per avere restituiti 4 valori diversi potresti usare la funzione 
Switch per la quale trovi la sintassi nell'help. Buon divertimento
Ciao
NSantini 


Oppure potresti prova con la funzione Switch:
=switch(InStr(1, Tipo, "A") > 0, 1, InStr(1, Tipo, "B") > 0, 2,
InStr(1, Tipo, "C") > 0, 3, InStr(1, Tipo, "D") > 0, 4)
-- 
Ciao
Geppo