bean_bandit ha scritto:
Se gia potessi fare un "NZ(tutti i campi)" sarebbe utile...
Una cosa del genere non esiste e non so se vale la pena "costruirla" considerando che con molta probabilità sarebbero presente anche campi non numerici o, se numerici, non necessariamente da inserire nella somma (penso alla presenza di un ID univoco numerico).
bean_bandit ha scritto:
... In realta le funzioni saranno diverse, la prima contiene 6 campi, la seconda (devo ancora vedere) dovrebbe contenerne almeno 10.
Considerato che una cosa del tipo "Somma tutti i campi" non si può fare (vedi sopra), in un modo o nell'altro i campi da sommare dovranno sempre essere elencati.
Opzione 1: impostare tutti i campi numerici già a livello di tabella con Richiesto = Sì (oltre a valore predefinito 0), così il problema del Null sparisce fin dall'origine. Ovviamente prima è necessario agire con query di update per valorizzare tutti i campi attualmente a Null.
Opzione 2: creare una funzione con un ParamArray, svincolandosi dal numero di campi e demandando alla funzione la verifica del Null.
Una cosa del tipo
Public Function SommaCampi(ParamArray varItems() As Variant) As Integer
Dim intSomma As Integer
Dim varItem As Variant
For Each varItem In varItems
intSomma = intSomma + CInt(Nz(varItem))
Next varItem
SommaCampi = intSomma
End Function
E' tutto fatto per valori Integer, anche il risultato della funzione. Da valutare se cambiare in Long.
L'unica differenza, all'interno della query, consiste nel potersi dimenticare di Nz quando si sommano i vari campi.
Invece di scrivere
CampoSomma=Nz([Campo1]; 0) + Nz([Campo2]; 0) + ... + Nz([CampoN], 0)
sarà "solo"
CampoSomma=SommaCampi([Campo1], [Campo2], ... , [CampoN])
Da sottoporre all'attenzione di altri utenti del forum perché non l'ho mai vista usata da nessuna parte quindi potrebbe esserci di meglio, in giro.