Newsgroup: it.comp.appl.access
Titolo: Movimenti di magazzino

Ho un semplicissimo programmino che mi gestisce le
stampe delle scorte di mgazzino. Dovrei creare anche
la stampa dei movimenti di magazzino.
Avendo una tabella Anagrafica Articoli e due maschere,
una per il carico ed una per lo scarico, non so come gestire
una tabella MovimentiMagazzino. Quest'ultima ha un campo
Carico, un campo Scarico ed un campo contatore, oltre al
codice articolo ed al nome che andrebbe a prelevare dalla
tabella AnagraficaArticoli (sono collegate 1-1 in base al codice),
mentre i campi Carico e Scarico vengono aggiornati ogni volta
che inserisco le quantità di carico e scarico nelle due maschere.
Essendo alle prime armi con Access, non so se e che routine
utilizzare per assegnare i valori inseriti nelle maschere incrementando
il campo contarore e accodando così nuovi record alla tabella
MovimentiMagazzino.
Scusate per la prolissità
-- 
Gia

 ha scritto nel messaggio
news:bovpg8$1j320f$1...@ID-84652.news.uni-berlin.de...

fai una tabella movimenti con i seguenti campi datamovimento, oramovimento,
articolo, operazioneeseguita (carico o scarico) e quantità
su dopoaggiornamento dei campi carico scarico metti questo codice
Scarico
AddCarico articolo, scarico, "Scarico"
Carico
AddCarico articolo, scarico, "Carico"
in un modulo inserisci questa funzione.
Public Function AddCarico(articolo As String, Qta As Double, operazione As
String)
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from movimenti")
    rs.AddNew
    rs!DATA = Date
    rs!Ora = Time
    rs!articolo = articolo
    rs!QtaCarico = Qta
    rs!operazione = operazione
    rs.Update
    rs.Close
    Set db = Nothing
End Function
Ciao, Marco Tosto.

 MovimentiMagazzino.
Prima di passare allo sviluppo delle form io rifarei un momento l'analisi
per impostare meglio le tabelle e le loro relazioni.
SunRex


 AddCarico articolo, scarico, "Carico"
    Non so come fare quest'ultimo passaggio.
Il mio problema principale č come agire sui campi
della tabella Movimenti. La maschera di carico e di
scarico agiscono sulla tabella AnagraficaArticoli, ma
dovrei aggiornare ovviamente la tab Movimenti...
--
Gia

 Come gestisci la giacenza?
Ho impostato un livello di riordino che mi avverte con un form
quando raggiunto.
Grazie
--
Gia


Che ne dici di riportarci il codice di una bella tabella collegata, con le
causali di magazzino?
Ciao.
--
Francesco G. Rizzoni

 >
In base a come si struttura l'applicazione, si possono fare diverse cose con
le causali di magazzino:
Anzitutto si associa una descrizione che va oltre il semplice "carico" /
"scarico"
Carico / Scarico da bolla di vendita (riportando nel movimento la chiave
della bolla)
Carico / Scarico per assemblaggio (riportando nel movimento la chiave
dell'ordine di lavorazione o distinta base o altro)
Inventario (quì il discorso si complica, infatti si potrebbe utilizzare un
movimento di magazzino con un particolare flag ad indicare che per ottenere
il saldo di un determinato articolo si deve partire dall'ultimo movimento di
inventario)
Scarico per scarto di lavorazione
Ecc...
Addirittura come in certe applicazioni gestionali, tramite le causali di
magazzino vengono generati non solo i movimenti dello stesso, ma anche gli
inventari, le valorizzazioni, gli aggiornamenti ai listini ed ogni altro
possa interessare il magazzino, compresa la creazione o la modifica di un
articolo.
La maschera di gestione del magazzino tramite causali diventa l'unica
interfaccia per la gestione del magazzino; un vero e proprio log per
inserire e dove confluiscono tutte le informazioni in ordine temporale.
Nella causale sarebbero impostate le cose da chiedere, quali tabelle sono
interessate e le operazioni da compiere. Un pò come le causali contabili,
dove vengono descritti i conti interessati e le operazioni necessarie a
compiere la registrazione.
Insomma ci si possono fare un sacco di cose e relative statistiche, poi
bisogna vedere nel dettaglio se e come sia il caso di implementarle.



Grande Francesco.
Quasi quasi mi butto giù un ER per sviluppare il tutto.
Spero che Gia non si impressioni lui partiva da una relazione 1-1
e qui minimo si parla di relazioni n-n da portare in terza forma normale ;)
SunRex ;)

 forma normale ;)
    In effetti sono passato alla relazione 1-n ma mi sono
arenato e non ho ancora capito come stampare questi
benedetti movimenti. Sono troppo a digiuno di Access...
Se qualcuno mi aiutasse con parole molto semplici gli
sarei grato. Capisco che non č carino scrivere codice qui
ma la mia necessitŕ č talmente terra terra che non credo
possa servire ad altri, ergo non ci sarebbe "furto di codice".
    Sto impiegando ore e ore a capire quello che un esperto
