Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Costruzione Query Rimanenze Magazzino

811 views
Skip to first unread message

badush

unread,
May 15, 2002, 2:30:24 PM5/15/02
to
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!


sergio

unread,
May 16, 2002, 2:36:11 AM5/16/02
to

"badush" <bad...@martucci.com> ha scritto nel messaggio
news:k5yE8.64362$5k4.1...@twister2.libero.it...

[cut]


> 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?
>

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

Roberto da casa

unread,
May 16, 2002, 5:54:00 AM5/16/02
to

"badush" <bad...@martucci.com> 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
---------------------------------------------


badush

unread,
May 16, 2002, 3:39:16 PM5/16/02
to

"Roberto da casa" <r.ma...@libero.it> ha scritto nel messaggio
news:flLE8.66850$US3.1...@twister1.libero.it...

>
> "badush" <bad...@martucci.com> 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
>
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

badush

unread,
May 16, 2002, 4:00:14 PM5/16/02
to

"sergio" <scir...@tor.it> ha scritto nel messaggio
news:vrIE8.48585$CN3.1...@news2.tin.it...

>
> "badush" <bad...@martucci.com> ha scritto nel messaggio
> news:k5yE8.64362$5k4.1...@twister2.libero.it...
>
> giacenza=[carico]-[scarico]
> se il secondo operando è null il risultao non esce
> prova a scrivere
> giacenza=[carico]-nz([scarico])
> dovrebbe funzionare meglio
> 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

Roberto da casa

unread,
May 17, 2002, 5:52:07 AM5/17/02
to

"badush" <bad...@martucci.com> ha scritto nel messaggio
news:BbUE8.69639$US3.1...@twister1.libero.it...

E già è qualcosa. ;-)

> 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.

[CUT]
> 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.

0 new messages