Un palmare per ordini e ordinazioni con Access

di Gianni Nigro

scritto il

Come realizzare e utilizzare un semplice database con Access da usare su terminale mobile, per gestire piccoli ordini e ordinazioni, sia backend sia frontend.

Molte piccole aziende commerciali non possono permettersi software gestionali nè rimanere fermi a “carta e penna”. Per le attività commerciali – ad esempio nel campo della ristorazione – si può realizzare tanto un sistema di memorizzazione ordini quanto addirittura un elaborato database (scarica l’esempio). Un database è anzitutto un insieme di tabelle. Il primo passo, dunque, consiste nella creazione delle tabelle che conterranno i dati. In Visualizzazione Struttura creiamo una tabella con soltanto tre campi.

I passi necessari prevedono per primo la creazione di un DB vuoto: dalla Barra multifunzione > scheda Crea > gruppo Tabelle > Tabella > Visualizza > scheda Visualizzazioni. Salvare come Menu > inserire i nomi dei campi assegnando ad ognuno il Tipo di dati.

Ipotizziamo un sistema per ordinazioni da utilizzare in un piccolo ristorante: la tabella in Visualizzazione Foglio dati potrebbe avere il seguente aspetto:

I dati possono essere immessi direttamente nella tabella oppure è possibile creare un form (maschera) di inserimento dati: selezionare la tabella per cui costruire il form > Barra multifunzione > scheda Crea > gruppo Maschere > click sul pulsante Maschera.

Access costruisce automaticamente il form di inserimento dati pronto per l’uso, con i campi corrispondenti a quelli della tabella che avevamo selezionato.

Ogni ordinazione dei clienti deve essere memorizzata dal personale ai tavoli, quindi è necessaria una seconda tabella che chiameremo “Ordinazioni” e che conterrà i campi riportati nell’immagine.

Questa tabella non sarà vista da coloro che utilizzaranno il DB e ogni piatto resterà identificato dal suo numero di codice, nel campo NumeroPiatto.

A questo punto è necessario offrire al cameriere la possibilità di inserire nel database le ordinazioni. La soluzione più comoda è quella di creare una maschera e prima ancora una query (interrogazione) che selezioni nomi dei piatti e relativi numeri identificativi. Sarà così più facile associare tale query al menu a tendina di una casella combinata che permetterà al personale ai tavoli di memorizzare l’ordinazione.

I progettisti di DB spesso utilizzano convenzioni che facilitano il lavoro. Ad esempio, è utile far precedere i nomi di query, maschere e report da tre lettere che definiscono il tipo di oggetto. Riportiamo qui di seguito alcuni esempi:

Vero è che Access identifica ciascun oggetto con una icona particolare, ma è anche vero che tali icone non possono essere così intuitive come i prefissi. E comunque, in un frammento di codice SQL le icone non si vedono ma i prefissi si leggono sempre.

Nomineremo dunque la nostra query come qrySceltaPiatto. Per creare una query:
Barra multifunzione > scheda Crea > gruppo Altro > click sul pulsante Struttura query > finestra di dialogo Mostra tabella > scheda Tabelle > tabella Menu > Aggiungi > appare la tabellina Menu.

Trascinare il campo ID della tabellina Menu fino alla sottostante riga Campo nella prima colonna, e ripetere l’operazione anche per il campo Piatto con la seconda colonna e alla fine salvare la query con il nome qrySceltaPiatto. Ricordiamo che la griglia prende il nome di griglia QBE, acronimo di Query By Example.

Passiamo adesso alla creazione della maschera di inserimento dati automatico sulla tabella Ordinazioni per il cameriere, con un procedimento analogo a quello della creazione della maschera per la tabella Menu. Chiamiamola frmOrdinazioni e andiamo ad attuare una modifica della casella di testo relativa al numero del tavolo.

Visualizzazione Struttura > click destro sulla casella > Cambia in > Casella combinata > Barra multifunzione > gruppo Strumenti > Finestra delle proprietà > scheda Dati > pulsantino con tre puntini colonna destra, riga Origini riga > finestra Modifica voci elenco > digitare in verticale i numeri dei tavoli.

Eventualmente si può inserire il valore “1” come predefinito. Ora basta cliccare su OK e i numeri scritti appariranno nella colonna destra della riga Origini riga, Dpo aver salvato e chiuso la Visualizzazione Struttura si può verificare che la casella combinata riporti nel suo elenco a discesa i numeri dei tavoli.

