Sommare e visualizzare un valore "Null" ad un valore reale

di il
13 risposte

Sommare e visualizzare un valore "Null" ad un valore reale

Sono nuovamente a sbattere con la testa sul muro.
Con query, estraggo dei valori filtrati da una tabella e di questi (con DSUM( ), visualizzo nelle tre sottomaschere di una stessa maschera i loro subtotali .
Infine sul fondo della maschera visualizzo un Totale generale che è la somma di tutti i parziali soprastanti (sommatoria del contenuto delle caselle di testo).
Bene. Se tutti i subtotali sono reali il totale generale è corretto, ma se solo uno dei risultati della query mi da Null (nel senso che non trova nessun record), allora la cella del parziale la trovo vuota e in quella del Totale mi ritrovo #Tipo vanificando così tutto il lavoro.

Dirò che ho provato un pò dappertutto a seminare formatnumber(..) ... round(..)... Nz(..) val(..).
Non sarei ricorso a voi se non avessi provato tutte le strade di mia conoscenza.

Siete la mia ultima spiaggia.
Probabilmente sto trascurando un dettaglio semplice, ma per chi non sa, ogni granello di sabbia è un macigno.
Posso sperare in un vostro consiglio illuminante?

Grazie
antonio cuomo

13 Risposte

  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Il SubTotale non DEVE dare NULL... deve dare [0] essendo un Numero...!
    Quindi devi correggere il problema a monte.
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Alex, puoi darmi una direzione di indagine?, io non so più che pesci pigliare.

    Una cosa è certa: quando nella tabella non ci sono spese riferite al capitolo cercate, la query è completamente vuota anche là dove come dici giustamente tu, dovrebbe esserci uno 0 almeno per il subtotale.
    E ciò pur facendo la forzatura con Nz() .

    Quello che notavo (non so se è interessante), nelle proprietà del subtotale SubAcapitale, non mi consente di scegliere fra le diverse possibilità di formattazione (fisso, valuta, standard, ecc). C'è scritto solo "Fisso".

    La query incriminata (probabile):
    SELECT Sum(Movimenti.spesa) AS speAcap, Movimenti.A_capitale, DSum("[spesa]","[Movimenti]","[A_capitale]='SI'") AS TotAcap
    FROM Movimenti GROUP BY Movimenti.A_capitale, DSum("[spesa]","[Movimenti]","[A_capitale]='SI'") HAVING (((Movimenti.A_capitale)="SI");

    antonio
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Non riesco a seguire il discorso a livello di formule e espressioni. So soltanto che se si imposta a monte (sia in tabella sia in maschera) un Valore predefinito: 0 per i campi numerici o valuta, tutto il resto scorre da solo.
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Non so cosa rispondere Osvaldo. Anche per me era così, ma probabilmente ci deve essere qualcosa sotto di invisibile.
    Non sarebbe da escludere di eliminare completamente prima la query e poi anche la maschera se occorre, e vedere se cambia qualcosa.

    ti farò sapere
    antonio
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Ciao Antonio,
    provo ad intervenire spero in modo efficace....
    l'utilizzo di NZ dovrebbe essere proficuo ma non ci mostri come lo hai utilizzato.

    prova in questo modo :

    NZ(dsum("campo", "domini","Criterio");0)

    le funzioni sui domini non sono il massimo generalemente parlando e utilizzate cosi nella query agiscono su ogni record del recordset e rallentano molto le performaces....

    facci sapere.
    ciao.
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Ciao Goku,

    in verità è proprio così che lo sto utilizzando, ma il risultato è sempre lo stesso.
    Nella casella di testo non appare mai 0,00 come invece succede nella submaschera vicina per una stessa situazione di ricerca.
    Addirittura quando sommo i due subtotali nella maschera che contiene le due SUBMaschere, sono stato costretto a scrivere
    =Val([SM_Patrimonio]![Testo6])+Val([SM_Spe_CAP]![Testo17]) pur di vedere una somma decente, altrimenti mi affianca i ridultati parziali come se fossero due stringhe e ciò anche semplicemente con il segno + in mezzo. Robe turche.
    Di solito non mi piace usare questo tipo di violenza sui dati, ma quando ce vò, ce vò.
    In tutti i casi quando in tabella non trova nessun record che soddisfa la condizione, la query non mi restituisce nulla e il totale generale (per intenderci A+B) va in errore mostrando #Tipo?
    Non è bello farsi trattare come un principiante dal SW, ma forse bisogna riconoscere che lo sono.
    ciao Goku
    antonio
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Ciao,
    trattandosi già di valori numerici, sto riferendomi ai tuoi subtotali, non è necessario l'utilizzo della funzione Val.
    sei certo che i dati sono numerici ?
    da quanto affermi qui :

    antocuomo ha scritto:


    pur di vedere una somma decente, altrimenti mi affianca i risultati parziali come se fossero due stringhe e ciò anche semplicemente con il segno + in mezzo
    sembra che stiamo invece parlando di stringhe e il "+" utilizzato come mezzo di concatenazione al posto della "&" propaga il null...ma questo è un altro discorso...
    consiglio di assegnare nomi maggiormente significativi ai controlli nelle maschere...testo16 e testo17 non lo sono...
    ciao.
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    No, Goku, ho provato ad assegnare nomi alle caselle di testo al posto degli identificativi originali, che io credevo più distinguibili per Access, ma nulla di fatto.
    In particolare per una sola delle due SM ovvero una sola delle due Query, la DSUM mi restituisce un valore stringa pur trattandosi di campi numerici sia nella Tabella di origine, da cui la variabile-contenitore di DSUM suppongo debba prendere per default le caratteristiche, sia la casella di testo di destinazione in cui ripongo graficamente il risultato.
    Tra le altre cose, ho anche riscritto a mano sia la query che la SM daccapo. Nulla.
    Quello che mi ha dato un risultato soddisfacente è stato quello di sommare nel Totale Generale (dove faccio la somma per intenderci delle due caselle (di cui la prima funziona alla grande anche se non trova dati in tabella) , il contenuto della casella di testo della prima SM (come è giusto che si faccia), con la DSUM così come scritta nella seconda SM richiamata direttamente, e cioè:

    =[SM_Patrimonio]![Testo6]+Nz(DSum("[spesa]";"[Movimenti]";"[A_capitale]='SI'");0)

    Questo mi da sempre risultato coerente per qualunque stato dei dati nelle tabelle.
    Insomma ci sarà qualcosa di arcano che solo Access può sapere.
    Volendo potrei mandarti il mio lavoro ad un tuo indirizzo di posta per poterlo studiare, ammesso che la cosa ti possa intrigare più di tanto, ma non vorrei coinvolgerti fino a questo punto.
    E' già tanto che mi hai seguito fino a questo punto e per questo ti ringrazio.
    ciao antonio
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Prima del DSUM ci sarebbe da capire perchè nel campo SPESA possa essere presente un valore NULL...!

    I campi su cui si fanno operazioni Matematiche non devono essere valorizzati a NULL, motivo per cui si deve imporre il DefaultValue = 0 e ZERO deve essere...!!!!
    Se sommi 0 con 0, ottieni ZERO... se invece il dato non viene valorizzato e rimane un NULL il dato non è più un NUMERICO ma un VARIANT e succede quello che hai scoperto...!

    Quindi ora hai 2 opzioni... Query di AGGIORNAMENTO, sostituisci a NULL il valore giusto che deve avere, vale a dire 0, oppure forzi il DataType prima del DSUM del campo Spesa a CCUR... per le valute...
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    No Alex, il campo spesa è valido con valori numerici in tutta la tabella.
    Ho anche fatto una conversione con ccur delle formule ma nulla si è spostato.
    Fa nulla
    Ho rabberciato in qualche modo e il risultato è conforme.
    Se si ripresenta il caso lo affronteremo con maggiore vigorìa.

    Alla prox Alex
    Ciao
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Ciao,
    ri-nominare i controlli nelle forms in modo significativo è un aiuto per te...ora sai esattamente a che cosa si riferiscono tra due settimane probabilmente no...ad Access poco interessa questo aspetto.
    La funzione NZ la devi applicare non nelle textbox, ma nella query per ottenere un risultato migliorativo.

    Se vuoi prova a pubblicare il DB eliminando i dati sensibili da qualche parte nel web postando il link.
    un saluto.
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    Mi dispiace Goku ma pubblicare qualunque cosa, non è cosa mia; non saprei da dove cominciare.
    E' un'operazione mai fatta.

    Saluti
  • Re: Sommare e visualizzare un valore "Null" ad un valore reale

    antocuomo ha scritto:


    No Alex, il campo spesa è valido con valori numerici in tutta la tabella.
    Ho anche fatto una conversione con ccur delle formule ma nulla si è spostato.
    Fa nulla
    Ho rabberciato in qualche modo e il risultato è conforme.
    Se si ripresenta il caso lo affronteremo con maggiore vigorìa.

    Alla prox Alex
    Ciao
    Guarda fai fatica a convincermi che è come dici, è tecnicamente IMPOSSIBILE che la somma di valori a ZERO, dia un valore NULLO.
    Un campo Numerico, non contempla il valore NULL, quindi a meno di non aver inserito alcun valore(il classico Default Value=0) se hai valorizzato lo Zero, la sommatoria non può dare valori come dici.
    Evidentemente l'interprete per qualche motivo, rielabora il DataType in Variant proprio perchè si trova un NULL.

    Per il resto... non insisto.
Devi accedere o registrarti per scrivere nel forum
13 risposte