Sei sulla pagina 1di 19

Gestiamo la Biblioteca con Access

Scritto da Massimiliano Pasqualoni.


Valutazione attuale: 5 / 5

Approfitto di una richiesta di Pascal per dare un'occhiata a cosa possiamo fare con MS
Access..
Riporto parte della mail:

"Ciao, mi puoi aiutare consigliandomi come usare ACCESS per realizzare una biblioteca, per
registrare cioè tutti i libri che ho in casa ? Li vorrei suddividere per tipo (di lettura, scolastico,
enciclopedie, collane,...) ed ovviamente completandoli con Titolo, Autore, ecc.."

Strutturiamo il dataBase.

E' vero che stiamo facendo un'applicazione per uso domestico, che quindi non verrà mai portata
sotto stress, però l'adozione di soluzioni semplicistiche, come ad esempio, l'uso di una sola ed unica
tabella, mi sembra decisamente limitativo, poco professionale e, soprattutto, non utile
all'apprendimento.

Per questo ho deciso di strutturare il data Base in maniera più complessa, facendo uso di più tabelle
relazionate tra loro.
Tale struttura poi potrà essere usata con dB più "seri" come, ad esempio, MySQL ed integrata via
web con php, reggendo carichi di lavoro decisamente più impegnativi che quelli domestici.
Nella mail viene richiesto esplicitamente che la suddivisione dei libri dovrà essere "per tipo (di
lettura, scolastico, enciclopedie, collane,...) ed ovviamente completandoli con Titolo, Autore,
ecc.."

Ho deciso quindi di creare una tabella per l'anagrafica dell'autore, una per la lista delle case
editrici, una per i dettagli del libro, una per il genere, una per il tipo ed una per l'edizione, collegate
tutte da una tabella riassuntiva.
Vediamo di analizzare meglio il database..
Per prima cosa generiamo una tabella dedicata all'autore che chiameremo ANA_AUTORE (oggi
sprizzo fantasia a tutto spiano! ).

Fig.1 - Struttura Tabella ANA_AUTORE

In questa tabella troveranno posto i campi


• ID_AUTORE come chiave primaria. Rappresenta la chiave univoca per la ricerca
dell'autore. Creiamo una chiave primaria come numero auto incrementante ed univoco che
ci consentirà di distinguere un autore da tutti gli altri, anche in caso di omonimia.
• NOME_AUTORE che conterrà il nome di battesimo.
• COGNOME_AUTORE che conterrà il nome di cognome.
• BIOGRAFIA che conterrà una breve nota biografica dell'autore.

Per creare una chiava primaria nella struttura della tabella, selezionare la colonna che conterrà la
chiave, nel caso delle anagrafiche tutte le prime colonne saranno chiave primaria ed il nome
inizierà per tutte con ID_. Una volta selezionata la colonna, specifichiamo il tipo dati Contatore e
clicchiamo sul pulsante Chiave Primaria nella barra degli strumenti di Access.

Fig.2 - Creiamo una chiave primaria

Stessa cosa per l'editore. Creiamo una tabella ANA_EDITORIche conterrà i campi
• ID_EDITORE come chiave primaria.
• NOME_EDITORE

Fig.3 - Struttura Tabella ANA_EDITORI

Questa volta non abbiamo bisogno di altri campi, anche se volendo possiamo aggiungerne quanti
vogliamo, come ad esempio una nota biografica, le collane pubblicate e altro ancora.
Creiamo una tabella ANA_TIPO con i campi
• ID_TIPO come chiave primaria.
• DESCRIZIONE_TIPO

Fig.4 - Struttura tabella ANA_TIPO

Questa tabella conterrà il tipo del libro, come da specifica richiesta, ad esempio "di lettura,
scolastico, enciclopedie, collane" etc..

Creiamo una tabella ANA_EDIZIONE con i campi


• ID_EDIZIONE come chiave primaria.
• DESC_EDIZIONE

