Newsgroup: it.comp.appl.access
Titolo: Costruzione Query Rimanenze Magazzino

Ecomi qua di nuovo!
Chiedo aiuto per risolvere un mio  problema, nel calcolo delle rimanenze di
magazzino.
Ho costruito un database di Magazzino, composto dalle seguenti tabelle
principali:
1) Articoli;
2) Carico;
3) Scarico.
La  Tabella Carico è composta dai seguenti campi:
IdArticolo, Articolo,  Descrizione, Quantita.
La tabella Carico l'ho costruita importando i dati  da un file txt ,
prodotto da un altro database diverso da Access,  precaricando circa 4000
articoli di magazzino riportando, per ciascuno di essi,  le quantita
esistenti in quel momento in magazzino.
Dopo ho costruito due  query una dalla Tabella Carico e l'altra dalla
Tabella Scarico,  potendo cosi ulteriormente generare altre due query, una
per il carico e l'altra per lo scarico raggruppando i dati per sommare le
quantita.
Disponendo della somma delle quantita, per ciascuno articolo,  di Carico e
di scarico ho costruito un'altra query nel la quale ci sono due campi uno
relativo alle quantità raggruppate del Carico e l'altro relativo alle
quantita raggruppate dello Scarico, potendo cosi genere un campo calcolato
che mi consente di calcolare le rimanenze  per differenza tra Quantita
raggruppate Caricate e  Scaricate.
La query pero non mi segna nulla se non ci sono movimenti nella tabella di
Scarico.
Dunque, chiedo,  perché essendoci delle quantita caricate (quelle prelevate
con il file txt) queste non vengono visualizzate nella query delle rimanenze
se non ci sono movimenti nella tabella di Scarico?
Come posso risolvere questo problema?
E  se è possibile costruire una Sql che determini le rimanenze,
considerando le tabelle che ho costruito,  aggiungendo e sottraendo, alle
quantità precaricate,  i successivi movimento di  carico e scarico.
Grazie!


probabilmente per calcolare la giacenza hai una operazione del tipo
giacenza=[carico]-[scarico]
se il secondo operando è null il risultao non esce
prova a scrivere
giacenza=[carico]-nz([scarico])
dovrebbe funzionare meglio
ciao sergio

 ha scritto nel messaggio
news:k5yE8.64362$5k4.1...@twister2.libero.it...

Cambia il tipo di Join tra le due query di raggruppamento su cui hai basato
la query che deve darti il risultato: sicuramente attualmente è di tipo 1 (o
INNER JOIN che dir si voglia); questo tipo di Join ti produce nella query
finale una riga solo a condizione che un IdArticolo abbia record sia sulla
tabella carichi che sulla tabella scarichi.
Poichè, per quello che hai detto, per un IdArticolo ci sarà almeno un record
nella tabella carichi (quello della giacenza iniziale), scegli come tipo di
Join quello che ti fa vedere comunque i dati dei carichi (a seconda di come
hai inserito le due query di raggruppamento nella griglia di struttura della
query finale, sarà di tipo 2 o 3: LEFT o RIGHT).
Comunque non è necessario di armare tutto 'sto macello per determinare la
giacenza di un determinato IdArticolo: è sufficiente effettuare la
differenza tra la somma dei carichi e la somma degli scarichi di
quell'IdArticolo effettuate usando due funzioni DSum (vedi Help) protette da
due funzioni Nz (vedi help).
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao Roberto
sei gentile come sempre.
Delle due soluzioni che mi hai proposto quella che ho capito, è che ha
funzionato, e la prima ossia cambiare il tipo di Join.
Sulla seconda l'help, data la mia ignoranza, non mi è stato di grande aiuto.
Vorresti farmi qualche esempio pratico?
Inoltre vorrei chiederti se è possibile partendo dalla query delle
rimanenze, cosi come l'ho costruita, generare una query o tabella di
inventario che contenga assieme ai campi della query delle rimanenze- ossia
gli articoli,  la descrizione, le quantita finali esistenti  - un campo che
riporti il prezzo medio di acquisto degli articoli  proveniente  dalla query
di carico.
Per brevità non inserisco la procedura con la quale ho detrminato la query
delle rimanenze poiché l'ho descritta ponendo il quesito al quale mi hai
risposto in questa occassione. Comunque se è necessario rispedirla lo faccio
subito.
Grazie

 ciao sergio
Ciao Sergio,
grazie per avermi risposto.
Ho provato la soluzione da te suggerita ma non ha funzionato. Forse ho
commesso un errore io. Forse devo impostare il tipo di Join da 1 a 2?
Ti riporto comunque  la struttura delle tre query:
1) SommaCarico
    Campo:          Articoli;            Descrizione;        Quantita
    Tabella:          Carico;                    Articoli;        Carico;
    Formula:         Raggruppamento  Raggruppam.;   Somma;
2) SommaScarico;
        Campo:          Articoli;               Descrizione;          Qta
        Tabella:          Scarico;                    Articoli;
Scarico;
        Formula:         Raggruppamento  Raggruppam.;     Somma;
3) Rimanenze
 Campo:     SommaCarico_Articoli;  SommaCarico_ Descrizione;
SommaDiQuantita;   SommaDiQta
 Tabella:      SommaScarico;              SommaCarico;
SommaCarico;         SommaScarico
Le rimanenze le detrminate in questo modo:
Rimanenze Finali:[SommaDiQuantita]-[SommaDiQta]
Grazie Ancora

 Grazie
Se la tabella Articoli ha una struttura simile a questa:
Articoli                    Testo e chiave primaria
Descrizione              Testo
ecc. ecc.
Se la tabella Carico ha una struttura simile a questa:
IdCarico                  Contatore e chiave primaria
Articoli                    Testo
Descrizione             Testo
Quantita                  Numerico
ImportoAcquisto     Valuta
ecc. ecc.
Se la tabella Scarico ha una struttura simile a questa:
IdScarico                Contatore e chiave primaria
Articoli                    Testo
Descrizione             Testo
Qta                         Numerico
ecc. ecc.
crati un'unica query che abbia il seguente codice SQL:
SELECT Articoli.Articoli, Articoli.Descrizione,
Val(Nz(DSum("Quantita","Carico","Articoli=" & Chr$(34) & [Articoli] &
Chr$(34)))) AS TotaleCarico, Val(Nz(DSum("Qta","Scarico","Articoli=" &
Chr$(34) & [Articoli] & Chr$(34)))) AS TotaleScarico,
[TotaleCarico]-[TotaleScarico] AS [Rimanenze Finali],
CCur(IIf([TotaleCarico]<=0,0,Val(Nz(DSum("ImportoAcquisto","Carico","Articol
i=" & Chr$(34) & [Articoli] & Chr$(34))))/[TotaleCarico])) AS
PrezzoMedioAcquisto
FROM Articoli;
Se invece i campi Articoli sono di tipo Contatore/Numerico:
SELECT Articoli.Articoli, Articoli.Descrizione,
Val(Nz(DSum("Quantita","Carico","Articoli=" & [Articoli]))) AS TotaleCarico,
Val(Nz(DSum("Qta","Scarico","Articoli=" & [Articoli]))) AS TotaleScarico,
[TotaleCarico]-[TotaleScarico] AS [Rimanenze Finali],
CCur(IIf([TotaleCarico]<=0,0,Val(Nz(DSum("ImportoAcquisto","Carico","Articol
i=" & [Articoli])))/[TotaleCarico])) AS PrezzoMedioAcquisto
FROM Articoli;
Spero che sia ciò che ti serviva.
