IIF con "*" or is Null

di il
6 risposte

IIF con "*" or is Null

Ciao, sto facendo una query di accodamento, ma mi trovo nel punto in cui una selezione puo avere un valore o essere null

la sintassi "singola" IIF(condizione;like "*";falso) e IIF(condizione;is null;falso) funziona, ma IIF(condizione;like "*" or is null;falso) non va, mi dice che è troppo complessa
Tuttavia scrivendo like "*" or is null nel campo criterio in visualizzazione struttura funziona, quindi mi viene da dire che il problema è come scrivo la condizione "vero" ma non capisco l'errore

6 Risposte

  • Re: IIF con "*" or is Null

    Se ti dico che non ho capito quello che vuoi fare...?
    In query di accodamento, se un Valore deve essere Null devi scrivere la stringa Null, se Null è un Criterio invece è altro discorso... ma nel tuo caso non vedendo il predicato SQL non si capisce dove usi quel condizionante IIF(....) se come criterio o come valore.
  • Re: IIF con "*" or is Null

    bean_bandit ha scritto:


    IIF(condizione;like "*";falso) e IIF(condizione;is null;falso) funziona, ma IIF(condizione;like "*" or is null;falso) non va, mi dice che è troppo complessa
    Se inserisci "IIF" nel generatore di espressione e ci vai sopra con il mouse access ti regala la sintassi;
    oppure su Google se cerchi IIF sintassi ti si apre l'universo!
    Secondo te, tradotto in italiano cosa hai chiesto con quelle Iif ?
    qual'è la parte vera?...e quella falsa?
    Mi sono distratto o c'è qualcosa che non va.

    Ops ci siamo accavallati scusa Alex
  • Re: IIF con "*" or is Null

    Nella mia query di accodamento i criteri di selezione vengono letti da una maschera il cui campo puo contenere un valore oppure essere null. Nel caso di null non vuol dire che deve fare una query con criterio = null ma deve non considerare quel criterio, come cioe non ci fosse alcuna selezione

    Quindi schematizzando:

    Maschera---->valore campo = A -----> accoda i campi contenente A
    Maschera---->valore campo = Null -----> accoda Tutti i valori (A, B, C... ma anche Null)

    Per ora ho eliminato i campi null impostando valore predefinito e campo obbligatorio quindi uso questa sintassi:
    WHERE (((Elenco_Tempi.tempi)=[Maschere]![CONF000]![Tipo]) AND ((Elenco_Tempi.Opzione) Like (IIf([Maschere]![CONF000]![opzione]="Tutte","*",[Maschere]![CONF000]![opzione]))));
    Ma vorrei evitare campo obbligatorio e sostituire l'sql con una cosa tipo:
    WHERE (((Elenco_Tempi.tempi)=[Maschere]![CONF000]![Tipo]) AND ((Elenco_Tempi.Opzione) Like (IIf([Maschere]![CONF000]![opzione] is null,like "*" or is null,[Maschere]![CONF000]![opzione]))));
  • Re: IIF con "*" or is Null

    Sedi troppo contorto...
    
    WHERE [CampoX]=Forms!NomeForm!NomeCombo OR Forms!NomeForm!NomeCombo IS NUll;
  • Re: IIF con "*" or is Null

    Grande, va! effettivamente è molto piu semplice come soluzione, la applico anche ad altri campi
  • Re: IIF con "*" or is Null

    Che fortuna, ci ho preso...
Devi accedere o registrarti per scrivere nel forum
6 risposte