Analogamente trasformeremo anche la casella di testo del numero del piatto in una casella combinata e la assoceremo alla query qrySceltaPiatto.

Visualizzazione Struttura > click destro > Cambia in > Casella combinata > Barra multifunzione > gruppo Strumenti > click su Finestra delle proprietà > click su pulsante freccia in giù (colonna destra, riga Origine riga) > qrySceltaPiatto.

Trattandosi di un’interfaccia su cui trascorrere ore di lavoro si può inserire una grafica personalizzata e modificare – da Visualizzazione Struttura – e modificare le dimensioni degli oggetti della maschera, utilizzando direttamente il mouse oppure modificando i valori nella scheda Formato della Finestra delle proprietà.

Attenzione! Affinché le ordinazioni fluiscano dalla maschera di inserimento alla tabella Ordinazioni e che vengano qui memorizzate è necessario salvare l’ordinazione. In due modi: barra del titolo dell’applicazione &gt Salva; chiudere la scheda frmOrdinazioni, cioè la maschera di inserimento delle ordinazioni stesse.

Ora è venuto il momento di creare un report stampabile che riassuma tutte le ordinazioni di ogni tavolo e conteggi il costo dei piatti ordinati, restituendo il valore in euro del conto finale.

Nel nostro caso è necessario creare in precedenza una query che effettui alcuni calcoli e selezioni: dovrà contenere, coordinati tra loro, i campi selezionati da entrambe le tabelle esistenti, Menu e Ordinazioni

Bisogna dunque creare una relazione tra le due tabelle: Barra multifunzione > scheda Strumenti tabella/Foglio dati > gruppo Relazioni > click su Relazioni.

Nella finestra Mostra tabella, selezionare ogni tabella e fare click sul pulsante Aggiungi. Poi trascinare il campo ID di Menu sul campo NumeroTavolo di Ordinazioni, rilasciare il mouse e fare click sul pulsante Crea della finestra Modifica Relazioni.

Alternativamente, si può scegliere il percorso: Barra multifunzione > scheda Strumenti database > gruppo Mostra/Nascondi > pulsante Relazioni.

Andiamo ora a creare la query parametrica qryIdentificaTavolo. quando viene aperta, presenta all ‘ utente un piccolo form con un testo (presumibilmente una domanda) e una casella di testo.

Per creare tale query è necessario entrare in Visualizzazione Struttura e trascinare nella riga Campo i campi Piatto e Prezzo dalla tabella Menu, e NumeroTavolo e Quantità dalla tabella Ordinazioni.

Ora bisogna creare una quinta colonna, scrivendo nello spazio vuoto della riga Campo la seguente riga di codice TotaleParziale: [Quantità]*[Prezzo] . Il testo che costituirà la domanda nel piccolo form verrà scritto nella riga Criteri all ‘ altezza della colonna del campo NumeroTavolo, racchiuso da parentesi quadre.

Il report che il cameriere consegnerà ai clienti dopo averlo stampato, verrà creato automaticamente da Access. Selezionare la query qryIdentificaTavolo e dalla barra multifunzione cliccare sulla scheda Crea. Dal gruppo Report cliccare sul pulsante Report: Access genererà in automatico il report.

A questo punto, passare in modalità Visualizzazione Struttura e modificare e assegnare i formati a vostro gradimento.

Il numero del tavolo si ottiene aggiungendo una casella di testo e aprendo la relativa Finestra delle proprietà, dove, nella scheda Dati è stata assegnata, all ‘ Origine controllo, la proprietà NumeroTavolo.

Il conto finale si ottiene inserendo un’altra casella di testo nella sezione Piè di pagina report e scrivendo all ‘ interno della casella l ‘ espressione =Somma([TotaleParziale), assegnandole colore rosso, formato grassetto e formato Valuta.

La tabella Menu riporta anche i numeri di codice di ogni piatto. Con una Creazione guidata Report (scheda Crea > gruppo Report) selezioniamo dalla tabella Menu solo i sunnominati due campi, salvando la maschera con il nome frmMenuStampa. Il report può ora essere stampato in più copie e distribuito su ogni tavolo. Buon appetito!