Newsgroup: it.comp.appl.access
Titolo: AIUTO! (per favore)

In un database ho due query di selezione: Q1 e Q2.
La prima di queste estrae due campi dalla tabella T1. Il campo QA mi serve
per selezionare dalla tabella T1 i record che mi interessano, richiedendo un
parametro all'utente ("[dammi....]"); tali record vengono "raggruppati". Il
campo QB mi serve per sommare tra loro dei valori numerici.
Il risultato della query Q1, quindi, è una tabella con due colonne e una
sola riga: in QA vi è il valore del parametro immesso dall'utente, in QB un
valore numerico che corrisponde alla somma dei valori che cercavo.
Quest'ultimo valore può assumere numeri interi oppure nessun valore nel caso
non vengano trovati record corrispondenti al parametro immesso dall'utente.
La query Q2 fa le stesse cose di Q1 solo che prende i dati da un'altra
tabella.
A questo punto, volendo sommare tra loro i campi QB della tabella Q1 e QB
della tabella Q2, come faccio?
Ho pensato di creare una nuova query (la query Q3, sulla quale poi costruirò
una maschera) che, tramite un'espressione, restituisca la somma dei due
campi delle due query, ma la cosa funziona solo se in entrambi vi è
contenuto un valore numerico. Infatti, se una delle due query non identifica
nessun record corrispondente al parametro immesso dall'utente, non
resituisce a sua volta nessun record, e il risultato della somma tra un
valore numerico e un valore nullo è (purtroppo!) un valore nullo.
Come faccio a fare in modo di trasformare un valore nullo in un valore pari
a zero, in modo da poterlo sommare? Ho provato inserendo un'espressione
nella query Q3 del tipo: Nz([Q1].[QB])+Nz([Q2].[QB]), sperando così di
riuscire a sommare il tutto tranquillamente, ma il risultato non cambia: i
valori numerici li somma tranquillamente, mentre se il campo QB di Q1 oppure
il campo QB di Q2 contiene un valore nullo, la somma restituisce un valore
nullo.
Per cortesia, tengo a precisare che questa somma vorrei farla usando solo
query, maschere, tabelle o macro, e non usando il VBA (per motivi lunghi da
spiegare: prendetela così!).
Ringrazio anticipatamente coloro che sapranno aiutarmi!
--
Cristiano Bobbo

 spiegare: prendetela cosě!).
Mi spiace ma ci sono cose che o sono possibili solo col vba o sono molto piů
semplici col vba. Io non ci sono riuscito con le query (e magari c'č il
modo), ma c'č una bellissima funzione che si chiama DSum che ti farebbe
quello che vuoi
Ti permetterebbe di fare la tua query e, se null, avere poi il valore 0, da
sommare all'altra applicazione della dsum sull'altra tabella. il tutto poi
lo puoi schiaffare in un controllo di una maschera...
ma certo, se questi motivi sono proprio cosě lunghi, allora...prendiamocela
un po' cosě...
Antonio

 ha scritto nel messaggio
news:9i5h5n$7kk$1...@usenet.inwind.it...

Prova così.
Se le due tabelle si chiamano Tabella1 e Tabella2 ed hanno la seguente
struttura:
ID                Contatore e chiave primaria
Parametro    Numerico
Importo        Numerico
Creati una query unione chiamata Q1 che ha il seguente codice SQL:
SELECT Tabella1.Parametro As QA, Sum(Tabella1.Importo) AS QB
FROM Tabella1
WHERE (((Tabella1.Parametro)=[Parametro:]))
GROUP BY Tabella1.Parametro
UNION SELECT Tabella2.Parametro As QA, Sum(Tabella2.Importo) AS QB
FROM Tabella2
WHERE (((Tabella2.Parametro)=[Parametro:]))
GROUP BY Tabella2.Parametro;
Creati quindi, basandola su Q1, la query che ti darà il risultato e che ha
il seguente codice SQL:
SELECT 
Q1.QA
, Sum(Q1.QB) AS QB
FROM Q1
GROUP BY 
Q1.QA
;
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 GROUP BY 
Q1.QA
;
Robè, l'hai provata questa?
Io ho fatto una cosa analoga, ma se c'è un null, non da risultato...penso...
Antonio

 ha scritto nel messaggio
news:JUM17.9993$eB4.3...@news.infostrada.it...

Si l'ho provata e funziona. D'altra parte, se su una delle tabelle non ci
sono record che soddisfano i criteri di selezione, nelle query di
raggruppamento contenute nella query unione non vengono proprio create le
relative righe (visto il predicato WHERE) e quindi non esistono campi con
valore Null, per cui non può esistere la possibilità di sommare campi che
contengono valori Null.
Per scrupolo ho provato a lasciare alcuni campi Importo a Null nelle
tabelle, e non ho avuto problemi neppure in questo caso.
Resta il fatto che sono d'accordo con te che il modo migliore per risolvere
il problema è usare delle funzioni DSum, ma per i "motivi lunghi da
spiegare" di Cristiano....
Ciao, Roberto