Fig.5 - Struttura tabella ANA_EDIZIONE

Questa tabella conterrà il tipo di edizione del libro ad esempio se è una edizione economica, una
pocket, un tascabile, un cartonato, un rilegato, con sovracopertina o senza, etc, etc..

Creiamo una tabella ANA_GENERE con i campi


• ID_ GENERE come chiave primaria.
• DESC_ GENERE

Fig.6 - Struttura tabella ANA_GENERE

A questo punto le schede contenti le anagrafiche riutilizzabili in tutti i libri sono pronte.
Non ci resta che creare le ultime due tabelle, quella contenente le schede dei libri e quella
contenente la lista di tutti i libri presenti in biblioteca.

Creiamo la tabella SCHEDE con i seguenti campi:


• ID_SCHEDA come chiave primaria che contiene l'identificativo della scheda.
• ID_EDIZIONE riporta l'identificativo dell'edizione del libro.
• NO_PAG è il numero delle pagine del libro.
• ID_GENERE riporta l'identificativo del genere del libro.
• RIASSUNTO è un breve riassunto del libro.
• NOTE che conterrà eventuali note che possiamo aggiungere come, ad esempio se il libro è
stato prestato a qualcuno, o se ci è piaciuto, o altre info.

Fig.7 - Struttura tabella SCHEDE

Quindi creiamo l'ultima tabella ANA_ BIBILIOTECA che conterrà i seguenti campi:

• ID_BOOK come chiave primaria che è l'identificativo univoco del libro.


• TITOLO è il titolo del libro.
• ID_AUTORE riporta l'identificativo dell'autore.
• ID_EDITORE riporta l'identificativo dell'editore.
• ID_SCHEDA indica quale scheda è associata al libero.
• ID_TIPO riporta l'identificativo del tipo.

Fig.8 - Struttura tabella ANA_BIBLIOTECA

A questo punto abbiamo finito di creare le tabelle, non rimane altro che creare le correlazioni che
esistono tra le varie tabelle.

Creiamo le Relazioni tra le tabelle.


