- Dettagli
- Categoria: Informatica
- Creato Venerdì, 06 Maggio 2011 23:59
- Ultima modifica il Venerdì, 21 Settembre 2012 15:04
- Scritto da Claudio Romeo
LibreOffice Base: inserimento di dati da un elenco
Meglio cliccare che scrivere: è più comodo inserire i dati facendo clic su un elenco piuttosto che digitarli. Ecco come fare con LibreOffice e OpenOffice.org
Questa guida descrive come inserire i dati in una tabella di LibreOffice (o di OpenOffice.org: la procedura è identica) prelevandoli da un elenco facendo clic anziché scrivendoli da tastiera.
La comodità di questo tipi di inserimento è opinabile, poiché alcuni utenti si trovano meglio a scrivere piuttosto che a fare clic, tuttavia è indubbio che la maggior parte delle persone preferisce usare il mouse alla tastiera e che, comunque, la selezione di una voce da un elenco può avvenire anche mediante la tastiera stessa. Il vero vantaggio sta nel fatto che in questo modo si evitano errori di scrittura, errori che porterebbero a risultati disastrosi nel caso che i valori debbano poi essere rielaborati (contandoli, raggruppandoli eccetera).
Per descrivere la configurazione di Base affinché i dati siano introducibili da un elenco è stata ipotizzata una situazione molto semplice e fiabesca: il caso di una società di assistenza software che deve assegnare i turni ai propri dipendenti: sette giorni della settimana, sette dipendenti. Il lato fiabesco della faccenda sta nel fatto che la società è la Biancaneve SpA e i dipendenti sono Cucciolo, Mammolo, Eolo, Pisolo, Brontolo, Dotto e Gongolo.
Abbiamo creato perciò la tabella Giorni, la cui struttura è riportata nella Tabella 1. Essa è composta da tre colonne, delle quali la prima contiene il consueto ID come campo chiave (tipo di campo: Intero; valore automatico: Sì), la seconda il nome del giorno della settimana e la terza il nome dell’assistente assegnato al giorno in questione. I campi Giorno e Assistente sono di tipo Testo.
ID_Giorno | Giorno | Assistente |
0 | Lunedì | |
1 | Martedì | |
2 | Mercoledì | |
3 | Giovedì | |
4 | Venerdì | |
5 | Sabato | |
6 | Domenica |
La brutta notizia è che, agendo nella vista Dati Tabella di Base non è possibile inserire il nome dell’assistente prelevandolo da un elenco. La buona notizia è che è invece possibile farlo usando i formulari.
I formulari (o maschere, nel linguaggio di Microsoft Access) tecnicamente sono documenti di Writer, in cui vengono importati i campi appartenenti a un database. Fortunatamente non bisogna uscire da LibreOffice Base per costruire un formulario: è sufficiente sfruttare le funzioni di cui è dotato lo stesso Base.
Facendo clic sul pulsante Formulari del pannello verticale sinistro (nella finestra principale di Base) si ha la possibilità di creare e gestire i formulari, basandoli sulle tabelle appartenenti al database aperto. La procedura guidata consente di scegliere sia il tipo di formulario sia i campi che devono comparire in esso.
Nella Figura 1 è mostrato il formulario scelto da noi. Non è detto che debba essere per forza uguale: è solo un esempio. L’importante è che contenga il campo Assistente.
L’indicazione Sola lettura che si legge nella barra del titolo si riferisce al fatto che il formulario è aperto nella modalità di introduzione dei dati, non nella modalità di modifica della struttura. I dati modificati attraverso il formulario sono effettivamente modificati nella tabella. Per gestire i dati mediante un formulario è sufficiente fare doppio clic su di esso.
Se si usa la procedura guidata per creare il formulario, per ogni campo del database vengono creati due controlli: il campo con i dati e un testo fisso, che funziona da etichetta. In modalità di modifica, i due controlli sono raggruppati, perciò facendo clic su uno dei due vengono selezionati entrambi come unico oggetto.
Per selezionare solo un elemento del raggruppamento, basta fare clic su di esso mentre si tiene premuto CTRL. La Figura 2 mostra proprio la selezione del solo campo con i dati. Si noti che è stata resa visibile la finestra delle proprietà (è sufficiente fare clic destro sul controllo e scegliere Campo di controllo dal menu contestuale), nella cui barra del titolo è riportato il tipo di controllo attualmente selezionato: nell'esempio si tratta di un campo di testo.
Ora che sono state gettale le fondamenta per l’uso dei formulari, è possibile abilitare la funzione di inserimento dei dati scegliendoli da un elenco: ciò che occorre fare è trasformare il campo di testo in una casella di riepilogo.
Per far ciò la procedura è banale: basta infatti fare clic destro sul controllo selezionato che si vuole trasformare (assicurandosi che sia selezionato solo esso, non tutto l’oggetto raggruppato) e scegliere poi dal menu contestuale Sostituisci con > Casella di riepilogo.
Adesso non resta che indicare a Base quali sono i valori da mostrare nell’elenco della casella di riepilogo. In realtà sono possibili due strategie: costruire un elenco di valori interni alla casella stessa e usare i dati provenienti da un campo del database. Esamineremo entrambe le strade.
Valori interni alla casella di riepilogo
Questa soluzione è quella predefinita e forse la più semplice per chi non ha grande dimestichezza con i database. A noi, istintivamente, non piace molto, ma se il database non è complesso e non vi sono particolari relazioni tra tabelle né necessità di aggiornamenti frequenti dei valori dell’elenco, allora effettivamente è una strategia rapida che non richiede lavorazioni particolari.
Per comporre l’elenco dei valori ammessi (in questo caso, dei nomi degli assistenti), bisogna attivare la modalità modifica del formulario, selezionare la casella di riepilogo, evidenziarne le proprietà e passare alla casella Voci dell’elenco della scheda Generale. In questa casella vanno inserite le voci dell’elenco, una per riga. Attenzione, però: per andare su una riga nuova all’interno della casella non bisogna premere Invio (si chiuderebbe l’elenco della casella), ma la combinazione Maiusc+Invio.
Scritto l’elenco, le voci appaiono su un’unica riga, racchiuse ognuna dai doppi apici e separate da un punto e virgola. Sottolineiamo il fatto che, per la compilazione dell’elenco, non bisogna inserire né doppi apici né punti e virgola, ma solo andare a capo dopo ogni voce mediante Maiusc+Invio.
Bisogna poi passare alla casella Apribile e selezionare Sì, altrimenti la casella di riepilogo, pur contenendo l’elenco, non potrebbe essere aperta. Infine è bene impostare il numero delle righe dell’elenco che devono essere mostrate quando si apre la casella di riepilogo, agendo sulla casella Numero delle righe. Se l’elenco non è lungo (come nel caso dell’esempio), si può anche impostare un valore che le mostri tutte.
Per scrupolo, conviene passare alla scheda Dati e verificare che la casella Tipo del contenuto della lista sia impostata su Elenco valori. A questo punto, si salvi il database e si apra il formulario nella modalità di introduzione dei dati. Il campo Assistente consente ora l’inserimento di dati provenienti da un elenco interno, come mostrato nella Figura 3.
Un piccolo approfondimento: è possibile mascherare i veri valori immessi nel database facendo in modo che l’utente scelga un valore ma nel database ne venga memorizzato uno diverso. Per esempio, se si richiede la valutazione di un articolo di Linux Pro i valori presenti nella casella Voci dell’elenco possono andare da Fa schifo a Meglio del sesso, con altre otto voci tra di esse. Tuttavia, per normalizzare i dati in vista di operazioni di analisi, è possibile che la scelta dell’utente sia automaticamente convertita in valore numerico, da 1 a 10. Per far ciò è sufficiente inserire le voci da 1 a 10 nell’elenco della casella Contenuto elenco della scheda Dati, facendo attenzione a rispettare la corrispondenza delle voci. Ovviamente, in un caso come questo occorre calibrare opportunamente il tipo di dato (numerico o testuale) che è possibile inserire nel campo della tabella.
Valori esterni alla casella di riepilogo
Far sì che nell’elenco appaiano valori provenienti dall’esterno della casella di riepilogo vuol dire acquisire dati da una tabella, da una query (cioè una ricerca o, meglio ancora, un’interrogazione) o da un’istruzione specifica SQL.
In questo esempio abbiamo creato una nuova tabella, chiamata Assistenti e visibile nella Figura 4.
Va notato che è necessario che i valori che devono apparire nell’elenco della casella di riepilogo devono essere contenuti nella prima colonna della tabella. Ciò può essere fonte di malfunzionamenti se la costruzione delle tabelle avviene secondo la prassi normale, che prevede l’uso del primo campo come ID. Tuttavia, per ora, è bene seguire questa strada.
Rispetto alla procedura concernente l’uso di valori interni alla casella di riepilogo, bisogna mantenere vuota la casella Voci dell’elenco della scheda Generale. Nella scheda Dati bisogna impostare su Tabella la casella Tipo del contenuto della lista. Nella casella Contenuto elenco bisogna scegliere il nome della tabella da cui prelevare i dati (nel nostro esempio, Assistenti) e nella casella Campo collegato bisogna scegliere 1. Attenzione: contrariamente a quanto si potrebbe pensare, la casella Campo collegato non determina i valori mostrati nell’elenco della casella di riepilogo (che sono sempre quelli della prima colonna della tabella scelta), ma i valori che verranno effettivamente memorizzati nel database; l’uso di questa funzione verrà descritta nel paragrafo dedicato alle tabelle in relazione.
Popolando la tabella Giorni per mezzo dell’omonimo formulario, si possono notare due particolarità. La prima è che l’elenco degli assistenti viene visualizzato nel formulario nello stesso ordine con cui le voci sono state introdotte; questo fatto è naturale. La seconda è che in realtà nella tabella Giorni non viene memorizzato il nome dell’assistente, ma il suo numero di record (che, concettualmente, è cosa diversa dall’ID); ciò può invece essere completamente inaspettato e provocare malfunzionamenti se non si sa come gestire la situazione: è pur vero che, agendo semplicemente dal formulario, tutto appare trasparente per l’utente (che si trova a scegliere e a visualizzare solo i nomi degli assistenti), ma è anche vero che se si va ad esaminare la tabella Giorni ci si trova di fronte a una serie di numeri nella colonna Assistenti che sarebbe ben poco comprensibile e altrettanto gestibile.
Per rendere più gestibile la situazione è opportuno usare le interrogazioni e le relazioni tra tabelle.
Una prima interrogazione
Un’interrogazione è una ricerca per trovare i record che rispondono a un criterio. Ma le interrogazioni sono anche uno strumento per disporre i dati in un formato un pochino più gestibile, senza modificare i dati stessi. Parlando in termini molto impropri, le interrogazioni sono elenchi di dati filtrati e ordinati secondo le impostazioni desiderate. Va specificato che un’interrogazione non contiene alcun dato, ma solo i criteri dell’interrogazione stessa e che i dati vengono ricercati ogni volta che si avvia un’interrogazione.
Nel nostro caso, l’interrogazione serve ha due scopi: disporre di un elenco che sia più gestibile dal formulario e avere la lista degli assistenti ordinata alfabeticamente. Per ottenere questi risultati occorre creare l’interrogazione Query_Assistenti, la cui struttura è mostrata nella Figura 5.
Si noti che è impostato l’ordinamento crescente, cosa che permetterà la visualizzazione degli assistenti in ordine alfabetico nella casella di riepilogo.
Creata e memorizzata la ricerca, si possono modificare opportunamente nel formulario le proprietà della casella di riepilogo. Operando nella scheda Dati, la casella Tipo del contenuto della lista va impostata su Query, e la casella Contenuto elenco va impostata su Query_Assistenti.
Con queste impostazioni, nel formulario è possibile scegliere il nome dell’assistente dall’elenco della casella di riepilogo; l’elenco è ordinato alfabeticamente e nella tabella Giorni viene inserito il nome dell’assistente scelto.
A questo punto, il database è funzionante e per modificare l’elenco degli assistenti basta agire sulla tabella Assistenti: questa procedura è senz’altro più comoda e sicura che modificare l’elenco interno della casella di riepilogo del formulario. Tuttavia c’è spazio per un’ulteriore miglioria.
Tabelle in relazione
Ora che il costo in gigabyte dei dischi rigidi è in picchiata, potrebbe sembrare superfluo parlare di risparmio di bit, tuttavia struttura un database in modo che sia più compatto possibile è un esercizio che torna sempre utile: abitua a ragionare in termini di ottimizzazione, cioè di abitudine mentale che può rivelarsi fondamentale quando ci si troverà a gestire grandi quantità di dati.
Nel nostro esempio, prendiamo in considerazione la colonna Assistenti della tabella Giorni: questo campo è di tipo Testo, il che significa che è stata assegnata una lunghezza standard, capace di contenere il nome più lungo dell’elenco e anche quelli che dovessero essere aggiunti (il fatto che si sia accettato il valore predefinito non è importante: è il concetto che conta). Per ogni record viene perciò occupato su disco tanto spazio quanto è quello assegnato al campo: uno spreco enorme, visto che sono più i byte inutilizzati di quelli usati effettivamente.
Ma a questa situazione si può facilmente porre rimedio. Anziché impostare il campo come Testo, basta impostarlo come Intero, senza però attivare il valore automatico. In questo modo, il valore che esso conterrà sarà semplicemente un numero intero, non un testo, che perciò usa molti meno bit su disco. Ma quale numero inserire?
In realtà, nella tabella Assistenti ogni assistente è già caratterizzato da un ID, che è appunto un valore di tipo Intero. È perciò sufficiente istruire il database in modo che dalla casella di riepilogo si scelga il nome dell'assistente ma che nella gabella Giorni venga memorizzato il relativo ID. Poi basta costruire una vista in modo che si abbia una panoramica in cui compaiano i dati in forma umana e non numerica, che sia cioè facilmente interpretabile. Procediamo a piccoli passi.
Prima di tutto bisogna modificare il tipo di campo della colonna Assistenti nella tabella Giorni, rendendolo Intero e senza valore automatico.
Poi bisogna mettere in relazione le tabelle Giorni e Assistenti. La relazione è costruita tra il campo Assistente della tabella Giorni e il campo ID_Assistente della tabella Assistenti. È indispensabile che i due campi siano dello stesso tipo (in questo caso Intero). Per costruire la relazione si impartisce il comando Strumenti > Relazione, si aggiungono alla finestra le due tabelle in questione e si trascina il campo ID_Assistente della tabella Assistenti sul campo Assistente della tabella Giorni. La relazione che viene costruita è di tipo uno-a-molti ed è illustrata nella Figura 6.
Bisogna ora modificare l’interrogazione Query_Assistenti affinché visualizzi anche la colonna ID_Assistente: basta trascinare nella struttura della ricerca il campo in questione.
Data la semplice struttura della tabella d’esempio, non è necessario apportare modifiche al formulario: tutto funziona così com’è. Si veda però il box “Campo collegato” per maggiori informazioni.
Con questa configurazione, nel formulario si scelgono i nomi degli assistenti, ma nella tabella Giorni vengono memorizzati i corrispondenti ID.
Come fare per avere una panoramica di tutti i giorni della settimana con gli assistenti assegnati a ogni giorno, in formato testuale? Si costruisce una vista: bisogna selezionare Tabelle nel riquadro laterale del database e fare clic su Crea vista.
La creazione di una vista è simile a quella di un’interrogazione. Nel nostro caso, la configurazione è quella mostrata nella Figura 7.
La vista è stata salvata con il nome Turni e compare tra le tabelle. Un doppio clic e i dati vengono visualizzati (Figura 8).
Le viste possono essere usate per creare interrogazioni e compilare rapporti, al pari di qualunque tabella. I dati di una vista non possono però essere modificati.
I file di esempio
Potete scaricare i file con gli esempi riportati nell’articolo.
Il file Sorgente_dati_0.odb contiene il database con il formulario Giorni appena creato, quello visibile nella Figura 1.
Il file Sorgente_dati_1.odb contiene il database in cui il formulario Giorni contiene la casella di riepilogo anziché il campo di testo per il nome dell’assistente.
Il file Sorgente_dati_2.odb contiene il database in cui la casella di riepilogo è stata configurata in modo da contenere un elenco interno di valori, come nella Figura 4.
Il file Sorgente_dati_3.odb contiene il database in cui è stata creata l’interrogazione Query_Assistenti, mostrata nella Figura 5, cui fa ora riferimento il formulario.
Il file Sorgente_dati_4.odb contiene il database finale.