GESTIRE LA PRODUZIONE
Il database fin qui creato, pur necessitando di aggiustamenti, è ormai pronto a gestire i movimenti di carico e scarico degli items e i prezzi di acquisto e vendita (NB: in tabella MOVIMENTI, ai campi numerici CARICO e SCARICO è stato assegnato il valore predefinito “0”; questo permette il corretto funzionamento della formula che calcola la giacenza anche se manca uno dei due valori, il movimento di carico o quello di scarico). A questo punto è giunto il momento di affrontare un’altra questione, fondamentale per chi si occupa di industria su EVE Online: la produzione. Innanzitutto andiamo ad aggiungere due nuovi campi alla tabella ITEMS, e quindi alle maschere M_ITEMS e M_ITEMS2 (per quest’ultima i nuovi campi vanno aggiunti alla query Q_ITEMS). Il primo campo è CARICOBASE, un campo numerico; il secondo campo è PREZZOBASE, un campo valuta. Il campo CARICOBASE indica la quantità suggerita da acquistare (carico) o vendere (scarico) per ogni singolo item. E’ un accorgimento che serve per far funzionare bene e rendere attendibili la “media prezzo di acquisto” e la “media prezzo di vendita”. Facciamo un esempio col minerale Mexallon: se acquisto 1000 Mexallon a 18,00 e 10 Mexallon a 20,00, la media prezzo è 19, ma in realtà andrò ad utilizzare Mexallon che mi è costato praticamente tutto 18… caricando in magazzino sempre la stessa quantità di Mexallon, quella suggeritami dal campo CARICOBASE, la media prezzo è molto più veritiera. Il campo PREZZOBASE è un altro campo molto importante ai fini della produzione. E’ un valore che non ha niente a che fare con i valori già visti di “prezzo medio di acquisto” e “prezzo medio di vendita”, che sono ovviamente legati alle movimentazioni di mercato (e che non sono veri campi di tabelle, ma campi calcolati su maschere). Il campo PREZZOBASE indica il costo di un item che abbiamo raccolto direttamente e il costo di un item che esce dalla produzione.
MASCHERA PRODUZIONE
Creare una maschera vuota, M_PRODUZIONE, scollegata da tutto, cioè che non abbia alcuna origine dati. Creare anche una nuova tabella, CARRELLO, con i campi ID, ITEMC, PREZZOC, QUANTC (la C finale dei campi serve per identificarli con la tabella CARRELLO). La procedura seguente è ben descritta nel video in fondo a questo articolo. In breve occorre realizzare, utilizzando caselle di riepilogo e sottomaschere all’interno della maschera M_PRODUZIONE, uno schema che permetta, nell’ordine: di selezionare gli items necessari alla produzione spostandoli dentro la tabella CARRELLO; di indicare le quantità necessarie per la produzione, così da ottenere un costo totale; di scaricare dal magazzino gli items utilizzati nella produzione. In più rispetto al video c’è quindi il campo QUANTC, che ci permette di indicare le quantità esatte degli items richiesti per la produzione. Creeremo anche un altro campo, non in tabella CARRELLO ma direttamente nella sottomaschera SM_CARRELLO (che viene creata in automatico inserendo la tabella CARRELLO all’interno della maschera M_PRODUZIONE). Questo campo, TOTALEC, esegue per ogni item la moltiplicazione tra il prezzo e la quantità; nella sua origine dati inserire la formula:
=[PREZZOC]*[QUANTC]
Ritornando al video di esempio, dovremo ora inserire una nuova casella di testo (Testo10) nel piè di pagina della sottomaschera SM_CARRELLO; farà la somma di tutte le moltiplicazioni tra i campi PREZZOC e QUANTC, quindi nella sua origine dati occorre inserire:
=Somma([PREZZOC]*[QUANTC])
Per finire, la casella di testo inserita in maschera M_PRODUZIONE, che deve dirci il costo totale della produzione che stiamo realizzando, andrà a prendere il dato della casella di testo all’interno della sottomaschera SM_CARRELLO (che si chiama Testo10). Nella sua origine dati inserire quindi:
=[SM_CARRELLO]![Testo10]
MASCHERE DI INSERIMENTO
Ora lasciamo per un attimo la maschera M_PRODUZIONE e andiamo a creare una maschera di inserimento. Deve agevolare l’inserimento nel database di un nuovo oggetto, item. Maschera vuota, origine record la tabella ITEMS, campi ITEM, ID_CATEGORIA, CARICOBASE, PREZZOBASE, NOTE. La maschera, M_ITEMS3, non serve per visualizzare una lista di items (come la maschera M_ITEMS) o un particolare item nel dettaglio (come la maschera M_ITEMS2), ma serve unicamente ad inserire un nuovo item. Sull’evento della maschera “Su Caricamento” inserire il seguente codice, necessario per far si che all’apertura non ci siano visualizzati i vecchi records, ma sia subito possibile inserire un nuovo record:
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub
Una maschera di inserimento dedicata, contenente cioè i soli campi necessari, conviene crearla anche per i movimenti di carico (M_MOVIMENTICARICO) e per i movimenti di scarico (M_MOVIMENTISCARICO). La procedura non cambia, resta importante che anche qui le maschere si aprano direttamente su un nuovo record.
ULTIMARE LA FASE DI PRODUZIONE
A completamento della fase di produzione, di vitale importanza su EVE Online, andiamo a creare una nuova maschera, M_PRODUZIONE2. Strutturalmente è la maschera più complessa del database. Deve permettere all’utente, una volta completata la produzione in maschera M_PRODUZIONE, di inserire in database il nuovo item (se è una produzione di un item mai realizzata prima), di caricare le quantità prodotte (movimenti di carico), di scaricare le quantità degli items che sono serviti alla produzione (movimenti di scarico). Per avere tutto comodamente a portata di mano, inseriamo in maschera M_PRODUZIONE2 le sottomaschere SM_CARRELLO, M_ITEMS3, M_MOVIMENTICARICO, M_MOVIMENTISCARICO. Attenzione alla procedura: quando si inserisce l’item prodotto in M_MOVIMENTICARICO, non va indicato il prezzo di acquisto (l’item non viene comprato sul market ma prodotto internamente); quando si scaricano gli items utilizzati nella produzione, non va indicato il prezzo di vendita (gli items non sono stati venduti sul market ma utilizzati per la produzione).
ARGOMENTI E FONTI
Questo articolo sul database di gestione di EVE Online affronta i seguenti argomenti: Casella Combinata, Sottomaschera. Per realizzare correttamente questa parte del database sono state consultate le seguenti fonti: