Newsgroup: it.comp.appl.access
Titolo: Piccolo Magazzino!

Salve, potreste essere cosě gentili da aiutarmi a capire come gestire un
piccolo magazzino?
il magazzino comprende solo 12 articoli
le procedure da gestire sarebbero queste:
1) Carico materiale da DDT
2) Prelievo giornaliero da parte degli operai del materiale da installare a
privati
3) Rientro del materiale non installato a fine giornata
4) Registrazione del materiale difettoso
Quello che mi interessa sapere č la giacenza
ma anche il materiale difettoso
Ho provato a gestire tutto con una tabella:
Codice
Descrizione
Carico_Mat
Prelievo_MAt
Rientro_Mat
Anomalo_Mat
Qta
Ogni procedura aggiornava il relativo campo ed alla fine con una query ho
cercato di ottenere la giacenza ecc
per ogni procedura ho dovuto creare una maschera ecc ecc
ma ho capito subito che non č il massimo (penso sia meno del minimo)
Considerando che gli articoli sono sempre e solo 12, che sarebbe piů facile
gestire il tutto con un'unica maschera facendo uso di causali per ogni
procedura da eseguire e che sicuramente sarebbe piů utile a me per
cominciare a capire come si potrebbe gestire un magazzino serio, penso sia
piů razionale creare le seguenti tabelle:
ARTICOLI
MOVIMENTI
CAUSALI
Creare le relazioni:
Articoli-Movimenti 1 a Molti
Causali-Movimenti 1 a Molti
Creare una maschera movimenti e gestire le diverse procedure con le causali
che dovrebbero essere:
CaricoMat
PrelievoMat
RientroMat
???
Potreste aiutarmi a capire come procedere?
soprattutto capire come usare le causali per mettere tutte le procedure
nella stessa tabella
il calcolo della giacenza...ecc ecc
in poche parole, come potrebbe essere gestito?
Grazie.


La struttura delle causali di magazzino potrebbe essere la seguente:
CodCausale
DescrCausale
CodDepositoPartenza
più una serie di flag Sì/no:
IncrementoNumeroBolla
DaFatturare
FlagUltimoCosto
FlagDataUltAcq
FlagDataUltVend
più una serie di flag che potranno essere + - = a seconda che deve sommare
il valore, decrementarlo o non fare niente:
FlagGiacenza
FlagQtaVisione
FlagQtaProd
FlagQtaLav
FlagQtaResaCli
FlagQtaResaFor
FlagQtaAcq
FlagQtaVend
FlagValAcq
FlagValVend
ed il programma che fa la movimentazione gestisce i valori in base ai flag
della causale utilizzata.
Ciao
Ever


Scusami Ever, ma ho capito poco :)
il problema č proprio come usare le causali
Intanto ho cercato di fare qualcosa (aiutandomi anche con vecchie News.
TabMovimenti
MOV_ID
MOV_DATA
MOV_ART_COD
MOV_CAU_COD
MOV_QTA
Articoli
ART_COD
ART_DESC
TabCausali
CAU_COD
CAU_DESC
CAU_TIPO ( 1 = Carico, -1 = Scarico)
Relazione 1 a molti:
MATERIALI >> MOVIMENTI
CAUSALI >> MOVIMENTI
La maschera Movimenti ha come origine dati una query:
SELECT Movimenti.MOV_ID, Movimenti.MOV_DATA, Movimenti.MOV_ART_COD,
Movimenti.MOV_CAU_COD, Movimenti.MOV_QTA, Articoli.ART_DESC,
Causali.CAU_DESC, Causali.CAU_TIPO, [MOV_QTA]*[CAU_TIPO] AS QTAMOV
FROM Articoli INNER JOIN (Causali INNER JOIN Movimenti ON Causali.CAU_COD =
Movimenti.MOV_CAU_COD) ON Articoli.ART_COD = Movimenti.MOV_ART_COD;
Con questa maschera inserisco i movimenti!
Poi ho creato 2 Query con le quali ricavo:
 il CARICO...
SELECT Movimenti.MOV_ART_COD, Sum(Movimenti.MOV_QTA) AS SommaQTA,
Articoli.ART_DESC, Causali.CMG_TIPO, [SOMMAQTA]*[CMG_TIPO] AS Carico
FROM Articoli INNER JOIN (Causali INNER JOIN Movimenti ON Causali.CAU_COD =
Movimenti.MOV_CAU_COD) ON Articoli.ART_COD = Movimenti.MOV_ART_COD
WHERE (((Movimenti.MOV_DATA) Between [Dalla data] And [Alla Data]))
GROUP BY Movimenti.MOV_ART_COD, Articoli.ART_DESC, Causali.CAU_TIPO
HAVING (((Causali.CAU_TIPO)=1));
e lo SCARICO degli articoli...
 uguale come sopra ma con HAVING(((Causali.CAU_TIPO)= -1))
Infine la giacenza:
SELECT queryCarico.MOV_ART_COD, queryCarico.Descrizione, queryCarico.Carico,
NZ([Scarico],0) AS Scarico1, [Carico]+[Scarico1] AS Giacenza FROM
queryCarico LEFT JOIN QueryScarico ON queryCarico.MOV_COD_ART =
QueryScarico.MOV_COD_ART;
Qualche campo č sbagliato perchč non sono le query originali, ma ti assicuro
che funziona bene e per uno esperto come te non č difficile capire come
funzionano...
Quindi Per il carico moltiplico la QTA per 1, per lo scarico QTA X -1 e la
giacenza č = CARICO - SCARICO OK?
Questo č facile per carico e scarico ma per le altre causali?
per esempio per il prelievo giornaliero del materiale da parte degli operati
come devo usare la causale visto che non dovrebbe decrementare il magazzino?
Il tuo consiglio č ottimo ma dovrei rifare tutto e soprattutto capire come
procedere...
Ehi vedi un pň se riesci a farmi capire qualcosa!
Ciao e scusami!


Scusami ancora...
praticamente, da quello che ho capito, in situazioni del genere si usa una
stringa come tipo causale che rappresenta l'operazione da far eseguire alla
procedura di movimentazione magazzino..
quindi
 + incremente il magazzino
- decrementa
= lascia invariato
ecc ecc
ma come si usa?
potresti farmi un piccolo esempio?
grazie ancora e ti chiedo scusa per tanta ignoranza !
CIAO.

 ha scritto nel messaggio
news:ZIICb.187886$e6.70...@twister2.libero.it...

if FlagGiacenza = "+" incremente la giacenza del magazzino
if FlagGiacenza = "-" decrementa la giacenza del magazzino
if FlagGiacenza = "=" lascia invariato la giacenza del magazzino
if FlagQtaLav= "+" incremente il materiale in lavorazione
if FlagQtaLav= "-" incremente il materiale in lavorazione
if FlagQtaLav= "=" incremente il materiale in lavorazione
...
Perciň potrai avere diverse causali, ad esempio:
- una causale di uscita per lavorazione che diminuisce la giacenza del magaz
zino ed aumentare quella in lavorazione
- una causale che diminuirŕ la quantitŕ in lavorazione perchč utilizzata
- una causale che diminuirŕ la quantitŕ in lavorazione ed aumenterŕ la
giacenza perchč č rientrato il materiale che č avanzato dalla lavorazione
Ciao
Ever