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.."
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! ).
- 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.
- ID_EDITORE come chiave primaria.
- NOME_EDITORE
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
Creiamo una tabella ANA_EDIZIONE con i campi
- ID_EDIZIONE come chiave primaria.
- DESC_EDIZIONE
Creiamo una tabella ANA_GENERE con i campi
- ID_ GENERE come chiave primaria.
- DESC_ GENERE
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.
- 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.
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.
Quattro Racconti
La mia prima opera narrativa, quattro storie brevi, i miei quattro Re, quattro racconti di fantasia, con forti tinte horror, per aiutarvi a non dormire...
- Se hanno ragione le religioni animiste, ogni oggetto ha una sua identità, una sua anima. E se gli oggetti in questione avessero un'indole maligna?
-
Siamo sicuri di voler affidare il nostro futuro all'intelligenza artificiale? Abbiamo la certezza che un giudizio assolutamente oggettivo e privo di vizi possa guidare la nostra specie verso tempi di pace e prosperità?Possiamo fidarci delle cure amorevoli di una fredda macchina??
- Una vita sfortunata, una serie di rimpianti che negli anni si accumulano, stratificano. Può la disperazione, per quanto intensa e profonda, prendere forma e divorarci dall'interno? Divenire un compagno di vita, tangibile, al nostro fianco mentre camminiamo, sul nostro grembo mentre siamo seduti, come un animale da compagnia??
-
Tra i bisogni primordiali, la necessità di assumere cibo è forse quello che più a contribuito alla nostra evoluzione.Quello che più fortemente ci spinge, ci motiva, ci dispera.La scarsità di cibo ci ha spinto in ogni angolo del mondo in cerca di terre fertili da coltivare, ha spinto la nostra intelligenza a crescere per poter trovare nuovi modi e tecnologie per rendere i campi più produttivi, ha spinto l'evoluzione delle strutture sociali grazie agli scambi economici tra villaggi e nazioni, ci ha fatto progredire.Ma spinge anche i nostri istinti più animaleschi.Un animale affamato è una belva sanguinaria e spietata.Ed un animale affamato ed intelligente come un essere umano è capace di tutto....
ISBN Libro:9788892305083
Anno pubblicazione:2023
Formato:11,4x17,2
Foliazione:144
Copertina:morbida
Interno:bn
- Genere: Narrativa / Letterature - horror
Distribuzione:
A questo punto avremo la vista di tutte le tabelle del dB aperte in una finestra.
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.
Il join è il tipo di relazione che vogliamo stabilire.
- 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.
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.
Per creare una maschera andiamo nel menù Maschere del database e facciamo click su Crea una maschera mediante una creazione guidata.
Selezioniamo Tabella: ANA_AUTORE nel menù Tabelle/query e clicchiamo sul pulsante >> per includere tutti i campi.
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.
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.
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.
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.
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.
Come visibile in fig. 27 la maschera che abbiamo generato è incompleta e le informazioni che sono mostrate non sono significative.
Occorre modificarla in visualizzazione struttura per aggiungere nuovi componenti e per renderla esteticamente più accattivante.
N.B. se si ha un office dal 2007 in poi, il quadratino non è visibile, si può entrare nella visualizzazione premendo il tasto F4.
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.
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!
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.
Se abbiamo fatto tutto correttamente dovremmo poter vedere, una volta lanciata la maschera, una lista come quella visibile in fig. 44
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.
Quattro Racconti
La mia prima opera narrativa, quattro storie brevi, i miei quattro Re, quattro racconti di fantasia, con forti tinte horror, per aiutarvi a non dormire...
- Se hanno ragione le religioni animiste, ogni oggetto ha una sua identità, una sua anima. E se gli oggetti in questione avessero un'indole maligna?
-
Siamo sicuri di voler affidare il nostro futuro all'intelligenza artificiale? Abbiamo la certezza che un giudizio assolutamente oggettivo e privo di vizi possa guidare la nostra specie verso tempi di pace e prosperità?Possiamo fidarci delle cure amorevoli di una fredda macchina??
- Una vita sfortunata, una serie di rimpianti che negli anni si accumulano, stratificano. Può la disperazione, per quanto intensa e profonda, prendere forma e divorarci dall'interno? Divenire un compagno di vita, tangibile, al nostro fianco mentre camminiamo, sul nostro grembo mentre siamo seduti, come un animale da compagnia??
-
Tra i bisogni primordiali, la necessità di assumere cibo è forse quello che più a contribuito alla nostra evoluzione.Quello che più fortemente ci spinge, ci motiva, ci dispera.La scarsità di cibo ci ha spinto in ogni angolo del mondo in cerca di terre fertili da coltivare, ha spinto la nostra intelligenza a crescere per poter trovare nuovi modi e tecnologie per rendere i campi più produttivi, ha spinto l'evoluzione delle strutture sociali grazie agli scambi economici tra villaggi e nazioni, ci ha fatto progredire.Ma spinge anche i nostri istinti più animaleschi.Un animale affamato è una belva sanguinaria e spietata.Ed un animale affamato ed intelligente come un essere umano è capace di tutto....
ISBN Libro:9788892305083
Anno pubblicazione:2023
Formato:11,4x17,2
Foliazione:144
Copertina:morbida
Interno:bn
- Genere: Narrativa / Letterature - horror
Distribuzione:
Per far questo andiamo nella gestione delle maschere e creiamo una nuova maschera in visualizzazione struttura.
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.
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!