Questa fase ci consente di avere un database che anche se messo sotto stress risponderà sempre in
modo impeccabile (access permettendo s'intende!). In pratica dobbiamo associare ad un libro il suo
autore, il suo editore, il suo genere e così via.

Per far ciò ci occorre cliccare sul pulsante Relazioni nella barra dei menù di Access.

Fig.9 - Genera Relazioni

Cliccato questo pulsante si aprirà una finestra che ci consentirà di selezionare le tabelle appena
create.

Fig 10. - Aggiungi Tabelle per le Relazioni

Selezioniamo tutte le tabelle e clicchiamo sul pulsante Aggiungi.

A questo punto avremo la vista di tutte le tabelle del dB aperte in una finestra.

Fig.11 - Lista Tabelle da Relazionare


Prendiamo la tabella ANA_BIBILIOTECA ed affianchiamola alla tabella ANA_AUTORE.

La relazione che esiste tra le due tabelle è il campo ID_AUTORE, presente in entrambe.

Per stabilire una relazione tra le due tabelle ci basta cliccare sul campo ID_AUTORE della tabella
ANA_BIBILIOTECA e trascinarlo sul campo omonimo della tabella ANA_AUTORE.

A questo punto si aprirà la finestra della Modifica Relazioni.

Fig.12 - aggiunta di una Nuova Relazione

Clicchiamo sul tipo di join.

Il join è il tipo di relazione che vogliamo stabilire.

Ce ne sono di tre tipi ed, a seconda di quello che scegliamo, possiamo ottenere dei risultati diversi
sulle interrogazioni al database.
• Il Join di tipo 1 include solo le righe in cui i campi collegati da entrambe le tabelle sono
uguali.
Ovvero, se ho inserito un libro e non ho scritto ancora la scheda dell'autore, questo libro non
verrà visualizzato nella lista dei libri finché non compilerò la scheda dell'autore.
• Il Join di tipo 2 include tutti i record della tabella ANA_AUTORE e solo quelli della
tabella ANA_BIBILIOTECA in cui i campi collegati sono uguali.
Ovvero, se ho schedato tutti gli autori ma non ho inserito ancora i libri, nell'interrogazione al
database vedrò una lista di libri con relativo autore mischiati ad una lista vuota contente
solo il nome dell'autore.
• Il join di tipo 3 è il join che fa al caso nostro, include tutti i record di
ANA_BIBILIOTECA e solo quelli della tabella ANA_AUTORE in cui i campi collegati
sono uguali.
Quindi ci da la possibilità di vedere, come risultato di una interrogazione del database, tutti
i libri inseriti, anche quelli che non hanno una scheda autore associata.
Fig.13 - Seleziona il Tipo Join

Ripetiamo l'operazione per creare la relazione tra la tabella ANA_BIBILIOTECA e le tabelle


ANA_EDITORI, ANA_TIPO, e SCHEDE tutte con join di tipo 3.

Una volta completate le relazioni della tabella ANA_BIBILIOTECA passiamo a quelle della
tabella SCHEDE.

Clicchiamo sulla tabella SCHEDE e, come per la tabella ANA_BIBILIOTECA, creiamo la


relazione con le tabelle ANA_EDIZIONE ed ANA_GENERE, sempre con join di tipo 3.
Al termine dovremmo avere una vista delle relazioni come quelle in figura 14.

Fig.14 - Vista Relazioni

Usiamo le Maschere per gestire i dati.

Una volta creato il dB, occorre creare le maschere per l'inserimento dei dati nelle tabelle. Per il
corretto funzionamento del dB non è indispensabile questo passaggio, visto che è possibile gestire i
dati direttamente dalle tabelle, ma è consigliato per dare un aspetto più professionale e più
"ergonomico" al nostro lavoro.
Per prima cosa occorre creare le maschere per le tabelle di anagrafica. Tali maschere dovranno
consentirci la navigazione e le operazioni di amministrazione all'interno dei record.
Per creare una maschera andiamo nel menù Maschere del database e facciamo click su Crea una
maschera mediante una creazione guidata.
A questo punto parte il wizard che ci accompagnerà nella creazione della maschera.
La prima informazione da passare al wizard è da quale tabella intendiamo prendere i dati e quali
campi vogliamo mostrare.
Selezioniamo Tabella: ANA_AUTORE nel menù Tabelle/query e clicchiamo sul pulsante >> per
includere tutti i campi.

Fig.15 - Seleziona Campi Maschera

Cliccando su Avanti il wizard richiederà di specificare il tipo di layout da applicare alla maschera.
Il Giustificato è quello che soddisfa le nostre esigenze grafiche. La scelta del layout, così come la
seguente selezione dello stile, non hanno nessuna ripercussione sul funzionamento del dB, quindi è
possibile scegliere quello che più si avvicina ai nostri gusti.

Fig.16 - Seleziona Layout

Cliccando su Avanti possiamo, come già menzionato, scegliere lo stile da utilizzare. Per l'esempio
ho utilizzato lo stile Spedizione.

Fig.17 - Seleziona Style

Clicchiamo su Avanti ed impostiamo un nome alla maschera. Per convenzione ho messo una M_
davanti al nome della tabella di origine dati. Consiglio sempre di adottare delle convenzioni nei
nomi degli oggetti, magari in questo esempio non occorre, ma quando ci troviamo a gestire un
numero elevato di maschere, tabelle e query è sempre buona norma usare una nomenclatura che
indichi all'istante a cosa ci stiamo riferendo.
Fig.18 - Seleziona Titolo

Cliccando su Fine il wizard si chiude e si apre la maschera appena creata.

Fig.19 - Maschera

Risulta un po' spoglia, dovremmo arricchirla con qualche elemento aggiuntivo.

Chiudiamo la maschera e selezioniamo con un click nell'elenco delle maschere disponibili.


Clicchiamo quindi sul pulsante Struttura per modificare la struttura della maschera.
Proviamo a disporre i campi a nostro piacimento, ad inserire un titolo alla maschera, ad inserire in
piè di pagina il suggerimento per la navigazione dei record.

Fig.20 - Personalizziamo la Maschera

Possiamo anche disabilitare il controllo di alcuni campi. Ad esempio l'ID_AUTORE viene generato
automaticamente dal dB e sarebbe il caso che l'utente non abbia la possibilità di modificare
manualmente questo campo.
Per far questo facciamo doppio click sul campo che vogliamo disattivare. Si aprirà la casella delle
proprietà relative alla Casella di Testo ID_AUTORE. Nella scheda Dati impostiamo Abilitato a
No. La casella ID_AUTORE diventerà grigia e potremo solo visualizzare il contenuto senza poter
modificarlo.
Fig.21 - Disabilitiamo un Campo

Aggiungiamo ora qualche pulsante di comando.


Sempre utilizzando i wizard messi a disposizione da access possiamo inserire tutti i comandi che
vogliamo con pochi click di mouse.
Sconsiglio di creare i pulsanti per la navigazione all'interno dei record, sono già presenti nella status
bar della finestra della maschera, rischiamo di avere comandi ridondati.
Meglio concentrarci sulle operazioni sui record, come, ad esempio, la creazione, la modifica e la
cancellazione.

Per creare un'operazione sui record clicchiamo nella barra degli strumenti, sull'icona Pulsante di
Comando.

Fig.22 - Aggiungi Comando

Partirà il wizard Creazione Guidata Pulsante di Comando.


Selezioniamo dal menù Operazioni su record, quindi clicchiamo sul comando desiderato.
Nell'esempio ho inserito i comandi Aggiungi Nuovo Record, Annulla record, Salva Record ed
Elimina Record.

Fig.23 - Aggiungi Comando

Cliccando su Avanti possiamo scegliere se visualizzare un testo all'interno del pulsante o se


assegnare un'immagine significativa, selezionabile tra quelle disponibili in access o da un file
esterno.
Cliccando di nuovo su Avanti ci verrà chiesto di inserire il nome del comando. Diamo un nome
significativo e clicchiamo su Fine.

A questo punto il pulsante è creato, ripetiamo l'operazione per tutti i comandi che vogliamo inserire.

Quando la maschera ha un aspetto che ci soddisfa, salviamola e ripetiamo gli stessi passaggi per
creare le altre maschere per le tabelle anagrafiche.

Fig.24 - Maschera Completa

Dovremmo ottenere una serie di maschere come mostrato in figura 25.

Fig.25 - Tutte le Maschere


A questo punto siamo pronti per creare la maschera principale, quella della visualizzazione dei libri.
Questa maschera è un poco più complessa delle altre perché deve mostrare le informazioni che si
trovano su più tabelle.

Vediamo in ordine come creare la maschera.

Per prima cosa occorre creare una visualizzazione standard. Facciamo quindi partire il wizard per la
creazione della maschera e selezioniamo la tabella ANA_BIBILOTECA ed inseriamo tutti i campi
della tabella.

Fig.26 - Selezioniamo i campi


Come visibile in fig. 27 la maschera che abbiamo generato è incompleta e le informazioni che sono
mostrate non sono significative.

Fig.27- la maschera Standard

Occorre modificarla in visualizzazione struttura per aggiungere nuovi componenti e per renderla
esteticamente più accattivante.

Fig.28 - visualizzazione struttura

Per prima cosa occorre recuperare i dati dalla tabella SCHEDE. Per aggiungere nuovi campi
all'interno della maschera facciamo doppio click all'interno del quadratino in alto a sinistra nella
finestra della visualizzazione della struttura della maschera.
N.B. se si ha un office dal 2007 in poi, il quadratino non è visibile, si può entrare nella
visualizzazione premendo il tasto F4.

Fig.29 - doppio click per le proprietà o F4

Si apre il pannello delle proprietà della maschera, selezioniamo la scheda Dati e clicchiamo sul
pulsante ... al lato di Origine record.

Fig.30 - origine dati

Una volta aperto l'editor delle query selezioniamo la tabella SCHEDE e facciamo doppio click su
ogni campo della scheda per aggiungerlo alla maschera. Possiamo mettere il segno di spunta sulla
visualizzazione di tutti i campi ID, ad eccezione dell'ID_BOOK.
Fig.31 - l'editor della query

Vediamo come procedere all'inserimento delle Caselle Combinate. Queste caselle ci aiuteranno ad
associare al libro le informazioni che sono presenti nelle altre tabelle, semplicemente scegliendole
da un menù a tendina. In pratica se vogliamo specificare l'autore del libro, invece di scrivere
l'ID_AUTORE dentro il campo, cosa alquanto antipatica e difficoltosa, lo faremo scrivere
direttamente ad access in base alla scelta che opteremo all'interno della lista degli autori presenti
nel dB.

Il procedimento che stiamo per vedere può essere ripetuto per tutte le caselle combinate che
andremo ad inserire all'interno della maschera.

Per prima cosa occorre selezionare dal pannello degli strumenti l'oggetto Casella Combinata.

Fig.32 - inseriamo una casella combinata

Ci verrà richiesto da quale tipo di oggetto verranno prelevati i dati, selezioniamo le tabelle.

Fig.33 - ricerca da tabella

Scegliamo la tabella ANA_AUTORI


Fig.34 - scegliamo la tabella

ed inseriamo tutti i campi come mostrato in figura.

Fig.35 - inseriamo tutti i campi

Nella schermata successiva il wizard ci mostrerà come sarà visualizzata la tendina dei dati
all'interno della casella combinata.

Fig.36 - anteprima

Specifichiamo il nome del campo che sarà visualizzato nell'etichetta di testo che accompagnerà la
casella combinata all'interno della maschera.

Fig.37- specifichiamo il nome del campo

A questo punto la casella combinata è completa. Occorre però fare qualche altra operazione per
crearla come diciamo noi, perché siamo pignoli e le cose standard non tanto ci piacciono!

Fig.38 - la casella combinata


Deselezioniamo la casella combinata e facciamoci doppio click sopra, in questo modo si aprirà il
pannello delle proprietà del componente.

Fig.39 - pannello proprietà

Per prima cosa dobbiamo associare il controllo ad un campo. Questo creerà una relazione tra il
controllo della maschera ed un campo nella tabella. Al variare di uno varierà anche l'altro.

Per far questa associazione selezioniamo ID_AUTORE nella scheda Dati, Origine Controllo

Fig.40 - associazione campo

Sempre nella stessa scheda occorre modificare la QUERY, in pratica quel che faremo ora sarà unire
due campi in uno, per facilitare la lettura dei dati nella maschera.
Il componente Casella Combinata può visualizzare solo un campo all'interno del controllo. Se non
modifichiamo la QUERY ma lasciamo che i campi nella tendina siano due, vedremo nella casella
solo il primo campo, nel nostro caso solo il nome dell'autore. Per evitare questo uniamo i campi
NOME_AUTORE e COGNOME_AUTORE in un solo campo che chiameremo AUTORE.

Per far questo modifichiamo la query nel campo Origine Riga da

SELECT [ANA_AUTORE].[ID_AUTORE], [ANA_AUTORE].[NOME_AUTORE],


[ANA_AUTORE].[COGNOME_AUTORE] FROM [ANA_AUTORE]

SELECT [ANA_AUTORE].[ID_AUTORE], ([ANA_AUTORE].[NOME_AUTORE]& " "


& [ANA_AUTORE].[COGNOME_AUTORE] ) AS AUTORE FROM [ANA_AUTORE]

come mostrato in fig. 41.


Fig.41 - Cambiamo la QUERY

spostiamo ora nella scheda Formato ed impostiamo a due il numero delle colonne da considerare,
di cui una sarà ID_AUTORE che NON verrà visualizzato nella scheda ma inserito nella tabella,
l'altro sarà il campo fittizio che è l'unione dei due campi che ci interessano.

Fig.42 - consideriamo due colonne

Possiamo chiudere il pannello delle proprietà tornando alla visualizzazione della struttura.

Fig.43 - casella personalizzata

A questo punto la casella combinata è stata personalizzata.


Se abbiamo fatto tutto correttamente dovremmo poter vedere, una volta lanciata la maschera, una
lista come quella visibile in fig. 44

Fig.44 - casella personalizzata

Per completare la maschera dobbiamo ripetere le stesse operazioni per creare le caselle combinate
per i campi Tipo e Genere.

Logicamente essendo una sola colonna che ci interessa per questi due campi non abbiamo bisogno
di modificare la query ne di modificare il numero di colonne interessate, ci dobbiamo solo limitare
a prendere il campo che ci interessa dalla tabella desiderata e poi di associarlo al campo corretto.
Fig.45 - la maschera completata

Creiamo una Maschera per la navigazione nel dataBase.

Per facilitarci la navigazione all'interno delle maschere occorre creare una maschera principale da
cui poter selezionare l'operazione desiderata.

Per far questo andiamo nella gestione delle maschere e creiamo una nuova maschera in
visualizzazione struttura.

Fig.46 - la nuova maschera

All'interno della maschera posizioniamo un pulsante di comando che esegua l'apertura della
maschera.

Fig.47 - operazioni su maschera

Selezioniamo una maschera e clicchiamo su avanti

Fig.48 - selezioniamo la maschera


Selezioniamo Apri la maschera e visualizza tutti i record.

Fig.49 - tipo operazione

Possiamo scegliere se visualizzare un'icona o una scritta descrittiva.

Fig.50 - selezioniamo una icona

Creiamo un pulsante per ogni maschera in modo di avere la possibilità di operare su qualsiasi
maschera, proprio come in un pannellino di controllo.

Fig.51 - la maschera completata

Con la stessa tecnica creiamo un pulsante di chiusura maschera su ogni maschera del dB per poter
così ritornare nella maschera principale ogni volta che abbiamo concluso la sessione di lavoro nella
tabella specifica.

Impostiamo la maschera in esecuzione all'avvio del dB.

Possiamo costringere Access ad eseguire automaticamente all'avvio la maschera principale per la


navigazione tra le maschere, nascondendo tutti i menù. In questo modo possiamo dare un aspetto
più professionale ad dB ed evitare di fare delle modifiche accidentali.

Per eseguire la maschera all'avvio clicchiamo sul menù Strumenti e poi su Avvio...

Nella finestra che appare andiamo a selezionare la maschera principale e deselezioniamo tutti i flag
delle varie opzioni, per far partire access con lo stretto indispensabile.
Fig.52 - impostiamo la maschera in partenza

A questo punto il dB è pronto, non rimane che usarlo!

Fig.53 - il dB comletato in esecuzione

N.B. ho cercato di creare un dB facile da realizzare e da usare, affinché chiunque sia a digiuno di
Access con questo tutorial possa impararne i fondamenti. Questo file quindi, per quanto possa esser
ben progettato, non rappresenta un'applicazione ottimizzata, ma solo un piccolo dB per uso
casalingo. Access, così come tutti gli altri programmi della suite Office, consente di ottenere ottimi
risultati, a patto che ci si addentri nella programmazione VBA, che ho deliberatamente ignorato per
i motivi illustrati sopra. Spero che qualche lettore, con un po' di tempo a disposizione e con tanta
voglia di imparare, possa partire da questa base e apportare nuove funzioni e migliorie, magari
condividendo la sua esperienza con noi