Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [SQL Access ] Valore NULL che altera il rislutato della Somma di più campi.

    Ho una Tabella (Tbl_Anagrafica_Immobili) formata da 4 Campi:nome, NCamereSingole,NCamereDoppie,NCamereMatrim, questi ultimi 3 sono di tipo numerico.

    Se provo ad eseguire la seguente query:
    codice:
    SELECT nome, (NCamereSingole+NCamereDoppie+NCamereMatrim) FROM Tbl_Anagrafica_Immobili
    mi restituisce un risultato numerico corretto solo se in nessuno dei 3 campi è presente il valore NULL altrimeni mi restituisce NULL.

    Es1: 1+2+0 =3
    Es2: 1+2+Null = Null

    Come posso modificare la query al fine di sostituire il Valore '0' con il valore 'Null' prima di fare la somma?

    Grazie

  2. #2
    se metti un WHERE che controlla che non siano nulli?
    DYNAMIC+ [ E-mail ]

    Secondo me non si può fare!

  3. #3
    Credo che non servirebbe a niente, o forse non capisco come dovrei impostarla?!?

    Non deve essere eseguita una selezione ma un sostituizione. Ho appena trovato nella quida in linea di Access la seguente soluzione:

    In presenza di campi che contengono valori Null, è possibile creare un'espressione che converte i valori Null a zero. È possibile eseguire questa operazione se si desidera includere i record che contengono valori Null nel calcolo di una funzione

    codice:
    SELECT nome, (Nz([NCamereSingole],0)+Nz([NCamereDoppie],0)+Nz([NCamereMatrim],0)) AS Espr1
    FROM Tbl_Anagrafica_Immobili
    La query funziona se la lancio direttamente da ACCESS ma se ho accesso al DB via ODBC e tendo di eseguire la stessa query mi da errore di sintassi

  4. #4
    ah ho capito... secondo me sono le parentesi quadre...

    codice:
    SELECT nome, (Nz(NCamereSingole) + Nz(NCamereDoppie) + Nz(NCamereMatrim)) AS camere
    FROM Tbl_Anagrafica_Immobili;
    DYNAMIC+ [ E-mail ]

    Secondo me non si può fare!

  5. #5
    alternativamente puoi usare...

    codice:
    SELECT nome, (IIf(IsNull(NCamereSingole), 0, NCamereSingole) + IIf(IsNull(NCamereDoppie), 0, NCamereDoppie) + IIf(IsNull(NCamereMatrim), 0, NCamereMatrim)) AS camere
    FROM Tbl_Anagrafica_Immobili;
    DYNAMIC+ [ E-mail ]

    Secondo me non si può fare!

  6. #6
    Questa soluzione:
    codice:
    SELECT nome, (Nz(NCamereSingole) + Nz(NCamereDoppie) + Nz(NCamereMatrim)) AS camere
    FROM Tbl_Anagrafica_Immobili;
    Non funziona se ci si connette al DB via ODBC ma funziona se la si lancia direttamente dall'autocomposizione query ACCESS

    Questa invece:
    codice:
    SELECT nome, (IIf(IsNull(NCamereSingole), 0, NCamereSingole) + IIf(IsNull(NCamereDoppie), 0, NCamereDoppie) + IIf(IsNull(NCamereMatrim), 0, NCamereMatrim)) AS camere
    FROM Tbl_Anagrafica_Immobili;
    funziona benissimo

    Ma francamente non l'ho capita. Ho sempre usato nella programmazione VB6 il costrutto "IIF(condizione,vero,falso)" ma non immaginavo nemmeno lontanamente che si potesse scrivere direttamente nella Query Com'è possibile?!?

  7. #7
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    La IIF non è necessaria, basta la funzione ISNULL; come secondo parametro il valore da mettere in caso di NULL:
    IsNull(NCamereSingole, 0)

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  8. #8
    No biste a me così non finzia:

    codice:
    SELECT nome,   IsNull(NCamereSingole, 0)+ IsNull(NCamereDoppie, 0) + IsNull(NCamereMatrim, 0)
    FROM Tbl_Anagrafica_Immobili;

    Ecco il risultato:
    Numero errato di argomenti usati con la funzione nell'espressione della query 'IsNull(NCamereSingole, 0)'.

  9. #9
    Originariamente inviato da biste
    La IIF non è necessaria, basta la funzione ISNULL; come secondo parametro il valore da mettere in caso di NULL:
    IsNull(NCamereSingole, 0)

    HTH

    credo che ti stia condendendo con la funziona "NZ"
    DYNAMIC+ [ E-mail ]

    Secondo me non si può fare!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.