Funzione IIf, eval, and

di il
13 risposte

Funzione IIf, eval, and

Ciao raga, scusate ho un po' di problemi a scrivere una formula nel generatore di espressioni, potete darmi una mano?
Vorrei scrivere la seguente formula: Se campo 1= 10 e contemporaneamenteil campo 2= 20 allora scrivi "buono" altrimenti se il campo 1=100 e il contemporaneamente 2=200 allora scrivi "medio", altrimenti se il campo 1 e il campo 2 sono altri valori allora scrivi "errore"

13 Risposte

  • Re: Funzione IIf, eval, and

    Potresti usare IIf "annidata". Ossia, se leggi bene le sue proprietà, noterai che il terzo argomento restituisce un valore qualora sia FALSO il predicato del primo argomento. Di conseguenza nel terzo argomento puoi "rilanciare" una nuova IIf "interna/annidata"...
    Prova così:
    IIf(([Campo1]=10) And ([Campo2]=20);"buono";IIf(([Campo1]=100) And ([Campo2]=200);"medio";"errore"))
    non so se ho messo qualche parentesi di troppo.
  • Re: Funzione IIf, eval, and

    alberto871 ha scritto:


    Ciao raga, scusate ho un po' di problemi a scrivere una formula nel generatore di espressioni, potete darmi una mano?
    Vorrei scrivere la seguente formula: Se campo 1= 10 e contemporaneamenteil campo 2= 20 allora scrivi "buono" altrimenti se il campo 1=100 e il contemporaneamente 2=200 allora scrivi "medio", altrimenti se il campo 1 e il campo 2 sono altri valori allora scrivi "errore"
    Per "raga".... mi hai già escluso... se prometti di non usare più questa discriminazione per i vecchietti... provo a rispondere...

    Fai una cosa simile
    Se Campo1=10 e Campo2=20 allora
    ....buono
    Altrimenti Se campo1=100 e campo2=200 allora
    ....medio
    Altrimenti
    .... errore
    Fine

    Traduci in vba...
  • Re: Funzione IIf, eval, and

    Grande Osvaldo....funziona alla grandissima, miticooo!!!! Alex grazie anche a te anche se io non so programmare in vba, comunque io chiamo tutti raga dai 6 ai 96 anni:) così per fare il simpatico....grazie ancora a tutti e due:)
  • Re: Funzione IIf, eval, and

    alberto871 ha scritto:


    Grande Osvaldo....funziona alla grandissima, miticooo!!!! Alex grazie anche a te anche se io non so programmare in vba, comunque io chiamo tutti raga dai 6 ai 96 anni:) così per fare il simpatico....grazie ancora a tutti e due:)
    Ecco cosa non capivo... è un modo per fare il "simpatico"... bene... interessante grazie allora.
    Puoi provare anche altre cose meno istrioniche se credi... noi apprezziamo.

    Se ci dici la variabilità dei valori quella espressione si potrebbe semplificare...
    Ad esempio la divisione dei 2 campi... potrebbe dimezzare le condizioni... ed i confronti velocizzando molto.
    Campo2/Campo1=2 condizione1
    Campo2/Campo1=20 condizione2
  • Re: Funzione IIf, eval, and

    In realtà mi e sorto un nuovo problema perché a quanto pare Access non digerisce più di 4 condizioni iif+and.....vi risulta? Cioè ho fatto la formula che ha detto Osvaldo e funziona benissimo però dopo il quarto iif+and si rifiuta di proseguire e a me servirebbero almeno 7-8 condizioni. Sapete che succede?
  • Re: Funzione IIf, eval, and

    Non è definito un NUMERO LIMITE, che io sappia leggendo la guida, quindi ipotizzo un errore di sintassi.
    In ogni caso concatenazioni così complesse sono il modo migliore per affondare la funzionalità esecutiva di una Query.
  • Re: Funzione IIf, eval, and

    Anch'io propendo per usare IIf con un massimo di 2-3 condizioni annidate. Se parli di 7-8 io penserei a una gestione "generale" del tutto in altri termini. @Alex pare l'abbia già intuita con la sua prima risposta...io avrei bisogno di una descrizione più dettagliata del tutto per comprendere anche il perchè di una operazione del genere.
  • Re: Funzione IIf, eval, and

    Grazie per interessamento mitici: (per non usare raga)
    La sintassi l ho controllata diverse volte e mi sembra giusto. In effetti e' piuttosto carica come funzione.
    In realtà a me serve che:
    Se il campo x e' 100 e contemporaneamente il campo y e' 16 allora mi deve dare 13200
    Se x e' 100 e contemporaneamente y e' 20 allora mi deve dare 10400
    Se x e' 50 e y e' 24 allora mi deve dare 8400
    Se x e' 50 e y e' 28 allora mi deve dare 6600
    Se x e' 50 e y e' 32 allora mi deve dare 4800
    Se x e' 25 e y e' 36 allora mi deve dare 3200
    Se x e' 25 e y.........e così via
    Mi servono almeno una decina di condizioni
  • Re: Funzione IIf, eval, and

    Ma non esiste alcun "calcolo particolare"--->funzione che giustificherebbe il terzo valore come risultato di x e y?
    Se esiste, fai prima a implementare una funzione di calcolo. E se è particolarmente complessa puoi spezzettarla in più campi di calcolo sempre dentro la query.
    Se no, ci vedrei una apposita tabella che elenca tutte le combinazioni possibili associate al terzo valore.
  • Re: Funzione IIf, eval, and

    alberto871 ha scritto:


    Grazie per interessamento mitici: (per non usare raga)
    La sintassi l ho controllata diverse volte e mi sembra giusto. In effetti e' piuttosto carica come funzione.
    In realtà a me serve che:
    Se il campo x e' 100 e contemporaneamente il campo y e' 16 allora mi deve dare 13200
    Se x e' 100 e contemporaneamente y e' 20 allora mi deve dare 10400
    Se x e' 50 e y e' 24 allora mi deve dare 8400
    Se x e' 50 e y e' 28 allora mi deve dare 6600
    Se x e' 50 e y e' 32 allora mi deve dare 4800
    Se x e' 25 e y e' 36 allora mi deve dare 3200
    Se x e' 25 e y.........e così via
    Mi servono almeno una decina di condizioni
    Ciao "coso".
    Sviluppa una Funzione quello che scrivi è semplice ed intuitivo, funzione a 2 parametri che restituisce un valore.
  • Re: Funzione IIf, eval, and

    Si Osvaldo:), il terzo valore e ' un calcolo che, per esempio, se il campo x = 50 e il campo y=24 allora mi divide il campo z per un determinato numero, se invece, per fare un altro esempio, il campo x= 100 e il campo y=16 allora mi divide sempre il campo z per un altro specifico numero
  • Re: Funzione IIf, eval, and

    @Alex ha scritto:


    Non è definito un NUMERO LIMITE, che io sappia leggendo la guida, quindi ipotizzo un errore di sintassi.
    In ogni caso concatenazioni così complesse sono il modo migliore per affondare la funzionalità esecutiva di una Query.
    A titolo informativo, segnalo che un limite per le "IIf" annidate esiste ed è 7, come riportato anche in questa discussione.
    http://www.access-programmers.co.uk/forums/showthread.php?t=142290
  • Re: Funzione IIf, eval, and

    Direi che sarebbe più chiarificatore se si leggesse da MSDN senza mettere in discussione l'autorevolezza dell'autore... pur trovando tecnicamente comprensibile il limite non ne trovo traccia, magari mi è sfuggito, nella guida.
Devi accedere o registrarti per scrivere nel forum
13 risposte