IIF NIDIFICATA

di il
10 risposte

IIF NIDIFICATA

Buongiorno,
ho una maschera con dietro una QUERY. all'interno di questa query c'è un campo che si chiama "RATING_PARSIFAL".

nella maschera ho una casella di testo con questa iif :
=IIf([RATING_PARSIFAL]="AAA  ";"1";IIf([RATING_PARSIFAL]="AA   " Or "A    ";"2";IIf([RATING_PARSIFAL]="BBB  " Or "BB   " Or "B+   ";"3";IIf([RATING_PARSIFAL]="B    " Or "B-   " Or "CCC  ";"4";IIf([RATING_PARSIFAL]="C    ";"5";IIf([RATING_PARSIFAL]="D    ";"6";0))))))
Senza chiedermi il motivo per cui ho messo degli spazi (esempio "AA "), l'errore che mi da è che per qualsiasi valore avesse il campo RATING_PARSIFAL mi da sempre il valore 2 della IIF.

ESEMPIO: se il valore del campo RATING_PARSIFAL è "CCC " mi da 2 quando dovrebbe darmi 4.

Sapete indicarmi dove sbaglio?
Grazie

10 Risposte

  • Re: IIF NIDIFICATA

    Utilizza una tabella aggiuntiva nella quale avrei (almeno) 2 colonne : Rating e ValoreRating (i.e. AAA,1, D,6 ...)
    Metti in join lle 2 tabelle tramite il rating e ti elimini un IIF esagerato (peraltro complicato dal dover avere l'esatto n° di spazi nella stringa di confronto).
    Ovviamente se non puoi/vuoi aggiungere la tabella devi ingegnarti a trovare il modo di debuggare l'IIF ...
  • Re: IIF NIDIFICATA

    E infatti non potendo... sono venuto quì per chiedere aiuto nel DEBUG
  • Re: IIF NIDIFICATA

    alessandro.vitale ha scritto:


    E infatti non potendo... sono venuto quì per chiedere aiuto nel DEBUG
    Siccome il valore del campo di esito della maschera è dato dall'IIF esagerato, scrivi una funzione (tramite VBA) dove a fronte del valore di RatingParsifal ottieni il valore numerico desiderato. La funzione la fai eseguire sull'evento Current e poi con il debug cerchi il problema. Ovviamente nella funzione non utilizzi l'IIF ma una serie di if nidificate.
    Della serie :
    
    If RatingParsifal = "AAA   " then
    	RatingOut = 1
    ElseIf RatingParfisal = "AA    " or RatingParsifal = "A   " then
    	RatingOut = 2
    elseif
     ...and so on
     endif
    
  • Re: IIF NIDIFICATA

    Grazie ora provo
  • Re: IIF NIDIFICATA

    In alternativa alle if nidificate puoi usare Select Case ...
    
    select case RatingParsifal
    case "AAA   "
    	RatingOut = 1
    case "AA   ", "A   "	
    	RatingOut = 2
    case ....
    case else
    	RatingOut = -1 ' errore
    End Select
    
    nel caso verifica la sintassi grazie all'help in linea
  • Re: IIF NIDIFICATA

    alessandro.vitale ha scritto:


    Buongiorno,

    Sapete indicarmi dove sbaglio?
    Grazie
    Comunque la questione con la IIf è che non usi la sintassi corretta. Quando usi una OR devi ripetere il confronto
    
    If([RATING_PARSIFAL]="AA   " Or [RATING_PARSIFAL]="A    "
    
  • Re: IIF NIDIFICATA

    Un più comodo "IN" no?
  • Re: IIF NIDIFICATA

    muttley005 ha scritto:


    Un più comodo "IN" no?
    Ciao Mutt,
    IN che modo?
  • Re: IIF NIDIFICATA

    max.riservo ha scritto:


    muttley005 ha scritto:


    Un più comodo "IN" no?
    Ciao Mutt,
    IN che modo?
    chiedo venia, ho riletto il 3d meglio, avevo capito che dovesse mettere una serie di condizioni tipo "in OR"
  • Re: IIF NIDIFICATA

    Io però, a prescinedere che l'autore dica:

    alessandro.vitale ha scritto:


    ...
    Senza chiedermi il motivo per cui ho messo degli spazi (esempio "AA ")

    Inizierei a cercare di capire se la situazione sia o meno sanabile, e quante sarebbero le condizioni...?
    Siamo partiti da A÷C con varianti a 2 o 3 caratteri... mi chiedo se sia una soluzione consona veramente che possa farsi "turare" il naso alla scelta inziale o se non convenga sistemare, magari facendo una Tabella di relazione.
Devi accedere o registrarti per scrivere nel forum
10 risposte