SINTASSI DELLE FORMULE IIf

di il
13 risposte

SINTASSI DELLE FORMULE IIf

Buongiorno mi chiamo ambra e sono nuova del forum . Ho deciso di ricorrere a voi perché ho dei problemi su Access 2010 . Innanzitutto vi dico che fino a tre mesi fa io non sapevo fare assolutamente nulla su Access. Poi per la necessità di venire assunta in uno studio di consulenza dove richiedevano poi per la necessità mi veniva assunta in uno studio di consulenza dove richiedevano di Saper usare appunto Access, Ho imparato da autodidatta.
Sono riuscito ad apportare le modifiche che fino adesso mi hanno richiesto di apportare su un database già esistente. Ma adesso mi trovo particolarmente in difficoltà nel modificare una formula IIf, poiché nessuno è mai riuscito a spiegarmi qual’e’ la sintassi corretta da utilizzare per fare in modo che la formula funzioni. Mi spiego meglio ....l’uso delle parentesi quadre, del !, del ;, delle “”, ecc ecc. non so cosa significa ne come usarli per impostare la formula. Nello specifico la formula che devo modificare dice che a se il campo DELTA della query che è <>””;”SODDISFACENTE”. Che vuol dire??? Mi aiutate?

13 Risposte

  • Re: SINTASSI DELLE FORMULE IIf

    Ambra1987 ha scritto:


    ... se il campo DELTA della query che è <>””;”SODDISFACENTE”. Che vuol dire?
    Per le cose di base c'è la guida in linea oltre ai manuali classici. Una ricerca sul web ti avrebbe portato, ad esempio, qui
    Funzione IIf
  • Re: SINTASSI DELLE FORMULE IIf

    Le quadre racchiudono i nome della tabella e del campo separate dal punto esclamativo.
    Il punto e virgola separa la condizione VERO dalla condizione FALSO.
  • Re: SINTASSI DELLE FORMULE IIf

    Spadino ha scritto:


    Le quadre racchiudono i nome della tabella e del campo separate dal punto esclamativo.
    Il punto e virgola separa la condizione VERO dalla condizione FALSO.
    Non è proprio così, quello che dici è proprio sbagliato per 2 motivi.
    Nella Funzione IIF il punto ESCLAMATIVO non si mette, MAI se lo usi dovrebbe suonare un CAMPANELLO DI ALLARME...!
    La sintassi con il Punto Esclamativo si usa nel VBA, oppure in SQL per far riferimento ad Oggetti... in Risoluzione IMPLICITA... nella IIF non è il caso.

    L'errore più evidente invece che hai esposto è che l'uso delle Parentesi quadre NON E' INDISPENSABILE, e non fa quello che hai definito, ma è solo precauzionale per il semplice fatto che gli INESPERTI chiamano Campi/Controlli/Tabelle e Maschere con Nomi assurdi che VIOLANO le regole del buonsenso e della programmazione, e le QUADRE forzano il sistema a NON interpretare carattri speciali.
  • Re: SINTASSI DELLE FORMULE IIf

    @Alex ha scritto:


    Spadino ha scritto:


    Le quadre racchiudono i nome della tabella e del campo separate dal punto esclamativo.
    Il punto e virgola separa la condizione VERO dalla condizione FALSO.
    Non è proprio così, quello che dici è proprio sbagliato per 2 motivi.
    Nella Funzione IIF il punto ESCLAMATIVO non si mette, MAI se lo usi dovrebbe suonare un CAMPANELLO DI ALLARME...!
    La sintassi con il Punto Esclamativo si usa nel VBA, oppure in SQL per far riferimento ad Oggetti... in Risoluzione IMPLICITA... nella IIF non è il caso.

    L'errore più evidente invece che hai esposto è che l'uso delle Parentesi quadre NON E' INDISPENSABILE, e non fa quello che hai definito, ma è solo precauzionale per il semplice fatto che gli INESPERTI chiamano Campi/Controlli/Tabelle e Maschere con Nomi assurdi che VIOLANO le regole del buonsenso e della programmazione, e le QUADRE forzano il sistema a NON interpretare carattri speciali.
    Sbaglio o usando il Generatore di Espressioni vengono esposte tanto le quadre quanto il punto esclamativo?
  • Re: SINTASSI DELLE FORMULE IIf

    Ma dipende a cosa fai riferimento... Non è che basta vedere parentesi e punto esclamativo e diventa la regola...

    Il primo parametro è la condizione, se la condizione si riferisce ad un Oggetto il puntoesclamativo le quadre possono esserci o meno a seconda di dove si trova e di che riferimento...
    Hanno 2 significati diversi
    Il puntoesclamativo definisce il rapporto gerarchico tra oggetto e oggetto contenitore mentre le quadre come ti ho già detto sono una sintassi precauzionale.
    
    IIF(Me.Visible=True, "Visibile","Nascosta")
    Questa sintassi può essere scritta anche così:
    
    IIF(Forms!NomeForm.Visible=True, "Visibile","Nascosta")
    Oppure
    
    IIF(Forms![NomeForm].Visible=True, "Visibile","Nascosta")
    Ecc...
  • Re: SINTASSI DELLE FORMULE IIf

    Forse faccio prima ad esporvi praticamente il problema.....forse qualcuno può risolvermelo!
    Allora....ho una query denominata ANALISI 3 che è collegata a 3 tabelle: ANALISI QUERY 2 - ANAGRAFICA CLIENTI - ANAGRAFICA FORNITORI.
    Il mio problema è che da questa query vengono presi i dati che vengono poi riportati nel REPORT delle Analisi che facciamo.
    Il problema è il campo della Query Analisi 3 denominati NEW LIMITE MINIMO e NEW LIMITE MASSIMO.
    Le formule IIf attualmente presenti sono le seguenti:

    NEW LIMITE MINIMO: IIf([LIMITE MINIMO]=0;"ASSENTE";[LIMITE MINIMO])

    e

    NEW LIMITE MASSIMO: IIf([LIMITE MASSIMO]=0;"ASSENTE";[LIMITE MASSIMO])

    A sua volta abbiamo che:

    LIMITE MINIMO: IIf([TABELLA CAPITOLI]![ID]=2;[LIMITE m IGIENE DI PROCESSO];IIf([TABELLA CAPITOLI]![ID]=1;[LIMITE m CRITERI SICUREZZA ALIM];IIf([TABELLA CAPITOLI]![ID]=3;[LIMITE m CRITERI SICUREZZA LEGIONELLA];0)))

    e

    LIMITE MASSIMO: IIf([TABELLA CAPITOLI]![ID]=2;[LIMITE M IGIENE DI PROCESSO];IIf([TABELLA CAPITOLI]![ID]=1;[LIMITE M CRITERI SICUREZZA ALIM];IIf([TABELLA CAPITOLI]![ID]=3;[LIMITE M CRITERI SICUREZZA LEGIONELLA];0)))


    Il problema è che ho provato ad aggiungere a queste due formule anche la dicitura IIf([TABELLA CAPITOLI]![ID]=4;[LIMITE M IGIENE DI PROCESSO] ma in nessuna maniera mi legge questi benedetti limiti minore e maggiore poi nel Report! HO AGGIORNATO tutte le tabelle, ho riformulato la formula IIf ma nel report questi limiti non me li legge.
    Da cosa può dipendere? come posso risolvere?
    AIUTOOOOOOOOO
  • Re: SINTASSI DELLE FORMULE IIf

    Ambra1987 ha scritto:


    ...Il problema è che ho provato ad aggiungere a queste due formule anche la dicitura IIf([TABELLA CAPITOLI]![ID]=4;[LIMITE M IGIENE DI PROCESSO] ma in nessuna maniera mi legge questi benedetti limiti minore e maggiore poi nel Report!
    Scrivi come hai integrato quelle due IIf. (non entro nel merito dell'uso di tutte quelle IIf nidificate, non voglio pensarci). Ricordati di usare i tag code, altrimenti è ancora più difficile leggere.
  • Re: SINTASSI DELLE FORMULE IIf

    Io penso che quando nidifichi troppe IIf (io non andrei mai oltre i 3 livelli nidificati), sarebbe meglio mettere mano a un po' di codice VBA.
    Poi...temo che non è detto che devi ragionare solo con IIf (o eventuale If in VBA...), ma occorre guardare l'INTERO contesto in cui stai lavorando.
  • Re: SINTASSI DELLE FORMULE IIf

    Scusa ma la query, prima delle modifiche, funzionava ?
    Perchè la tabella [TABELLA CAPITOLI] non esiste fra quelle che hai elencato.
  • Re: SINTASSI DELLE FORMULE IIf

    Si la query funzionava. La tabella capitoli non esiste in questa query perché è bella ANALISI QUERY 2, che è compresa/collegata a questa ANALISI QUERY 3. Comunque io, alle IIf di prima, ho solo tolto lo zero finale sostituendolo con IIf[(TABELLA CAPITOLI)!(ID)=4;[LIMITE M IGIENE DI PROCESSO])))). Ma perché non funziona? Forse perché anche l’ID 4 pesca dal campo LIMITE M IGIENE DI PROCESSO come l’ID 2? Ho provato anche a sostituire la formula inizialmente con IIF[(TABELLA CAPITOLI)!(ID)=2 Or (TABELLA CAPITOLI)!(ID)=4;[LIMITE M IGIENE DI PROCESSO] ma me la prende la formula ma non funziona! Che fareste?
  • Re: SINTASSI DELLE FORMULE IIf

    Ambra1987 ha scritto:


    Si la query funzionava. ... prende la formula ma non funziona!
    Posta la formula completa, seppur non funzionante. Come facciamo a vedere dov'è l'errore vero? Magari non è lì ma non possiamo saperlo se non vediamo cosa hai scritto, non come l'hai pensato.
  • Re: SINTASSI DELLE FORMULE IIf

    NEW LIMITE MASSIMO:IIf([TABELLA CAPITOLI]![ID]=2;[LIMITE M IGIENE DI PROCESSO];IIf([TABELLA CAPITOLI]![ID]=1;[LIMITE M CRITERI SICUREZZA ALIM];IIf([TABELLA CAPITOLI]![ID]=3;[LIMITE M CRITERI SICUREZZA LEGIONELLA];IIf([TABELLA CAPITOLI]![ID]=4;[LIMITE M IGIENE DI PROCESSO])))) ecco quello che ho scritto io
  • Re: SINTASSI DELLE FORMULE IIf

    Versione funzionante, scritta con i rientri per capire meglio condizione da verificare, parte vera e parte falsa
    IIf(
    	[TABELLA CAPITOLI]![ID]=2;
    	[LIMITE M IGIENE DI PROCESSO];
    	IIf(
    		[TABELLA CAPITOLI]![ID]=1;
    		[LIMITE M CRITERI SICUREZZA ALIM];
    		IIf(
    			[TABELLA CAPITOLI]![ID]=3;
    			[LIMITE M CRITERI SICUREZZA LEGIONELLA];
    			0
    			)
    		)
    	)
    Versione NON funzionante
    IIf(
    	[TABELLA CAPITOLI]![ID]=2;
    	[LIMITE M IGIENE DI PROCESSO];
    	IIf(
    		[TABELLA CAPITOLI]![ID]=1;
    		[LIMITE M CRITERI SICUREZZA ALIM];
    		IIf(
    			[TABELLA CAPITOLI]![ID]=3;
    			[LIMITE M CRITERI SICUREZZA LEGIONELLA];
    			IIf(
    				[TABELLA CAPITOLI]![ID]=4;
    				[LIMITE M IGIENE DI PROCESSO]
    				)
    			)
    		)
    	)
    Come vedi ogni IIf deve essere costituita da 3 righe e nel tuo caso la parte "falsa" è spesso costituita da un'altra IIf. Guarda la più interna, quando funzionava e quando non funziona. Cosa manca?
Devi accedere o registrarti per scrivere nel forum
13 risposte