Utilizzo di iif con una queri di aggiornamento

di il
6 risposte

Utilizzo di iif con una queri di aggiornamento

Mi rivolgo a Voi in quanto principiante nell’utilizzo di access e non riesco a risolvere il seguente problema:
Ho una tabella anagrafe con i seguenti campi: nome cognome - data disattivazione – codice qualifica – status.
Io devo aggiornare il campo status con 1 se il codice qualifica è diverso da eredi e la data disattivazione non è presente. Con 88 nel caso sia cessato e quindi abbia una data di disattivazione. Con 99 nel caso in cui in codice qualifica sia presente EREDI.
Ho provato con al seguente formula ma mi dice “numero errato di argomenti specificati nell’espressione immessa”

IIf([Anagrafe].[DataDisattivazione]="NULL" Or [Anagrafe].[CodiceQualifica]<>"EREDI";"1";"";IIf([Anagrafe].[ DataDisattivazione]= "Is Not Null";"88";IIf([Anagrafe].[CodiceQualifica]="EREDI";"99")))

Grazie a chi vorrà darmi un consiglio

6 Risposte

  • Re: Utilizzo di iif con una queri di aggiornamento

    liucca ha scritto:


    ...Ho provato con al seguente formula ma mi dice “numero errato di argomenti specificati nell’espressione immessa”
    Non entro nel merito della validità della tua sceltà, ti dico solo come risolvere l'errore che ricevi.
    La sintassi della IIf è così (la suddivisione in righe e i rientri li metto io per evidenziare la struttura)
    
    IIf(
         Condizione da verificare;
         Cosa fare se Vero;
         Cosa fare se Falso
        )
    Nelle IIf nidificate spesso è la parte del "Falso" a costituire a sua volta un'ulteriore IIf
    
    IIf(
         Condizione da verificare;
         Cosa fare se Vero;
         IIf(
               Altra condizione da verificare;
               Cosa fare se vero;
               Cosa fare se falso
             )
         )
    Questo è quello che hai scritto tu, suddiviso in righe e con un po' di rientri strategici.
    
    IIf(
          [Anagrafe].[DataDisattivazione]="NULL" Or [Anagrafe].[CodiceQualifica]<>"EREDI";
          "1";
          "";
          IIf(
               [Anagrafe].[ DataDisattivazione]= "Is Not Null";
               "88";
               IIf([Anagrafe].[CodiceQualifica]="EREDI";"99")
              )
       )
    Cosa c'è che manca o di troppo?
  • Re: Utilizzo di iif con una queri di aggiornamento

    Le sintassi per controllare se un campo è Null o Not Null sono le seguenti
    IsNull([Anagrafe].[Disattivazione])=True
    IsNull([Anagrafe].[Disattivazione])=False
    e magari racchiudi queste espressioni tra parentesi perché poi hai un Or che guarda un'altra espressione.

    Quando assegni i valori 1; 88; 99, questi valori sono Numerici o Testo? Se sono numerici non devi mettere i doppi apici.
  • Re: Utilizzo di iif con una queri di aggiornamento

    Basta

    IsNull([Anagrafe].[Disattivazione])

    Not IsNull([Anagrafe].[Disattivazione])
  • Re: Utilizzo di iif con una queri di aggiornamento

    Innanzitutto grazie a Tutti per l’attenzione e il supporto.
    In particolare Philcattivocarattere ti ringrazio per la spiegazione, ho applicato il tuo consiglio e sono riuscito a far funzionare la formula,

    IIf([Anagrafe].[DataDisattivazione]="NULL" Or [Anagrafe].[CodiceQualifica]<>"EREDI";1;IIf([Anagrafe].[CodiceQualifica]="EREDI";"99";IIf([Anagrafe].[DataDisattivazione]>0;88)))

    ma solo per 2/3! Infatti nella colonna status aggiorna gli attivi con 1, aggiorna gli eredi con 99, ma non mi aggiorna i cessati con 88, quando trova una data di cessazione lascia la casella vuota e non ne capisco il motivo!

    OsvaldoLaviosa e Oregon, non ho compreso come utilizzare i vostri suggerimenti
    Allegati:
    26594_cd41efb76f7e4a9d4e3ff734733e301a.png
    26594_cd41efb76f7e4a9d4e3ff734733e301a.png
  • Re: Utilizzo di iif con una queri di aggiornamento

    Devi riuscire a comprendere la differenza tra tipi di variabili e/o tipi di Campi con i valori che possono assumere.

    Per capire un campo Testo se vuoto valge NULL che è molto differente da "NULL".
    Il primo si verifica con IsNull(nomecontrollo) come da suggerimento di Oregon, il secondo è un vero valore stringa di 4 caratteri... quindi se fai quella verifica non potrà mai funzionare a meno che il campo non contenga esattamente la scritta "NULL".

    Per il resto posso suggerirti di provare ad acquistare un libro di programmazione base e leggere sempre molto attentamente la guida in linea.
  • Re: Utilizzo di iif con una queri di aggiornamento

    Grazie per le indicazioni @Alex , seguirò il tuo consiglio
Devi accedere o registrarti per scrivere nel forum
6 risposte