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