Database in Excel - Gestione Magazzino. - dal 04/09/04 pagina vista: volte Ancora un'altro esempio di un progetto di inserimento, consultazione, carico, scarico articoli in un database. Sempre per agganciarsi all'utilizzo degli indici riga (vedi articolo "Database - Videoteca" su questo sito) e per confermare che il VBA ci consente un'ampia diversificazione di procedure per ottenere uno stesso obiettivo (vedi articolo "Database - Gest. Magazzino" sull'altro sito), presento questo esercizio. Ovviamente ogni progetto va sviluppato in funzione dei risultati che vogliamo ottenere, ma le routine di base gira e gira sono sempre le stesse. Comunque ho diviso la gestione in due operazioni distinte: la prima è l'inserimento e/o la consultazione di articoli. In questa fase è possibile insieme all'inserimento di un nuovo articolo, effettuare contemporaneamente il carico e la definizione del valore di scorta che si intende impostare per l'articolo stesso. La seconda operazione è relativa al carico/scarico di articoli già inseriti. Vediamo le prime 2 necessità operative per questo progetto:
Queste due necessità sono soddisfatte con l'impiego di una Userform : All'avvio della Userform una istruzione provvede a trovare la prima riga libera in modo che dopo aver scritto i dati nelle Textbox, sia possibile inserirli, tramite il pulsante "Registra" nei campi della riga predisposta:
La variabile "Ri" è stata dichiarata pubblica e inserita il Generale - Dichiarazioni del modulo Userform e all'avvio chiaramente le Textbox si presenteranno vuote, MA pronte per accogliere dati. Vediamo un'immagine della Form Nella Userform sono presenti due OptionButton : "Inserimento Articoli" (attivata di default) e "Consultazione Articoli"; se attiviamo questa seconda opzione otteniamo l'abilitazione dello ScrollBar1 (di default impostato a Enabled = False) che consentirà la consultazione degli articoli presenti nel database, e disabilita il pulsante "Registra Articolo". Se vorremo ritornare a "Inserimento Articoli" basterà selezionare l'opzione e abiliteremo/disabiliteremo pulsante e scrollbar, riattivando la selezione della prima riga libera. In pratica la Userform la usiamo o per inserire articoli, o per consultarli. Le Textbox "Scarico", "Giacenza" e "Valore" sono impostate di default Enabled = False : servono solo come consultazione. Sono inoltre presenti tre ComboBox collegate tramite il RowSource (quelle sotto "Controllo esistenza codice o articolo") ai tre campi del database: "CodArt", "CodForn" "Descrizione" e servono solo, durante un inserimento, a controllare se esiste già un articolo con i dati che stiamo inserendo; è solo un controllo visivo ma che aiuta a non creare doppioni. Il pulsante "Registra Articolo" serve per trasferire i dati delle TextBox nelle celle della riga libera. Ho previsto diversi controlli che si assicurano di completare i campi eventualmente dimenticati o lasciati vuoti, e solo un controllo che se la Textbox "Descrizione" è vuota, si avvisi della necessità di scrivere il nome dell'articolo, uscendo dalla routine. Potrete leggere le istruzioni previste scaricando il file. Vediamo ora le altre necessità operative, e osserviamo come si presenta la "Consolle di comando", cioè la zona del Foglio contenente i pulsanti e l'inizio della tabella: I primi due pulsanti gialli descrivono chiaramente la loro funzione (e chiamano le form relative), il terzo pulsante serve a controllare i valori "Giacenza" con il valore di "Scorta" minima (o limite di sottoscorta). E' collegato ad una macro che avvisa in tre casi:
Sono presenti quattro OptionButton che hanno il compito di predisporre il tipo di ordinamento dati attraverso il pulsante "Ordina". Possiamo quindi scegliere un tipo di ordinamento prima di chiamare la Userform per l'inserimento; risulterà facilitata la ricerca se esiste già un articolo, trovandoli in ordine alfabetico nella rispettiva combobox del campo ordinato. In H1 è stata inserita la funzione =CONTA.VALORI(A3:A10000) che ci dirà quanti articoli sono presenti, e in J1 la funzione =SOMMA(J3:J10000) che ci restituisce il valore totale delle giacenze. La colonna H (giacenza) da H3 a H10000 porta la formula (in ogni cella) per la differenza tra Carico e Scarico (=F3-G3 e seguenti). La colonna J invece contiene una semplice moltiplicazione: Giacenza per Costo (=H3*E3 e seguenti). Passiamo ora ad esaminare come sono stata impostate le altre necessità fondamentali per la gestione di:
Ho previsto una seconda Userform, richiamabile dall'apposito pulsante della "Consolle", e all'avvio si presenta così: Per poter eseguire operazioni di carico/scarico è necessario rintracciare l'articolo su cui operare; ho previsto tre opzioni di ricerca: per codice articolo, per codice fornitore, per descrizione articolo. A secondo dell'opzione scelta, si rende visibile una ComboBox che porterà l'elenco degli articoli presenti per il campo (opzione) scelto; un click sul valore che vorremo caricare/scaricare e trasferiamo il nome nella TextBox "Cosa Cercare"; a questo punto ho previsto due modalità per la ricerca:
Con i due pulsanti "Carico" e "Scarico" effettueremo l'operazione scelta, che provvederà ad aggiungere la "Quantità" nel rispettivo campo Carico o Scarico. Sarà poi la differenza svolta con la formula nel corrispondente campo "Giacenza" a predisporre il valore della giacenza stessa. Ad ogni pressione su uno dei due pulsanti, verrà aggiornata la Textbox "Giacenza" aggiornando il valore. Sono presenti alcuni controlli sui due pulsanti: si verifica che non ci si sia dimenticati di scrivere la quantità, e per il pulsante "Scarico" si controlla anche che la quantità da scaricare non sia superiore alla giacenza; in questo caso si viene avvisati e si rende impossibile lo scarico. Veniamo altresì avvisanti se la nuova giacenza sarà inferiore al valore di scorta. Sicuramente il programma è migliorabile, adattabile o ampliabile per esigenze personali, ma è un buon esempio che potrà servire ad altri anche così come sta.
File Scaricabile e consultabile : Magaz2000.zip 394 Kb
GBuon Lavoro. prelevato sul sito www.ennius.altervista.org |