Questo sito utilizza i cookie per personalizzare i contenuti e gli annunci (Google AdSense), fornire le funzioni dei social media (condivisione degli articoli) e analizzare il traffico (Google Analytics). Inoltre fornisce informazioni sul modo in cui utilizzi il sito alle agenzie pubblicitarie, agli istituti che eseguono analisi dei dati web e ai social media miei partner (Google). Il proseguimento nella navigazione implica un tacito assenso all'utilizzo dei cookies. Se non sei d'accordo sull'utilizzo, ti invito ad allontanarti da questo sito. Visualizza i dettagli.

Sabato 3 Dicembre 2016

Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 

logo.jpgApprofitto 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! ).

 
Tabella-ANA_AUTORE
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.

 

Chiave-Primaria
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

 

Tabella-ANA_EDITORI
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

 

tabella-ANA_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

 

tabella-ANA_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

 

tabella-ANA_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.

 

tabella-SCHEDE
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.

 

tabella-ANA_BIBLIOTECA
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.

 

genera-relazioni
Fig.9 - Genera Relazioni



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

 

Aggiungi-Relazione
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.

 

Lista-Tabelle-da-Relazionare-
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.

 

Nuova-Relazione
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.

 

Tipo-Join
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.

 

Vista-Relazioni
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.

 

Campi-Maschera
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.

 

Seleziona-Layout
Fig.16 - Seleziona Layout



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

 

Seleziona-Style
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.

Seleziona-Titolo
Fig.18 - Seleziona Titolo


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

 

Maschera
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.

 

Personalizziamo-la-Maschera
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.

 

Disabilitiamo-un-Campo
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.

 

Aggiungi-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.

 

Aggiungi-Comando
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.

Maschera-Completa
Fig.24 - Maschera Completa


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

Tutte-le-Maschere
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.

selezioniamo-i-campi
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.

maschera-Standard
Fig.27- la maschera Standard



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

visualizzazione-struttura
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.

doppio click per le proprietà
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.

origine-dati
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.

l'editor-della-query
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.

inseriamo una casella combinata
Fig.32 - inseriamo una casella combinata


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

ricerca-da-tabella
Fig.33 - ricerca da tabella


Scegliamo la tabella ANA_AUTORI

-scegliamo-la-tabella-da-cui-prelevare-i-dati
Fig.34 - scegliamo la tabella


ed inseriamo tutti i campi come mostrato in figura.

inseriamo-tutti-i-campi
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.

anteprima-casella-combo
Fig.36 - anteprima


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

specifichiamo-il-nome-del-campo
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!


la-casella-combinata
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.

pannello-proprietà
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

associazione-campo
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]

a

SELECT [ANA_AUTORE].[ID_AUTORE], ([ANA_AUTORE].[NOME_AUTORE]& " " & [ANA_AUTORE].[COGNOME_AUTORE] ) AS AUTORE FROM [ANA_AUTORE]

come mostrato in fig. 41.

Cambiamo-la-QUERY
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.

consideriamo-due-colonne
Fig.42 - consideriamo due colonne


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

casella-personalizzata
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

casella-personalizzata
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.

la-maschera-completata
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.

la-nuova-maschera
Fig.46 - la nuova maschera


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

operazioni-su-maschera
Fig.47 - operazioni su maschera


Selezioniamo una maschera e clicchiamo su avanti

selezioniamo-la-maschera
Fig.48 - selezioniamo la maschera


Selezioniamo Apri la maschera e visualizza tutti i record.

tipo-operazione
Fig.49 - tipo operazione


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

selezioniamo-una-icona
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.

la-maschera-completata
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.

impostiamo-la-maschera-in-partenza
Fig.52 - impostiamo la maschera in partenza


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

il-dB-comletato-in-esecuzione
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!