farebbe in dieci minuti. Ho seguito solo un po' Tosto73.
--
Gia

 farebbe in dieci minuti
Un esperto lo farebbe in maniera molto + complicata (che esperto sarebbe
altrimenti?), ed impiegherebbe lo stesso tempo.  :-)
Mi appoggio a quanto già suggerito da Tosto73 e Sunrex, oltre ad altri post
passati, i cui autori al momento non ricordo (non se ne vogliano).
Rimaniamo sul "semplice e funzionale" senza precluderci sviluppi futuri.
Alcune cose le avrai già fatte sicuramente, comunque:
-Nella tabella del magazzino devi inserire i campi [DataOraInventario] e
[QtaInventario]: quando lancerai la query o comunque il calcolo della
giacenza dell'articolo, per la lettura dei movimenti di magazzino è bene
partire da un punto fermo in cui la qta è stata fisicamente verificata.
-Tabella: CauMag
CMG_Cod         K1, Codice numerico della causale
CMG_Descri
CMG_TipoOp     Numerico-Intero
                             (conterrà i soli valori -1 per gli scarichi, ed
1 per i carichi)
-Crei una maschera per la gestione di questa tabella
Dovresti impedire le modifiche al campo CMG_TipoOp una volta che siano
inseriti dei movimenti che si riferiscono a quella causale, se non saprai
come fare se ne riparlerà.
-Tabella: Movimenti
MOV_DataOra           K1
MOV_CodArticolo     Legato con relazione molti a 1 con la tabella Articoli
MOV_CMG_Cod       Legato con relazione molti a 1 con la tabella Caumag
MOV_QTA
-Crei una query su cui si baserà la maschera di gestione dei movimenti
tirando dentro le 2 tabelle + la tabella Articoli.
Oltre a tutti i campi della tabella Movimenti, trascini i campi
[DescrizioneArticolo] di Articoli, [CMG_Descri] e [CMG_TipoOp].
Inserisci anche un campo calcolato
QtaMov: [MOV_Qta]*[CMG_TipoOp]
il quale indicherà la Qta in positivo o negativo da sommare per avere il
saldo dell'articolo.
-Con la creazione guidata crei una maschera basata sulla query.
In particolare, per il campo [CMG_TipoOp] devi disabilitare la modifica
andando nelle proprietà del controllo associato.
-Per la stampa dei movimenti, con la creazione guidata crei un report basato
sulla stessa query di prima(se vorrai stampare altri campi non dovrai che
aggiungerli nella query).
-Nella maschera di gestione del magazzino per visualizzare il saldo crei un
controllo calcolato con la seguente formula (non l'ho provata).
=[QtaInventario]+Dsum("[QtaMov]";"NomeQuery";"[MOV_DataOra] > " &
[DataOraInventario])
Adesso non sono sicuro se ci vogliono gli apici su [DataOraInventario] e/o i
cancelletti #.
In caso non ne venissi fuori fallo sapere.


 gli scarichi, ed 1 per i carichi)
Facciamo prima a partire dal punto in cui sono giunto,
avendo suddiviso il lavoro e la gestione in due parti distinte,
una per la stampa dei saldi già pronta ed un'altra per la
stampa solo dei movimenti di magazzino che non riesco
ad organizzare. Siccome i movimenti di scarico verranno
inseriti da persone a digiuno di computer, che non fanno
altro che prelevare gli articoli che servono loro per lavorare
ed inserire in due minuti la quantità di scarico, ho reso la
maschera di scarico ridotta all'osso (non posso chiedere
di inserire +1 o -1 nel campo Op), così ho una maschera
di carico ed una scarico. Per questo motivo mi servirebbe
lavorare su due tabelle soltanto, quella degli articoli e quella
dei movimenti che magari includa anche i campi
DataOraMovimento e TipoOp, che sarà utilizzata, come
anche la gestione delle stampe, dall'impiegato più esperto,
mentre con la maschera che lavori sulle causali obbligherei
gli operai a lavorare su due maschere (troppo).
-- 
Gia

 gli operai a lavorare su due maschere (troppo).
Bene, tutto quello che non puoi far inserire all'operatore, lo metti da
codice (senza privarti di cose utili a te), nelle routine evento 'Prima di
inserire' e/o (bisogna vedere) 'Prima di aggiornare' delle 2 maschere.


 di aggiornare' delle 2 maschere.
Sì ma quello che non riesco a fare è agire sui campi della
tabella Movimenti. Non puoi farmi un esempio di comando che
modifica un campo di tale tabella?
Se non ti disturba potrei mandarti il programmino Magazzino
e mi dici tutto quello che non va?
Grazie e scusa per l'eventuale insistenza ma devo finire il lavoro
entro lunedì.
-- 
Gia


Di niente, č comprensibilissimo.
