Newsgroup: it.comp.appl.access
Titolo: Sottrazione ta due tabelle

Buon giorno a tutto il NG, espongo il mio problema:
3 Tabelle . 1^ TblArticolo, 2^ TblCarico, 3^ TblScarico.
le tabelle TblCarico e TblScarico sono relazionate a TblArticolo
attraverso il Campo CodArt (chiave primaria, Testo)
ciò che vorrei e creare una query che mi dia la giacenza , cioè la
differenza tra la somma del campo TblCarico.Quantita e
TblScarico.Quantita, dove l'articolo corrisponde all'Id selezionato.
ho provato con la seguente query ma mi da risultati sballati :
SELECT TblArticoli.CodArt, Sum(TblCarico.Quantita) AS
TblCarico_Quantita, Sum(TblScarico.Quantita) AS TblScarico_Quantita,
Sum([TblCarico]![Quantita])-Sum([TblScarico]![Quantita]) AS Giacenza
FROM (TblArticoli LEFT JOIN TblCarico ON TblArticoli.CodArt =
TblCarico.CodArt) LEFT JOIN TblScarico ON TblArticoli.CodArt =
TblScarico.CodArt
GROUP BY TblArticoli.CodArt
HAVING (((TblArticoli.CodArt)=[Digita Codice articolo]));
mi date una mano per favore? ho anche cercato tra i post ed ho letto
le soluzioni di Cinzia e di Giorgo Racati ma ahimè non riesco a farle
funzionare in quanto c'e' , nel mio caso, una terza tabella e non due
come nel post che ho letto.
Grazie
Diego

Un modo potrebbe essere il seguente.
Ti crei una vista o una query chiamata CarichiScarichi
CREATE VIEW CARICHISCARICHI AS
SELECT codArt, quantita
FROM TblCarico
UNION ALL
Select CodARt, Quantita*-1
FROM TblScarico
poi
Crei un'altra vista o query e la chiami GIACENZE
SELECT codARt,SUM(Quantita)
FROM CARICHISCARICHI
GROUP BY CodArt
Successivamente utilizzerai GIACENZE in join con TblArticoli per
ottenere dati caratteristici propri degli articoli.
Ciao


grazie Mario ma credo di avere risolto in questo modo:
SELECT TblArticoli.CodArt,
Val(Nz(DSum("Quantita","TblCarico","CodArt=" & Chr$(34) &
[TblArticoli.CodArt] & Chr$(34)))) AS TotaleCarico,
Val(Nz(DSum("Quantita","TblScarico","CodArt=" & Chr$(34) &
[TblArticoli.CodArt] & Chr$(34)))) AS TotaleScarico, [TotaleCarico]-
[TotaleScarico] AS Giacenza
FROM TblArticoli
WHERE (((TblArticoli.CodArt)=[Digita]));
mi pare che funzioni, la soluzione l'ho ricavata spulciando tra i post
in particolare quello di Roberto da casa, che ringrazio , nonostante
non sia io la persona  cui era rivolto il post.
illink è il seguente, per chi volesse visionarlo:
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/1e8752582a6c377d/397bdb1446000e61?lnk=gst&q=calcolare+giacenza&rnum=16&hl=it#397bdb1446000e61
Saluti
Diego

mi correggo: non appena la uso sul'editor VBA mi da una serie di
errori del tipo ; mi comincia a segnalare i doppi apicetti che
contradistinguono i campi delle tabelle ("Quantita","TblCarico",
"CodArt") non appena li tolgo mi da un'altro messaggio, non appena li
lascio ed aggiungo le & invece poi mi dice che è impossibile trovare
il campo : '|', ma dove sbaglio? io non faccio altro che fare un copia
ed incolla, perchè sull'editor Sql mi funziona a perfezione e sul Vba
no?
La Query è questa qui: SELECT TblArticoli.CodArt,
Val(Nz(DSum("Quantita","TblCarico","CodArt=" & Chr$(34) &
[TblArticoli.CodArt] & Chr$(34)))) AS TotaleCarico,
Val(Nz(DSum("Quantita","TblScarico","CodArt=" & Chr$(34) &
[TblArticoli.CodArt] & Chr$(34)))) AS TotaleScarico, [TotaleCarico]-
[TotaleScarico] AS Giacenza
FROM TblArticoli
WHERE (((TblArticoli.CodArt)='" & Me.Elenco0.Column(0) & "' ));
Dove sbaglio per favore aiutatemi
Grazie
Diego

 ha scritto nel messaggio
news:1185531006.5...@q75g2000hsh.googlegroups.com...





Ciao Diego,
visto che vuoi il risultato di un solo articolo, puoi fare così
----
SELECT TblArticoli.CodArt,
(SELECT SUM(Quantita) FROM TblCarico
 WHERE TblCarico.CodArt=TblArticoli.CodArt) AS TotCarico,
(SELECT SUM(Quantita) FROM TblScarico
 WHERE TblScarico.CodArt=TblArticoli.CodArt) AS TotScarico,
Nz(TotCarico,0)-Nz(TotScarico,0) AS Esistenza
FROM TblArticoli
WHERE (((TblArticoli.CodArt)=[Digita Codice articolo]));
----
con un solo prodotto è performante, se al contrario, l'esigenza è quella di 
avere la giacenza di più articoli allora bisogna percorrere un'altra strada.
Ciao
--
Giorgio Rancati
[Office Access MVP] 

Grazie Giorgio era prorpio quello che cercavo, funziona alla grande.
Ti ringrazio tantissimo
Saluti
Diego