IIF con "*" or is Null

di Anonimizzato14833 il
6 risposte
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

  • 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.
  • 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
  • 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]))));
  • Sedi troppo contorto...
    
    WHERE [CampoX]=Forms!NomeForm!NomeCombo OR Forms!NomeForm!NomeCombo IS NUll;
  • Grande, va! effettivamente è molto piu semplice come soluzione, la applico anche ad altri campi
  • Che fortuna, ci ho preso...
Devi accedere o registrarti per scrivere nel forum
6 risposte