Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    29

    access 2000, espressione somma

    ho un problema stupido su una creazione di query maledetta in access...

    mi serve un'espressione che sommi valori da tre campi diversi.. ma che consideri la somma valida anche se uno dei campi addendi è nullo..
    il semplice "+" non funziona...
    putroppo non posso impostare i valori di quei campi a predefinito 0.. mi serve, per altre query anche questa differenza (tra null e 0)

    potrei farlo col comando iif ma forse è troppo macchinoso... magari c'è un altro operatore o metodo(sicuramente) che non conosco.

    l'esempio è:
    sommaincriminata: [tabella1]![campo1]+[tabella1]![campo2]+[tabella1]![campo3]
    così però, se un campo è null... la somma non la fa...

    aiuto!grazie

  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    La somma di campi numerici, seppur 'null', non genera errore.
    Ho appena riprovato x sicurezza, ma è cos'ì almeno in Access 2002.
    Che versione usi?

    ... ops... è nel titolo ... non l'avevo visto!

  3. #3
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363

    Re: access 2000, espressione somma

    sommaincriminata:
    CDbl("0" & [tabella1]![campo1]) +
    CDbl("0" & [tabella1]![campo2]) +
    CDbl("0" & [tabella1]![campo3])

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    29
    Originariamente inviato da Misterxxx
    La somma di campi numerici, seppur 'null', non genera errore.
    errore no... però non mi considera la somma... mi da valore nullo anche lì

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    29

    Re: Re: access 2000, espressione somma

    Originariamente inviato da longline
    sommaincriminata:
    CDbl("0" & [tabella1]![campo1]) +
    CDbl("0" & [tabella1]![campo2]) +
    CDbl("0" & [tabella1]![campo3])
    grazie! ora provo così!! esattamente, cosa indica questo operatore? solo per imparare qualcosa almeno lo riutilizzo

  6. #6
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Il concetto è questo:
    Una stringa "0" viene concatenata con il contenuto del campo. La funzione CDbl converte il valore passato in un numero a precisione doppia (ho immaginato che ti servisse la precisione maggiore, altrimenti puoi anche usare CInt che converte in intero)
    Se il contenuto del campo è un valore numerico, la concatenazione produce una stringa tipo "0234", che viene convertito in numero senza problemi.
    Se il contenuto del campo è invece Null, la concatenazione produce un Variant fatto così: "0". Quest'ultimo, ovviamente, convertito in numero dà zero.
    In questo modo la somma può essere eseguita senza problemi.

  7. #7
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Originariamente inviato da Ruga
    errore no... però non mi considera la somma... mi da valore nullo anche lì
    Nella mia prova da il risultato esatto.

  8. #8
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Originariamente inviato da Misterxxx
    Nella mia prova da il risultato esatto.
    Anche a me ha dato Null

  9. #9
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    Originariamente inviato da longline
    Anche a me ha dato Null
    Confermo:

  10. #10
    Utente di HTML.it L'avatar di fabio309
    Registrato dal
    Oct 2002
    Messaggi
    1,918

    Re: access 2000, espressione somma

    Originariamente inviato da Ruga
    potrei farlo col comando iif ma forse è troppo macchinoso... magari c'è un altro operatore o metodo(sicuramente) che non conosco.
    ci sarebbe la funzione NZ, che però a mio parere non è un granchè
    ti consiglio di utilizzare

    sommaincriminata= iif(isnull([tabella1]![campo1]),0,[tabella1]![campo1]) + iif(isnull([tabella1]![campo2]),0,[tabella1]![campo2]) + iif(isnull([tabella1]![campo3],0,[tabella1]![campo3])

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.