INDICE 1 Introduzione 7 Creazione/Apertura di un Database 13 Le Tabelle Creazione di Tabelle. Modifica di Tabelle. Caricamento/Modifica di Tabelle Eliminazione di Tabelle Le Relazioni (37) La creazione di relazioni La visualizzazione, la modifica a la cancellazione di relazioni 47 Le Query (Viste) Autocomposizione query Altri tipi di query Query di comando Join (relazioni) Query parametriche Considerazioni generali sulle query 71 Le Maschere Costruzione di maschere semplici (su una sola tabella/query) Costruzione di maschere su più tabelle/query Modifica e cancellazione di maschere e sottomaschere Utilizzo di maschere. Per approfondire – considerazioni e suggerimenti su alcuni aspetti emersi durante le prove Costruzione di maschere contenenti oggetti (bottoni, ...) 105 I Report (Le Stampe) Costruzione di report semplici Costruzione di report su più tabelle/query Modifica e cancellazione di report Utilizzo dei report Per approfondire – considerazioni e suggerimenti su alcuni aspetti emersi durante le prove Costruzione di report contenenti oggetti (Text Box, separazione di pagine, ...) Costruzione di report a più colonne – cenni Introduzione Sicuramente la gestione delle banche dati elettroniche è uno dei nodi cruciali cui le aziende, gli enti pubblici e le grosse organizzazioni in genere rivolgono, oggi, la loro attenzione. Questo perchè abbiamo a disposizione, sempre più, grandi quantitativi di informazioni relative a persone o cose (i dati) sui quali siamo chiamati a lavorare di continuo sia per l’aggiornamento della banca dati sia per la interrogazione e interpretazione dei dati che abbiamo a disposizione; inoltre diventa sempre più cruciale la rapidità con cui riusciamo ad ottenere risposte significative alle domande che ci poniamo in riferimento alla nostra banca dati, in modo da poter meglio comprendere lo stato delle cose passate e presenti, e, quindi, pianificare e progettare al meglio il nostro futuro. Quanti studenti si sono immatricolati negli anni scorsi? quanti si sono laureati? quanti lavorano? qual’è l’età media del personale? come è distribuito il personale in base alla categoria? Sono solo alcuni esempi di domande alle quali solo un software di database può rispondere rapidamente e con precisione. Quale strumento utilizzare per la gestione di una banca dati elettronica? Sicuramente un software creato appositamente per questo scopo e, oggi per fortuna, ve ne sono molti. Noi abbiamo scelto Microsoft Access per due ragioni: uno, perché è tra i software più utilizzati al mondo; due, perché coniuga la facilità di utilizzo con caratteristiche di gestione dati molto sofisticate, spesso in linea con quelle di prodotti molto più professionali e, pertanto, molto più difficili da usare. Microsoft Access si presta bene sia per un utilizzo mono-utente sia per un utilizzo in multi-utenza, giacchè richiede, in ogni caso, una fase di installazione molto semplice. Introduzione L’obiettivo che ci siamo posti con questo lavoro è non solo la illustrazione delle funzionalità di base di Microsoft Access, in accordo con gli standard previsti per la Patente Europea sul Computer, ma come questo strumento debba essere utilizzato al meglio nella realtà lavorativa di tutti i giorni, per esempio in un Ufficio virtuale come quello da noi creato per gli esempi di questo lavoro, affinché sia più semplice e il più breve possibile il percorso che porta al buon utilizzo di Microsoft Access e, soprattutto, alla comprensione dei concetti fondamentali che stanno alla base di tutti i software per la gestione di database. Cos’è un database? Potremmo definire un database (base-di-dati o banca dati) un archivio elettronico? Sì, in parte; certamente una banca dati è un archivio memorizzato su un supporto tipo hard disk, ma ciò non è sufficiente per caratterizzare un database. Vediamo, posso memorizzare le informazioni anagrafiche dei clienti della mia azienda in un file di tipo Word? Beh certamente sì ma… non ci faccio gran chè, non posso generare le fatture automaticamente dagli ordini, non posso sapere il fatturato di ogni cliente… questo perché le informazioni in un file di testo non sono “tipizzate”, non sono cioè strutturate e raccolte per “tipi”; allora vediamo se con un foglio elettronico (tipo Excell) posso gestire una banca dati visto che Excell offre la possibilità di definire bene le informazioni suddividendole per tabelle e, all’interno delle tabelle, di definire il tipo di dato (colonna), per esempio data, numerico, testuale, booleano. Inoltre un foglio elettronico mi dà la possibilità di definire le formule; per esempio, posso sommare automaticamente i dati di una colonna, calcolare percentuali ed altro ancora… insomma mi consente, in qualche modo, di “elaborare” le informazioni e, quindi, “interpretare” i dati. Bene, potremmo dire, a questo punto, che un foglio elettronico è un 2 La Mongolfiera base di dati software di database? Direi ancora di no; manca un requisito fondamentale per definire un software per la gestione di database: la possibilità di definire le “Relazioni” tra i dati. Questo requisito è fondamentale quando parliamo di database. Le “Relazioni” insieme alla “tipizzazione” delle informazioni, alla possibilità di definire informazioni “Chiave”, alla possibilità di utilizzare linguaggi di interrogazione dei database (SQL) sono, dunque, le caratteristiche principali di Microsoft Access e di tutti gli altri software per la gestione di database. Le relazioni mi consentono di: • evitare la ridondanza delle informazioni il che porta ad importanti conseguenze: riduzione delle dimensioni complessive della banca dati con conseguente miglioramento delle prestazioni del sistema di elaborazione; diminuzione degli errori nella fase di dataentry (immissione dei dati nella banca dati); diminuzione del tempo necessario al dataentry • interrogare le informazioni utilizzando i più svariati punti di vista, il che equivale ad avere risposte sempre esaurienti e questo mi sembra essere l’obiettivo principale per cui utilizzare una banca dati • ottimizzare i tempi di risposta delle interrogazioni (Query). Manca ancora una caratteristica per definire un software di database: la condivisione dei dati. Tipicamente un software di database mi consente di lavorare sulla stessa banca dati in contemporanea con altri utenti della rete. Ecco, dunque, un altro buon motivo per utilizzare un software di database: le informazioni da me raccolte vengono messe a disposizioni di altri utenti e viceversa; in questo modo tutti lavoriamo meglio poiché oltre alle nostre risorse abbiamo accesso alle risorse degli Università degli Studi di Bari 3 Introduzione altri e da questa situazione tutti ne traggono vantaggio. Naturalmente la condivisione delle informazioni impone anche la protezione delle informazioni stesse; infatti la gestione della “protezione” di un database è un’altra caratteristica di un software per database. 4 La Mongolfiera Creazione/Apertura di un Database Creazione/Apertura di un Database Per lanciare il programma Microsoft Access, dopo aver cliccato sul pulsante Start selezionare alla voce Programmi l’icona interessata, così come indicato nella figura sottostante. Base di Dati Access si presenta con una finestra di scelta guidata dove è necessario sele– zionare l’opzione desiderata, ovvero si ha la possibilità di creare un database vuoto o utilizzare gli strumenti di autocomposizione (progetti, pagine e creazioni guidate…), inoltre si può scegliere di aprire un lavoro preceden– temente salvato mediante l’apertura di un file esistente e seguire le indicazioni che varieranno in funzione della scelta fatta. Per creare un nuovo database non utilizzando la procedura precedentemente illustrata: • selezionare dal menù File | Nuovo. Quindi selezionare Database nella linguetta Generale della successiva finestra di dialogo (dialog box) • nella Finestra (dialog box) Salva nuovo database fornire un nome ed un percorso (directory o cartella) dove piazzare il nuovo database e fare click sul pulsante Crea • verrà mostrata la classica finestra con i 6 oggetti classici di un database Access: Tabelle, Query, Maschere, Report, Macro, Moduli. A 8 La Mongolfiera creazione/apertura di un Database questi si aggiunge l’oggetto Pagine introdotto con la nuova versione. Tutti questi oggetti sono radunati all’interno del gruppo Oggetti. Università degli Studi di Bari 9 Base di Dati Per aprire un database precedentemente creato: • selezionare dal menù File | Apri • dalla relativa finestra di dialogo (dialog box) selezionare il database da aprire • confermare mediante il bottone Apri Per chiudere un database senza chiudere il programma, eseguire il comando File | Chiudi. Per uscire da Access eseguire invece: File | Esci. 10 La Mongolfiera Le Tabelle Le Tabelle Le tabelle sono l’elemento base su cui si poggia un database, perché contengono “i dati” utili allo svolgimento delle quotidiane attività lavorative; naturalmente sarebbe troppo restrittivo parlare delle tabelle solo come un insieme di informazioni disposte a caso; il database, come si è appreso nell’introduzione di questo manuale è, al tempo stesso, l’organizzazione stessa dei dati. Come accade nella realtà, non ci sogneremmo mai di disporre i fascicoli del personale a caso in un grande armadio, non fosse altro per la rintracciabilità degli stessi fascicoli; di qui la necessità di organizzare in maniera logica i documenti, è indispensabile per garantire una corretta organizzazione del lavoro. Per analogia, nasce la necessità di “progettare” un archivio elettronico affinché possa non solo agevolare l’inserimento e la ricerca delle informazioni, ma anche rendere il lavoro altamente produttivo, permettendo “interrogazioni” “mirate” ai fabbisogni specifici del momento. Vediamo se è possibile dare delle regole di massima per bene impostare la creazione delle tabelle. Per cominciare è opportuno fare una attenta analisi dei dati a disposizione e dei problemi che si vogliono risolvere attraverso la gestione di un database; questo naturalmente è uno sforzo concettuale fondamentale che va affrontato in maniera prioritaria, al di là delle conoscenze specifiche sull’utilizzo di qualsivoglia software di gestione di database. Naturalmente gli esempi proposti in questo manuale, rappresentano un semplificazione estrema di problematiche molto complesse, al fine di meglio comprendere i concetti base della gestione di Base di Dati un database, e non sono, pertanto, una soluzione reale a problematiche concrete. Ipotizziamo di voler informatizzare le attività degli Uffici Personale di una Università. Cosa necessita? Sicuramente servono le informazioni anagrafiche relative a tutti i dipendenti (nome, cognome, data di nascita, indirizzo, telefono, categoria di inquadramento, luogo di servizio… ecc.); informazioni sulle strutture di lavoro (Dipartimenti, Facoltà… ecc.), parametri relativi alle retribuzioni. Dopo aver “censito“ le informazioni, queste vanno raggruppate per categorie omogenee che compongono appunto le “tabelle” del database; a volte la progettazione e la composizione delle tabelle possono risultare particolarmente impegnative, perché non bisogna mai perdere di vista: • l’obiettivo finale del lavoro • gli scopi principali per i quali stiamo progettando una banca dati. Nel nostro esempio avremo: ANAG: tutte le informazioni anagrafiche relative al personale SEDI: tutte le informazioni anagrafiche relative alle strutture della mia Università STIPENDI: informazioni sui cedolini paghe del personale FERIE: periodi di ferie goduti dal personale MESI: tabella di servizio contenente i mesi dell’anno Una volte definite le tabelle, è necessario definire per bene le informazioni contenute all’interno di una tabella; informazioni omogenee si definiscono in “campi”. I “campi” sono simili a quello che in un foglio elettronico vengono chiamate “colonne”, con la differenza sostanziale 14 La Mongolfiera Le Tabelle che, in un database, è indispensabile fornire ulteriori informazioni relative al “tipo” di campo. Le informazioni sono contenute in “record” (insieme di più campi); i “record” rappresentano le “righe” della tabella del foglio elettronico che si è presa come esempio. In una tabella Anagrafica del personale, un “record” racchiuderà tutti i dati relativi ad un dipendente (vale a dire la “singola scheda” dello “schedario” anagrafico). Ma perché definire così rigidamente i “tipi” dei campi? Questa impostazione, che a prima vista può sembrare troppo rigida, serve in realtà a garantire che i dati inseriti nel database siano corretti e validi. Inoltre, per eseguire delle operazioni sui dati è necessario che gli stessi siano tutti dello stesso “tipo”; è sicuramente impossibile “sommare” il numero 100 alla stringa “Pippo”. Ad ogni modo, vi è la possibilità di trattare dati in modo “generico”; per questo scopo useremo il tipo di campo denominato “Memo”; l’uso di questo tipo di dato è in genere sconsigliato ma è tuttavia utile per memorizzare informazioni generiche come, ad esempio, i commenti. Ovviamente sui dati di tipo “Memo” non è possibile effettuare alcun tipo di elaborazione. Va aggiunta, ora, una nozione importante; si è accennato alle relazioni e, a questo proposito, si è detto che esse sono l’elemento che maggiormente caratterizza un database rispetto ad altre forme di archiviazione elettronica; bene, affinché si possano “relazionare” i dati contenuti in tabelle diverse, è fondamentale che i dati di una tabella siano “univocamente” identificati mediante uno specifico campo; in generale è estremamente conveniente utilizzare, per questo scopo, dati di tipo numerico e, nel caso di Microsoft Access, è buona norma utilizzarne uno Università degli Studi di Bari 15 Base di Dati denominato “contatore” al quale normalmente viene assegnato una “chiave” principale, detta anche “indice”. Come meglio si espliciterà più avanti, il contatore viene incrementato automaticamente ad ogni nuovo inserimento di un record, in modo da garantire la “univocità” della identificazione di un record. Inoltre si consiglia il più possibile, in fase di progettazione di un database, la scomposizione delle informazioni in “tabelle” onde favorire la maggiore elasticità possibile alle “interrogazioni” (Query) tenendo sempre d’occhio lo scopo per il quale si sta progettando il database, anche in funzione di esigenze che potrebbero scaturire nel futuro. 16 La Mongolfiera Le Tabelle Una volta lanciato il programma di gestione di basi di dati -Microsoft Access- è necessario creare ed impostare le tabelle in quanto esse, come abbiamo già visto nelle pagine precedenti, sono la vera raccolta dei dati ed il loro insieme costituisce lo schema logico del database. Per operare con le tabelle, è necessario scegliere dall’elenco degli Oggetti della finestra del database, la voce Tabelle. Vengono proposte tre possibilità: Crea una tabella in visualizzazione struttura, Crea una tabella mediante creazione guidata, Crea una tabella mediante l’immissione di dati. Cerchiamo brevemente di capire le differenze tra le tre scelte proposte: • con la scelta Crea una tabella in visualizzazione struttura: si otterrà l’apertura di una finestra in cui, nella parte superiore, si indicano i nomi e i tipi di campo e nella parte inferiore se ne definiscono le proprietà. Questa, è la maniera che permette di definire in maniera più precisa e dettagliata una tabella; sarà inoltre Università degli Studi di Bari 17 Base di Dati possibile, ove se ne presentasse la necessità, accedere anche successivamente alla struttura di una tabella • con, Crea una tabella mediante creazione guidata: si può costruire una tabella a partire da alcuni modelli esistenti; questo è il metodo più semplice di creare una tabella, ma è anche la modalità che rende alquanto laboriosa la personalizzazione • la scelta, Crea una tabella mediante l’immissione di dati: permette l’inserimento diretto dei dati in un foglio riga-colonna (tipo excel). Access propone inizialmente nomi generici ai campi (Campo1, Campo2 ecc) ma consente in ogni momento di personalizzare il nome e la tipologia di ciascun campo. Una volta capite le differenze esistenti tra le varie scelte, si suggerisce di selezionare, nella relativa finestra di dialogo, Visualizzazione struttura e confermare con Apri. Compare la finestra di creazione di una tabella in visualizzazione struttura. Nella prima colonna Nome Campo fornire il nome del campo relativo ai dati che si intendono inserire; come è facile intuire ad ogni riga corrisponde un nuovo e diverso nome campo. Nella seconda colonna Tipo dati si specifica il tipo del campo. Access prevede nove tipi di dati, tra i quali l’utente può scegliere quello più adatto ai suoi scopi. Ognuno di essi, oltre che da una dimensione, è caratterizzato da alcune 18 La Mongolfiera Le Tabelle proprietà, che possono essere impostate nel secondo riquadro che si visualizza dopo aver scelto il tipo di campo da dove è possibile personalizzare la memorizzazione, la gestione e la visualizzazione dei dati. E’ evidente che alcune tipologie di campo saranno più utilizzate di altre, come i campi di tipo Testo, Numerico, Data/Ora, Contatore, Oggetto OLE (per inserire oggetti, ad esempio immagini); di seguito saranno elencate alcune delle proprietà rimandando alla guida in linea o a manuali specialistici la consultazione analitica e dettagliata di tutte le proprietà. Per riassumere brevemente, è possibile tra l’altro: • per tutti i tipi di campo stabilire il formato, indicare se il campo in questione è indicizzato (con o senza possibili duplicati di chiave) e se l’inserimento dei dati è obbligatorio • per il tipo Testo stabilire la dimensione in caratteri, il valore predefinito…(Approfondire all’occorenza le altre caratteristiche) • per il tipo Numero inserire la dimensione che può assumere, principalmente i seguenti valori: intero, intero lungo, precisione singola (numeri decimali), precisione doppia (numeri decimali); il numero di posizioni decimali…(Approfondire all’occorenza le altre caratteristiche) • Per il tipo Data/Ora indicare i vari formati della data/ora. • Per il tipo Contatore stabilire la dimensione (intero lungo); i nuovi valori possono essere impostati ad incremento (ogni nuovo record avrà un numero progressivo superiore di uno al precedente caricato) o casuale (i numeri vengono generati casualmente in modo Università degli Studi di Bari 19 Base di Dati però da garantire l’univocità del valore del campo); l’opzione più usata è incremento. Nella terza colonna (descrizione) è possibile mettere un commento al campo a puro scopo documentativo. Per riassumere graficamente: 20 La Mongolfiera Le Tabelle Dopo aver analizzato la finestra di visualizzazione struttura e aver inserito le impostazioni desiderate è possibile: editare (modificare) dei valori impostati in precedenza spostare un campo mediante una operazione di trascinamento (drag) cancellare un campo: selezionare il campo e successivamente eseguire il comando Modifica | Elimina. Università degli Studi di Bari 21 Base di Dati Inserire un campo: selezionare il campo prima del quale si vuole l’inserimento; eseguire la sequenza Inserisci | Righe. Creare/Modificare gli indici (anche su più campi): eseguire Visualizza | Indici. A questo punto appare una finestra nella quale: • nella prima colonna si indica il nome dell’indice • nella seconda colonna si inserisce il nome del campo che contribuisce all’indice (per gli indici multicampo si compilano più righe nella seconda colonna senza ricompilare la prima) • nella terza colonna si indica il criterio di ordinamento • In basso alla finestra è possibile, in questa fase, indicare se un’indice è univoco (si/no) o indicare che un certo indice (anche 22 La Mongolfiera Le Tabelle multicampo) sia la chiave primaria della tabella (in questo caso l’indice dovrà anche essere univoco). Attribuire una chiave primaria alla tabella: selezionare il/i campo/i per la chiave primaria (per selezionare più campi usare il trascinamento del mouse oppure i tasti SHIFT e CTRL durante la/le selezione/i); dare il comando Modifica | Chiave primaria. Si ricordi che la chiave primaria è l’elemento privilegiato per costruire relazioni. Uscita: chiudendo la finestra di creazione della tabella. Access allora chiede se si vuole salvare la struttura della tabella e chiede anche (la prima volta) quale nome attribuire alla tabella medesima. Università degli Studi di Bari 23 Base di Dati Modifica di Tabelle. Selezionare una tabella dall’elenco delle tabelle. Fare click sul bottone Struttura per accedere alla finestra struttura della tabella descritta nel paragrafo precedente. 24 La Mongolfiera Le Tabelle Caricamento/Modifica di Tabelle. Selezionare una tabella dall’elenco delle tabelle. Fare click sul bottone Apri per accedere ad una visione “tabulare” della tabella che consente, in maniera del tutto intuitiva, sia il caricamento di nuovi dati che la modifica dei dati nonché ovviamente la visualizzazione dei medesimi. In più è possibile eseguire un numero enorme di altre operazioni sui dati della tabella: daremo di seguito alcuni cenni. Nella maschera di caricamento/modifica di una tabella sono possibili, tra le altre, le seguenti operazioni: dare ESC per annullare le modifiche mentre si è ancora sulla stessa riga (record) Università degli Studi di Bari 25 Base di Dati cancellare una o più righe: selezionare la/le riga/righe eseguendo il comando Modifica | Elimina; verrà richiesta conferma inserire un record: eseguire il comando Inserisci | Nuovo record; il record viene sempre inserito in fondo modificare la larghezza delle colonne: selezionare la/le colonna/e di cui modificare la larghezza; eseguire Formato | Larghezza Colonne ed agire sulla relativa finestra di dialogo salvare il Layout dell’elenco con le impostazioni dell’attuale visualizzazione con:(File | Salva) stampare i record: eseguire il comando File | Stampa; compilare in maniera opportuna la relativa finestra di dialogo (in particolare la sezione relativa all’intervallo di stampa); confermare con ok la stampa. Si noti che è possibile impostare la pagina (File | Imposta pagina) ed è possibile avere un anteprima della stampa (File | Anteprima di stampa) 26 La Mongolfiera Le Tabelle eseguire operazioni di copia/taglia/incolla con i dati dei campi usando il menù Modifica. In Office2000 è possibile operare con più appunti (fino ad un massimo di 12): in tale caso conviene visualizzare la finestra degli appunti (voce Visualizza | Barre degli strumenti | Appunti) dalla quale si possono incollare le voci di appunti desiderate semplicemente selezionandole ricercare dati. Il tipo di ricerca che produce risultati sufficientemente rapidi e personalizzabili è il seguente: selezionare un campo su cui eseguire la ricerca; dare il comando Modifica | Trova; compare la finestra di dialogo di trova e sostituisci (posizionata sulla linguetta Trova); specificare (per il campo in questione) la stringa di ricerca, selezionare solo il campo di interesse nella voce Cerca in, selezionare il tipo di confronto (campo intero, parte del campo, inizio campo), nella parte che si ottiene selezionando il bottone Altro, selezionare la zona della tabella in cui cercare (tutto, su, giù); quindi usare il tasto trova successivo per iniziare la ricerca. Il bottone annulla termina la ricerca sostituire valori: la sostituzione si attiva con il comando Modifica | Sostituisci ed ha una struttura analoga a quella della ricerca. Università degli Studi di Bari 27 Base di Dati spostarsi su un certo record: si usa il comando Modifica | Vai a; indicando successivamente le impostazioni di spostamento: primo, ultimo, successivo, precedente, nuovo 28 La Mongolfiera Le Tabelle Eseguire delle operazioni di filtro sui record (righe) della tabella: l’opzione più comoda si ottiene con il comando Record | Filtro | Ordinamento/Filtro avanzato. Una volta scelta questa voce di menù si accede ad una finestra che consente di operare nel modo seguente. Nella prima riga di ogni colonna si seleziona (in ordine) il campo su cui imporre condizioni o criteri di ordinamento. Nella seconda riga di ogni colonna si seleziona l’eventuale criterio di ordinamento. Università degli Studi di Bari 29 Base di Dati Nella terza riga si indica un criterio di selezione. Il criterio di selezione farà tipicamente uso degli operatori di relazione (<,>,=,<>,<=,>=), degli operatori logici (And, Or, Not) e di valori come operandi (i valori stringa andranno racchiusi tra virgolette). Si potrà usare l’operatore Like ed i caratteri jolly (es.) per corrispondenze parziali (ad es. Like “Franc*”) troverà un campo che contiene anche la parola “Francesco”. 30 La Mongolfiera Le Tabelle Università degli Studi di Bari 31 Base di Dati 32 La Mongolfiera Le Tabelle E’ poi possibile cancellare delle colonne con il comando Modifica | Elimina colonne eseguito dopo avere selezionato la/le colonna/e da eliminare. E’ possibile Inserire una colonna selezionando, la colonna successiva a quella di inserimento, ed eseguire il comando Inserisci | Colonne. Applicare il filtro per renderlo effettivo con il comando Filtro | Applica filtro/ordina. Se non si esegue questa operazione il filtro non viene salvato. Salvare il filtro come query: dare il comando File | Salva come query; si deve poi dare un nome che finirà tra le query. E’ infine possibile uscire dalla maschera relativa ai filtri chiudendo la relativa finestra. Una volta usciti dalla maschera relativa ai filtri/ordinamenti è possibile applicare il filtro creato in precedenza (comando Record | Applica Università degli Studi di Bari 33 Base di Dati filtro/ordina) oppure eliminare la vista attraverso il filtro in precedenza applicato (comando Record | Rimuovi filtro/ordina). Si osservi infine che nella prima colonna delle tabelle è possibile che compaia un piccolo simbolo “+”, questo consente di visualizzare gli eventuali record correlati attraverso le relazioni (vedi capitolo successivo) con il record corrente. Eliminazione di Tabelle. Per eliminare una tabella è sufficiente selezionarla e dare il comando Modifica | Elimina. Verrà richiesta conferma. 34 La Mongolfiera Le Tabelle Le relazioni Università degli Studi di Bari 35 Base di Dati 36 La Mongolfiera Le Tabelle Le Relazioni Quando si applicano tecniche di progettazione corrette, si ottiene un database i cui dati sono indirizzati in modo efficace, e si è notato che come risultato finale si tende ad ottenere molte tabelle distinte. Con i moderni database relazionali è possibile creare relazioni tra le tabelle, senza avere la necessità di dover successivamente riunire manualmente i dati, in quanto, un’attenta progettazione consente di automatizzare le relazioni tra i dati e poter operare, senza doversi preoccupare di tenere traccia dei legami esistenti, la elaborazione delle informazioni e la creazione e la gestione delle maschere e della query. Di seguito si vedrà come creare alcune relazioni, tenendo conto che il target previsto per questo manuale, impone di non andare oltre il perseguimento dello scopo di far conoscere al lettore l’esistenza delle relazioni, suggerendo ai più curiosi di consultare la guida in linea o manuali specialistici disponibili presso una qualsiasi libreria informatica. Una relazione può essere definita come un legame tra due tabelle, basato sul valore di uno o più campi di ciascuna delle due tabelle. Di solito i campi di almeno una delle due tabelle sono campi chiave. Tra due tabelle possono essere create relazioni di due tipi: relazione uno-a-uno: in questo caso ad ogni riga della prima tabella corrisponde una sola riga nella seconda; relazione uno-a-molti: in questo caso ad ogni riga della prima tabella corrispondono più righe nella seconda. Le relazioni molti-a-molti possono sempre essere decomposte in termini di relazioni uno-a-molti con l’aggiunta di “tabelle di appoggio”. Università degli Studi di Bari 37 Base di Dati La creazione di relazioni. La procedura più semplice per la creazione di relazioni è la seguente: Scegliere il comando Strumenti | Relazioni. Comparirà la finestra Relazioni unitamente ad una finestra di dialogo che consente di scegliere le tabelle tra cui creare le relazioni. Si osservi che è possibile creare relazioni anche utilizzando Viste (Query) oltre alle tabelle. Selezionare ogni tabella di interesse e confermarla con Aggiungi poi chiudere la finestra di dialogo con Chiudi. Nella finestra relazioni rimarranno le tabelle (e le query) selezionate. Le volte successive, per fare comparire la finestra di dialogo per selezionare le tabelle di interesse eseguire il comando Relazioni | Mostra Tabella (dopo avere ciccato su: Strumenti | Relazioni). 38 La Mongolfiera Le Tabelle A questo punto per ogni relazione che si vuole creare, individuare la copia di tabelle di interesse ed eseguire i passi successivi: spostarsi sulla prima tabella (che conviene sia quella del “lato uno” nelle relazioni “uno-a-molti”). In presenza di relazioni uno-a-uno conviene selezionare prima la tabella “principale” (quella con i dati di riferimento) e poi quella “dipendente” (cioè quella con i dati che fanno riferimento alla “principale”). Questo è importante soprattutto in presenza di integrità referenziale (vedi riquadro pagina 41). Università degli Studi di Bari 39 Base di Dati selezionare il/i campo/i in base a cui relazionare le tabelle (per selezionare più di un campo tenere premuto il tasto CTRL mentre si selezionano i campi successivi al primo). effettuare una operazione di drag (trascinamento) sul campo corrispondente nella seconda tabella e rilasciare il pulsante del mouse. Nel caso di corrispondenza con più campi effettuare il trascinamento solo sul primo dei campi corrispondenti, a questo punto comparirà la finestra di dialogo Modifica relazioni. modificare o completare la tavola che consente di stabilire i campi posti in relazione tra le due tabelle accedere (tramite il bottone “Tipo join”) alla finestra di dialogo “proprietà join”. In questa finestra occorre di solito selezionare “Includi solo le righe in cui i campi collegati da entrambe le tabelle sono uguali”; 40 La Mongolfiera Le Tabelle potrebbe però qualche volta essere necessario selezionare un join diverso. Uscire da questa finestra di dialogo. Osservare che il tipo di relazione viene automaticamente impostato al valore corretto (uno-a-uno o uno-a-molti). Specificare se si vuole l’integrità referenziale. Con l’integrità referenziale si richiede in sostanza che: 1. Non si possa inserire un valore nella seconda tabella se non c’è già il corrispondente valore nella prima; 2. Non si possa cancellare un valore dalla prima tabella se esistono righe correlate nella seconda. Barrando in questo caso la casella aggiorna campi correlati a catena, si fa in modo che cambiamenti nei campi “relazionati” della prima tabella vengano riportati anche nelle corrispondenti righe della seconda. Barrando la casella elimina record correlati a catena, si impone che la cancellazione nella prima tabella (che ora è permessa) comporti la cancellazione delle corrispondenti righe nella seconda. Alla fine, confermare la relazione così costruita con Crea (o Ok per le volte successive). La visualizzazione, la modifica a la cancellazione di relazioni. Per visualizzare la struttura delle relazioni occorre dare il comando Strumenti | Relazioni. Comparirà la finestra relazioni nella quale saranno mostrate le tabelle (e le query) e le relazioni esistenti tra di loro. Volendo è possibile nascondere o mostrare tabelle (o query) rispettivamente con i comandi Relazioni | Nascondi Tabella e Relazioni | Mostra tutto. Per modificare una relazione: Università degli Studi di Bari 41 Base di Dati Dare il comando Strumenti | Relazioni. Selezionare la relazione (con un click sul link). Dare il comando Relazioni | Modifica Relazione. Si accede alla finestra di dialogo Modifica relazioni (descritta nel relativo paragrafo) per modificare i parametri della relazione. 42 La Mongolfiera Le Tabelle Per cancellare una relazione eseguire il comando Strumenti | Relazioni, poi selezionare la relazione (con un click sul link) e dare il comando Modifica | Elimina. Seguirà richiesta di conferma. Università degli Studi di Bari 43 Le Query (viste) Le Query (viste) Le query (o viste) possono essere considerate tabelle virtuali che attingono i dati da tabelle o query definite in precedenza. In generale le query richiedono l’esistenza di relazioni ed operano selezioni e proiezioni sull’insieme delle tabelle o query su cui sono costruite. Le query servono in pratica per avere una visione “logica” dei dati che differisca da quella “fisica” imposta dalla struttura delle tabelle o query di partenza. Le query si fondano su SQL (Standard Query Language) linguaggio di interrogazione database, usato dai più diffusi motori di database. Naturalmente esiste un SQL standard che risponde a precisi standard internazionali, così come esistono alcune varianti al linguaggio standard; tra queste varianti possiamo annoverare anche l’interprete SQL di Microsoft Access. Le query non servono solo a vedere i dati da un’ottica diversa ma possono anche compiere importanti operazioni di modifica sui dati stessi sollevandoci spesso dal compiere noiose operazioni di editing; possiamo, dunque, distinguere due categorie di query: le query di selezione e le query di comando. Base di Dati Autocomposizione Query Access dispone della funzionalità di autocomposizione query, che consente la creazione delle query anche senza conoscere il linguaggio SQL. Tale strumento risulta molto utile non solo per risparmiare tempo nella fase di creazione, ma anche per imparare la sintassi del linguaggio SQL, poiché consente, dopo aver creato la query, di visualizzare la corrispondente sintassi. Sicuramente il tipo di query più utilizzato è la cosiddetta query di selezione; che filtra i dati di una o più tabelle restituendoci un set di record ovvero una selezione ristretta di record in base a criteri prestabiliti. Facciamo un esempio: consideriamo i dati della tabella ANAG contenente informazioni anagrafiche sul personale 48 La Mongolfiera Le Query e consideriamo di voler selezionare soltanto i dipendenti assunti dopo il 1995. Raggiungiamo lo scopo utilizzando l’autocomposizione query: dalla finestra Database scegliamo l’oggetto Query e nuovo; scegliamo Creazione guidata Query semplice e confermiamo con OK: Università degli Studi di Bari 49 Base di Dati selezioniamo la Tabella/Query origine dei dati e, da campi disponibili, selezioniamo le informazioni che vogliamo visualizzare nella query, per selezionare un campo cliccare sul nome del campo e poi cliccare sulla freccia a destra per portarlo in campi selezionati, 50 La Mongolfiera Le Query al termine della selezione cliccare su Avanti. Assegniamo un nome alla query facendo attenzione che lo stesso nome non sia già stato assegnato in precedenza ad altri oggetti del nostro database. Se intendiamo vedere il risultato finale ovvero i record restituiti dalla query “al lavoro” clicchiamo su Aprire la query per visualizzare le informazioni; se invece vogliamo vedere la query in modalità struttura, clicchiamo su Modificare la struttura della query. Cliccare, infine, su Fine. In modalità struttura possiamo intervenire ulteriormente nella definizione della query creata in precedenza, anzi, è solo in tale modalità che diventa possibile realizzare tutti i possibili tipi di query senza i limiti imposti dall’autocomposizione. In visualizzazione struttura avremo quanto segue: Università degli Studi di Bari 51 Base di Dati Notiamo come è composta questa finestra. Nella parte alta compare la tabella (o le tabelle) utilizzate dalla query (utilizzare il bottone destro del mouse per aggiungerne delle altre); in basso, distribuiti su colonne, ci sono i nomi dei campi utilizzati dalla query; inoltre, in corrispondenza della riga Criteri sono esplicitati i criteri di selezione della query; naturalmente è possibile indicare più criteri per ogni campo (riga Oppure). Il segno di spunta, in corrispondenza della riga Mostra, serve, se deselezionato, ad evitare la visualizzazione del campo in Visualizzazione foglio dati. Per vedere la sintassi SQL corrispondente alla nostra query dobbiamo cliccare sul menù Visualizza e Visualizzazione SQL. La finestra che si apre è la seguente: 52 La Mongolfiera Le Query Per vedere la query “all’opera”, cliccare sul Menù Visualizza e Visualizzazione foglio dati. Il risultato della query è: Dai 22 record iniziali abbiamo selezionato i 10 record che rispondono alla condizione: ANAG.Data_Assunzione > = #01/01/1995# Vediamo di descrivere la sintassi SQL di questa query: SELECT è la parola chiave maggiormente usata nelle query di selezione; segue l’elenco dei campi che vogliamo visualizzare separati da uno spazio e una virgola, normalmente nella forma NomeTabella.NomeCampo (* -asterisco- per includerli tutti); con la parola chiave FROM NomeTabella indichiamo la tabella di origine dei dati. WHERE NomeTabella.NomeCampo condizione indica all’interprete SQL di selezionare i record in base ai criteri indicati; il tutto generalmente viene seguito dalla clausola ORDER BY NomeTabella.NomeCampo per ordinare i Università degli Studi di Bari 53 Base di Dati record in base ad un campo specifico. E’ da notare come le date siano racchiuse dal simbolo “#”; il testo passato ad una query viene racchiuso da due apicetti (es. WHERE ANAG.Cognome > = ‘pippo’). Per passare in modo rapido alle modalità Visualizzazione, Struttura, o SQL, è possibile cliccare sulla barra degli strumenti database di Access sul bottone con il simbolo corrispondente. 54 La Mongolfiera Le Query Altri tipi di Query Il tipo “query a campi incrociati” visualizza le stesse informazioni di una query di selezione, raggruppandole in modo da ottenere situazioni riassuntive e di riepilogo come nell’esempio che segue. Volevamo ottenere una situazione riepilogativa che ci indicasse i giorni di ferie complessive goduti da ogni singolo dipendente raggruppandoli per mese ed inoltre il totale dei giorni di ferie goduti nell’arco dell’anno. Per ottenere questo risultato abbiamo considerato i dati di partenza e cioè la tabella ANAG e FERIE: Università degli Studi di Bari 55 Base di Dati È stato, inoltre, necessario creare una query (Ferie(tutte)) che riassumesse i dati provenienti dalle due tabelle e che è descritta di seguito, in modalità struttura… …in modalità SQL… …e in modalità foglio dati. 56 La Mongolfiera Le Query A questo punto abbiamo creato la query a campi incrociati, di seguito descritta in modalità struttura… Università degli Studi di Bari 57 Base di Dati …modalità SQL… …e foglio dati. 58 La Mongolfiera Le Query Data la complessità di questo tipo di query si consiglia fortemente l’uso dell’autocomposizione query; le funzioni SQL di questo tipo di query non rientrano nell’SQL standard ma sono state aggiunte da Microsoft per aggiungere ad Access alcune funzionalità proprie di Excell (tabelle Pivot). Università degli Studi di Bari 59 Base di Dati Query di Comando Abbiamo poi un gruppo di query dette query di comando: • query di creazione che consentono di definire e, quindi “creare tabelle” • query di aggiornamento, che consentono di “modificare” i dati di una o più tabelle in base a criteri definibili dall’utente • query di accodamento che si limitano ad “aggiungere” record ad una tabella • query di eliminazione che cancellano record da una tabella. Descriviamo una query di accoramento. Ci siamo proposti di creare automaticamente nella tabella Stipendi, i record relativi alle paghe del mese di Gennaio; si vuole attribuire uno stipendio pari a 100 per il personale appartenente alla categoria B e 200 a tutti gli altri. In modalità struttura la query si presenta così: 60 La Mongolfiera Le Query la sintassi è la seguente: Dopo l’esecuzione della query otteniamo che la tabella STIPENDI (precedentemente vuota) si presenta con i seguenti record: Università degli Studi di Bari 61 Base di Dati Join (Relazioni) La possibilità di relazionare i dati di più tabelle o query è possibile mediante i cosiddetti join (join fa parte della sintassi SQL e significa, appunto, riunire). Ci sono tre tipi di join: INNER JOIN, RIGHT JOIN, LEFT JOIN. Vediamo l’esempio seguente: la tabella ANAG… …è relazionata con la tabella SEDI… 62 La Mongolfiera Le Query …attraverso la relazione ANAG.Id_sede_di_servizio = SEDI.Id Vogliamo riunire le due tabelle al fine di ottenere un elenco anagrafico del personale dove, invece del campo Id_sede_di_servizio (numerico), vogliamo vedere il nome della Sede di servizio corrispondente (testo) come di seguito riportato: Università degli Studi di Bari 63 Base di Dati a seguire è descritta la query in visualizzazione struttura: Diamo un’occhiata alla sintassi della query precedente (Menù Visualizza – SQL): è da notare come i nominativi che avevano Id_sede_di_servizio = 0 non sono stati inclusi nell’elenco, questo perché la clausola INNER JOIN esclude i record della tabella principale che non hanno un corrispondente 64 La Mongolfiera Le Query record sul lato “destro” (tabella SEDI). Proviamo a cambiare INNER JOIN in RIGHT JOIN, il risultato sarà il seguente: In modo analogo, se vogliamo vedere tutti i record della tabella SEDI che non hanno alcun record relazionato nella ANAG (tabella di “sinistra”), dovremo cambiare la clausola INNER JOIN in LEFT JOIN ottenendo il seguente risultato: Università degli Studi di Bari 65 Base di Dati Le clausole di JOIN non richiedono la definizione di relazioni nel database; è, però, necessario che i campi collegati siano ovviamente dello stesso tipo. 66 La Mongolfiera Le Query Query Parametriche A volte sorge la necessità di utilizzare la stessa query più volte, modificando, per esempio, un criterio di selezione. Microsoft Access permette l’utilizzo flessibile della query consentendo di impostare nei criteri anziché valori costanti, valori variabili richiesti all’utente ad ogni avvio della query. Modifichiamo la query data di assunzione modificando il criterio di [Data_assunzione] da > = #01/01/1995# in > = [Assunti dal :] che vuol dire: richiedi all’utente l’inserimento del parametro [Data_assunzione] permettendo, quindi, un utilizzo flessibile della query (non sarà necessario modificare la query per cambiare il criterio Data_assunzione). Università degli Studi di Bari 67 Base di Dati Considerazioni generali sulle Query Il risultato prodotto da una query è un set di record immediatamente visualizzabile sullo schermo sotto forma di griglia ed è anche stampabile; certamente il modo migliore per stampare il risultato di una query è quella di generare un REPORT che “prelevi” i dati restituiti da una query; la trattazione di questo argomento è rimandata al capitolo sui REPORT. E’ possibile esportare il risultato di una query nei più diffusi formati (Generico di testo, RTF, Word, Excell, HTML, ecc.); ciò consente di condividere le informazioni con altri utenti che non hanno accesso al nostro database. Sarebbe opportuno approfondire la sintassi SQL poiché solo manipolando direttamente la stringa Sql generata dall’autocomposizione query è possibile sfruttare al meglio le caratteristiche di questo potente linguaggio di interrogazione. 68 La Mongolfiera Le Maschere Le Maschere L’oggetto maschera consente di interagire con “i dati” a nostra disposizione, in maniera più efficace rispetto alla visualizzazione foglio dati che abbiamo incontrato parlando delle tabelle. Parlando di interfaccia “amichevole”, le maschere aiutano l’utente a navigare nelle informazioni, a mettere a fuoco la grandezza del database, a migliorare il lavoro ottimizzando la metodologia di inserimento dei dati. Il modo più semplice per creare una maschera è sfruttare la modalità “autocomposizione” che in maniera semplice e guidata “passo per passo”, consente di aprire una “finestra”, detta anche “form”, sui dati affinché sia possibile inserire, modificare, ricercare le informazioni contenute nel database. Access, per questo scopo, mette a disposizione degli utenti un vasto insieme di “oggetti”, tutti ereditati dall’interfaccia grafica di windows, come caselle di testo (textbox), etichette (label), caselle combinate (combobox), bottoni, linee, griglie (grid) e tanti altri ancora. Tali oggetti sono “collegabili” direttamente ai dati sottostanti e rendono così possibile la modifica degli stessi. Questo è reso possibile dalle “proprietà” che caratterizzano ogni oggetto. Le “proprietà” degli oggetti consentono di definire le caratteristiche grafiche e le modalità di funzionamento degli stessi. Alcune di queste proprietà sono modificabili in maniera “visuale” (mediante l’utilizzo del mouse) o comunque in fase di progettazione della maschera come, ad esempio, la posizione sullo schermo (proprietà left: distanza da sx, proprietà top: distanza dall’alto), il colore (proprietà color), il tipo di carattere (proprietà font); alcune proprietà sono modificabili solo durante l’esecuzione del programma con l’utilizzo di Visual Basic; altre ancora sono di sola lettura (e quindi non possono essere modificate). Base di Dati E’ bene sottolineare come le proprietà sono suddivise in tre categorie: Formato, Dati, Evento. In breve, per ora, diremo che le proprietà Formato sono attinenti all’aspetto grafico dell’oggetto; le proprietà Dati sono attinenti al collegamento degli oggetti verso le tabelle o le query del nostro database. Per parlare delle proprietà Evento diremo, per ora, che sono utilizzate nella scrittura di codice di programmazione e richiedono conoscenze approfondite di Visual Basic. Le maschere consentono di gestire bene le fasi del dataentry (inserimento dati). E’ possibile, infatti, realizzare dei controlli personalizzati che filtrano i dati immessi dall’operatore (diminuendo la possibilità di commettere errori) ed inoltre, diminuiscono i tempi necessari all’inserimento dei dati, grazie all’uso degli oggetti grafici “connessi” al database. Il tutto, ovviamente, è possibile solo se “progettiamo” bene le nostre maschere, magari utilizzando lo strumento di programmazione “Visual Basic”. 72 La Mongolfiera Le Maschere Costruzione di maschere semplici (su una sola tabella/query). Per cominciare bisogna costruire una maschera relativa ad una sola tabella o query, infatti le query, come abbiamo visto, non sono altro che “estrapolazioni” di tabelle, per cui conservano la stessa struttura e la stessa sintassi. Per creare, dunque, una maschera in modalità “autocomposizione” si può procedere come segue: • selezionare la voce Maschere e successivamente il bottone Nuovo • selezionare ora l’opzione Creazione guidata Maschera nella successiva finestra di dialogo; è importante a questo punto selezionare la tabella/query di riferimento e confermare con Ok Università degli Studi di Bari 73 Base di Dati • nella successiva finestra di dialogo, selezionare i campi da inserire nella maschera (non è necessario selezionarli tutti) e poi selezionare Avanti. • nella nuova finestra di dialogo che compare, indicare, tra quelli proposti, il layout scelto per la maschera: a) a colonne (viene mostrato un solo record per pagina) b) tabulare (vengono mostrate le varie righe della tabella/query in forma tabulare) c) foglio dati (simile alla modalità precedente ma con uno schema di tipo foglio elettronico); giustificato. Selezionare Avanti. • Si apre una nuova finestra di dialogo in cui scegliere lo stile di visualizzazione tra quelli proposti: standard, tessuto, spedizione, ecc. Selezionare Avanti. • Nella successiva finestra di dialogo, assegnare il nome (titolo) della maschera e selezionare il radio button “Modifica la struttura della maschera” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione/modifica delle maschere. Come ultima operazione si seleziona Fine. 74 La Mongolfiera Le Maschere Università degli Studi di Bari 75 Base di Dati Nella finestra di creazione/modifica delle maschere si possono eseguire varie operazioni, tra cui: • selezionare un oggetto della maschera. Sono infatti possibili, con le usuali modalità (uso del tasto SHIFT durante la selezione), selezioni e successive manipolazioni di uno o più oggetti • trascinare gli oggetti o i relativi marker per spostare/ridimensionare. Lo spostamento si ottiene con il marker in alto a sinistra. • eseguire operazioni tipo taglia/copia/incolla con il menù Modifica • visualizzare le proprietà dello/degli oggetto/i selezionato/i ed eventualmente modificarle attraverso una finestra a linguette (comando Visualizza | Proprietà). La possibilità di accedere alle proprietà di un oggetto sarà fondamentale per la programmazione in VBA. 76 La Mongolfiera Le Maschere Le proprietà sono differenti da oggetto ad oggetto e sono numerose. Quando si vuole modificare qualche caratteristica di un oggetto conviene provare a controllare se c’è qualche proprietà che si riferisce a quella determinata caratteristica in modo da poterla modificare. Una proprietà interessante dell’oggetto maschera nel suo complesso è la proprietà Tipo recordset (linguetta Dati), infatti se si sceglie dynaset si potranno (in generale) eseguire modifiche, mentre se si sceglie snapshot si potranno solo visualizzare i dati • visualizzare l’elenco dei campi (comando Visualizza | Elenco Campi) per aggiungere altri elementi (dalle tabella/query selezionate all’inizio) alla maschera con una operazione di trascinamento Università degli Studi di Bari 77 Base di Dati • inserire oggetti nella maschera (ad esempio immagini con il comando Inserisci | Immagine; l’immagine può, poi, essere portata in primo o secondo piano, come ogni altro oggetto, con i comandi Formato | Porta in primo piano o Formato | Porta in secondo piano). 78 La Mongolfiera Le Maschere Università degli Studi di Bari 79 Base di Dati Costruzione di maschere su più tabelle/query A volte è necessario costruire una maschera relativa a più tabelle/query, in questo caso è utile procedere come segue: • selezionare la linguetta Maschere • selezionare poi il bottone Nuovo • cliccare su Creazione guidata Maschera nella successiva finestra di dialogo e confermare con Ok • selezionare le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nella maschera (non è necessario selezionarli tutti). Selezionare Avanti • nella successiva finestra di dialogo, è necessario selezionare la modalità di visualizzazione e proseguire con Avanti. Occorre in pratica selezionare: • il criterio di priorità: scegliere, in ordine, le tabelle/query che guidano la visualizzazione • il tipo di visualizzazione a maschera: le voci tra cui scegliere dipendono dalla scelta precedente ma tipicamente si possono avere le seguenti voci: a) maschera singola: in tal caso, tutti i campi vengono inseriti su di un’unica maschera; questa voce non è molto comune per più tabelle/query b) maschera con sottomaschere: in tal caso la struttura delle relazioni tra le tabelle determina come andranno disposti i dati all’interno di due (o più) livelli, i dati della maschera principale ed i dati della sottomaschera che saranno, in effetti, correlati a quelli della maschera principale c) maschere collegate: in tal caso la struttura delle relazioni tra le tabelle determina come andranno disposti i dati all’interno 80 La Mongolfiera Le Maschere di due (o più) livelli, i dati della maschera principale ed i dati della maschera collegata, richiamata tramite un pulsante, che saranno i dati correlati a quelli della maschera principale. Ogni scelta nella finestra di dialogo viene rappresentata con un esempio che mostra la struttura che verrà generata dalla creazione guidata • Nella successiva finestra di dialogo (nel caso, dopo le scelte effettuate, venga proposta) è necessario indicare tra quelli elencati, il layout scelto per la maschera, tipicamente: a) a colonne (viene mostrato un solo record per pagina) Università degli Studi di Bari 81 Base di Dati b) tabulare (vengono mostrate le varie righe della tabella/query in forma tabulare) c) foglio dati (simile alla modalità precedente ma con uno schema del tipo foglio elettronico). A questo punto si potrà selezionare Avanti • la finestra di dialogo che segue serve per decidere lo stile di visualizzazione tra quelli proposti: standard, tessuto, spedizione, ecc.. Selezionare Avanti • ora bisogna, quindi, fornire un nome (titolo) per le maschere e sottomaschere (che possibilmente non devono contenere spazi) e selezionare il radio button “Modifica la struttura della maschera” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica delle maschere. Selezionare Fine. 82 La Mongolfiera Le Maschere Arrivati a questo punto, si può modificare la maschera (principale), come già descritto nel paragrafo precedente, all’interno della finestra di creazione/modifica delle maschere. Per poter modificare una sottomaschera è sufficiente selezionarla nella finestra (voce) Maschere, premere il bottone Struttura ed accedere, così, alla finestra di creazione /modifica delle maschere per le modifiche. Modifica e cancellazione di maschere e sottomaschere. Al fine di modificare una maschera o una sottomaschera è sufficiente selezionarla nella finestra (voce) Maschere, premere il bottone Struttura, ed accedere, per le modifiche, alla finestra di creazione /modifica delle maschere. Per cancellare una maschera o una sottomaschera è sufficiente selezionarla nella finestra (voce) Maschere e premere il bottone CANC. Verrà chiesta conferma all’operazione selezionata. Utilizzo di maschere Le maschere forniscono una interfaccia personalizzabile che consente di visualizzare, modificare (se permesso) ed, in generale, di manipolare i dati di tabelle e query. N.B. per creare maschere su cui siano eseguibili inserimenti potrebbero essere richieste una serie di condizioni tra cui quella di includere il campo chiave del lato “molti” di una relazione uno-a-molti. Le operazioni necessarie al fine di operare con una maschera, sono: • selezionare la voce Maschere del database corrente Università degli Studi di Bari 83 Base di Dati • selezionarne una, dall’elenco delle maschere • fare click sul pulsante Apri per accedere alla maschera che consente, in maniera del tutto intuitiva, la visualizzazione e la manipolazione dei dati All’interno della maschera sono disponibili (se non sono stati disabilitati) i controlli per passare alla prima, alla successiva, alla precedente, all’ultima, ad una specificata riga della tabella/query corrente. Per nuovi inserimenti (se permessi), è’ possibile passare alla riga successiva all’ultima. Esistono, inoltre, i pulsanti per selezionare direttamente le righe (cioè i record). 84 La Mongolfiera Le Maschere Ancora, è possibile eseguire un numero enorme di operazioni a contorno sui dati della maschera che si ottengono tramite menù e sono le stesse che sono state descritte (almeno per quanto riguarda le più interessanti) nel paragrafo relativo al caricamento/modifica di tabelle. Si osservi però che, per quanto riguarda le operazioni di filtro e ordinamento, alcune volte potrebbe essere necessario impostare e modificare (quindi applicare) i filtri/ordinamenti a livello di sottomaschere e maschere collegate affinché, poi, possano essere usati ed agiscano anche sulle maschere principali. A volte, per evitare problemi si potrebbero creare i filtri all’interno di opportune Query. Università degli Studi di Bari 85 Base di Dati Per approfondire Considerazioni e suggerimenti su alcuni aspetti emersi durante le prove L’utilizzo pratico delle maschere ha evidenziato alcuni problemi; i seguenti punti, costituiscono un elenco di regole che si suggerisce di utilizzare e vogliono essere, almeno in parte, la risoluzione di alcuni problemi riscontrati: • i Filtri/Ordinamenti (che non sono definiti all’interno di query) vanno di solito applicati ogni volta che si rientra sull’oggetto a cui sono riferiti. • quando si costruiscono maschere con sottomaschere a tre livelli, si verifica, in determinate condizioni di lavoro, un “baco” che termina l’applicativo Access. Si consiglia, quindi, di procedere con cautela e possibilmente di evitare maschere con sottomaschere a 3 livelli possibilmente ricorrendo a maschere collegate a tre livelli che non hanno problemi (salvo forse la necessità di definire filtri passando attraverso opportune query di appoggio – vedi sotto). • è stata scoperta una correlazione tra il “baco” di cui sopra (relativo a maschere con sottomaschere a tre livelli) e l’uso dei filtri/ordinamenti nelle maschere; eliminando tutti i filtri/ordinamenti il problema pare scomparire totalmente anche se possono permanere problemi di efficienza. Se si presentano, comunque, difficoltà (usando o non usando ordinamenti e filtri) si consiglia di usare maschere collegate a tre livelli o un altro espediente (anziché usare le sottomaschere a tre livelli) • per eliminare le difficoltà precedenti (problemi di efficienza o di bachi) si può creare un “duplicato” query delle tabelle necessarie (eventualmente con filtri/ordinamenti) basando la Maschera su queste query invece che sui dati originari risolvendo, così, il problema di efficienza e della necessità di filtri/ordinamenti 86 La Mongolfiera Le Maschere • è possibile inserire una sottomaschera in una maschera usando la Toolbox. Una volta inserita una sottomaschera ed assegnata ad essa una maschera (voce Oggetto origine delle proprietà) è possibile visualizzarla e modificarne le proprietà selezionando con il pulsante destro del mouse l’area della sottomaschera individuata dal righello. • in fase di modifica di una maschera è possibile fare uso delle proprietà Collega Campi Secondari e Collega Campi Master (linguetta Dati) di un oggetto sottomaschera serve per correlare i record di una sottomaschera, in base ad uno o più campi della sottomaschera stessa (campi secondari), con il record in uso della maschera principale, in base ad uno o più campi della stessa (campi master). Se i campi sono molteplici vanno separati da punto e virgola Università degli Studi di Bari 87 Base di Dati • con lo stesso principio del punto precedente, è possibile correlare i record di una sottomaschera con quelli di un’altra sottomaschera, entrambe “figlie” della stessa maschera principale. In tal caso nei campi master della maschera di terzo livello occorrerà usare la sintassi [nome sottomaschera di secondo livello]![Nome campo]. In questo modo potrebbe però accadere che la sottomaschera di terzo livello mostri sempre i record correlati alla prima riga della maschera di secondo livello. Per ovviare a questo problema è possibile agire come segue: a) attraverso la Toolbox inserire una casella di testo nella maschera principale; richiamare le proprietà e impostare la proprietà Visibile a No e la proprietà Origine controllo a “=[nome sottomaschera di secondo livello]![Nome campo]”; impostare, infine, nei campi master della maschera di terzo livello, il nome della casella di testo al posto dell’espressione suggerita in precedenza 88 La Mongolfiera Le Maschere • è possibile, in fase di modifica di una maschera (principale), includere una o più altre maschere come sottomaschere. Questo risultato si ottiene disponendo in maniera opportuna le diverse finestre e trascinando la maschera, che dovrà diventare sottomaschera dalla finestra “Maschere”, nell’opportuna area all’interno della finestra di creazione/modifica della maschera principale. Se si inseriscono due sottomaschere (da correlare tra loro e con la maschera principale) occorre lavorare come indicato al punto precedente affinché ci sia coerenza tra i dati presenti nella maschera principale e nelle sottomaschere • è stato osservato che può essere utile modificare il tipo di maschera all’interno della finestra di creazione/modifica delle maschere adottando la seguente procedura: a) si fa in modo che non sia selezionato nessun oggetto della maschera (perché sia selezionata la maschera nel suo complesso) b) si esegue il comando Visualizza | Proprietà c) si controlla/modifica la proprietà Formato | Visualizzazione predefinita (maschere continue = rappresentazione tabulare; foglio dati; maschera singola) • se si verificano problemi durante l’uso di un database, si consiglia di procedere ad una compattazione del database medesimo. Per compattare un database: dare il comando Strumenti | Utilità database | Compatta e ripristina database. Può essere conveniente compattare periodicamente il database per eliminare “sprechi” di memoria. E’ anche possibile compattare un database quando non è aperto nessun altro database, richiamando sempre la voce di menù Strumenti | Utilità database | Compatta e ripristina database e seguendo le indicazioni Università degli Studi di Bari 89 Base di Dati • se i dati non si presentano nell’ordine previsto dal Filtro/Ordina creato in precedenza è sufficiente dare il comando Record | Applica filtro/Ordina. Costruzione di maschere contenenti oggetti (bottoni, ...) Gli oggetti, all’interno delle maschere, si usano principalmente in concomitanza della programmazione in VBA e per tale ragione rimandiamo più oltre una discussione più approfondita su tali aspetti. In questo paragrafo vogliamo solo mostrare, per linee generali, l’uso degli oggetti più significativi quali elementi per mostrare/manipolare i dati di un database attraverso una maschera. Per disporre oggetti su di una maschera occorre passare in visualizzazione struttura (si seleziona una maschera e si preme il bottone Struttura oppure si preme il bottone Nuovo e si seleziona visualizzazione 90 La Mongolfiera Le Maschere struttura nella successiva dialog box) e quindi attivare la ToolBox con il comando Visualizza | Casella degli strumenti. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli (il bottone con la “bacchetta magica”). Quando si devono modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie Proprietà dal menù Visualizza o dal menù di scelta rapida. Di seguito, per ogni controllo significativo, vengono date alcune indicazioni su come gestirlo (a livello di proprietà) per le più comuni esigenze. Per esigenze più sofisticate è necessario controllare/gestire anche altre proprietà oltre a quelle che verranno elencate. Università degli Studi di Bari 91 Base di Dati Il primo oggetto di cui conviene occuparsi è sicuramente la maschera nel suo complesso. Per selezionare la maschera basta non selezionare alcun oggetto. Nella finestra delle proprietà risultano interessanti i seguenti elementi: • origine Record: si può specificare un tabella, una query o una query SQL che descrivono i record (le righe) che verranno visualizzati nei controlli della maschera. Si può scegliere il pulsante a destra (quello con “...”) per generare automaticamente la query per l’origine dei record: l’ambiente richiamato è quello per la costruzione e la modifica di query. • visualizzazione Predefinita: si può scegliere il tipo di maschera che serve: maschere continue ossia rappresentazione tabulare; foglio dati; maschera singola. Se necessario, è poi, possibile visualizzare l’intestazione/piè pagina di maschera o di pagina con i relativi comandi dal menù Visualizza. 92 La Mongolfiera Le Maschere Un altro tipo di oggetto interessante è la sezione (corpo, piè pagina maschera, intestazione maschera, ...). Basta selezionare la barra relativa alla sezione desiderata per potere accedere alle sue proprietà (tramite il menù visualizza o il menù di scelta rapida). Le caratteristiche principali sono: • visibile: che consente di stabilire se la sezione in questione sarà visibile o meno • colore dello sfondo • aspetto: piatto, in rilievo, incassato L’oggetto sicuramente più interessante è il Text Box (detto anche edit control o casella di testo). Le proprietà più interessanti da gestire (una volta selezionato l’oggetto) sono: • nome elemento: il nome dell’oggetto Università degli Studi di Bari 93 Base di Dati • origine controllo: tipicamente si può scegliere uno dei campi appartenenti al recordset selezionato come origine controllo della maschera (il combo box a destra consente appunto questa selezione). E’ anche possibile costruire espressioni (che tipicamente combinano i valori dei campi appartenenti al recordset della maschera); ad esempio: =Str([NumFatt]) & " del " & Str([DataFatt]). E’, altresì, possibile costruire espressioni per aggregare (es. sommare) valori (di solito appartenenti al recordset associato alla maschera), ad esempio: =Somma([SommaImpo]); di solito le formule di aggregazione sono poste nella sezione di piè di pagina della maschera. La costruzione di espressioni può essere facilitata dall’uso del generatore di espressioni (pulsante a destra: “...”). Si noti che le espressioni devono iniziare con il simbolo “=” • formato: stabilisce il formato dell’oggetto (numero generico, standard, fisso, valuta, data generica, ...) • abilitato: indica se l’oggetto può diventare l’oggetto corrente di una maschera • bloccato: istituisce se è possibile modificare i dati contenuti nell’oggetto • visibile: stabilisce se il controllo è o meno visibile. Per inserire elementi descrittivi conviene usare l’oggetto etichetta (label). Proprietà significative: 94 La Mongolfiera Le Maschere • nome elemento: indica il nome dell’oggetto • etichetta: determina una stringa descrittiva che comparirà sulla maschera • visibile: indica se il controllo è o meno visibile • per raggruppare controlli è possibile usare l’oggetto cornice (group box). Anche in questo caso proprietà significative (selezionare il bordo per richiamare le proprietà) sono: Università degli Studi di Bari 95 Base di Dati • nome elemento: determina il nome dell’oggetto • etichetta: è una stringa descrittiva che comparirà nell’intestazione della cornice (selezionare l’etichetta per accedere a questa proprietà) • visibile: indica se il controllo è o meno visibile Un elemento molto comune è il Pulsante di comando (Command Button) che spesso è usato in concomitanza della programmazione in VBA. Qui vogliamo solo analizzare un utilizzo caratteristico che è quello che consente, in autocomposizione, di generare il richiamo di una maschera collegata. Per ottenere tale risultato bisogna: • selezionare il pulsante di comando dalla ToolBox 96 La Mongolfiera Le Maschere • trascinare il controllo sulla maschera per disporlo come si preferisce • quando compare la prima finestra di dialogo, scegliere Operazioni su maschere (nella lista categorie) e Apri Maschera (nella lista azioni): nelle successive 4 Finestre di dialogo (dialog box) Selezionare: • la maschera da aprire dalla list box • Apri la maschera e trova dati specifici da visualizzare • (in maniera intuitiva) i campi delle due maschere da correlare: quando si apre la maschera premendo il bottone, in tale maschera verranno mostrati solo i record (o il record) correlati; • un testo o un immagine per il bottone • Nella maschera successiva indicare un nome per il pulsante di comando e selezionare Fine. In ogni caso, è possibile accedere alle proprietà del bottone di comando di cui le più significative sono le seguenti: • visibile: indica se il controllo è o meno visibile • nome elemento: è il nome dell’oggetto • etichetta: determina una stringa descrittiva che comparirà sul pulsante di comando. Università degli Studi di Bari 97 Base di Dati Un altro oggetto importante è la casella combinata (ComboBox). Qui vogliamo analizzare un utilizzo caratteristico che è quello che consente, in autocomposizione, di generare una casella combinata per la ricerca di record attraverso l’elenco a discesa. Questa operazione è possibile solo in alcuni contesti dove la macchina è in grado di reperire i dati della maschera a partire dal valore selezionato nella casella combinata (tipicamente in presenza di sole tabelle). Per ottenere ciò bisogna: • selezionare la casella combinata dalla ToolBox • trascinare il controllo sulla maschera per disporlo come si vuole • quando compare la prima finestra di dialogo: scegliere Trova un record nella maschera ... 98 La Mongolfiera Le Maschere • Nella successiva dialog box, selezionare il campo che entrerà a far parte dei dati della casella combinata (in realtà è possibile scegliere più di un campo) • la finestra di dialogo che adesso appare consente di regolare le dimensioni della/e colonna/e di dati e decidere (se presente) se lasciare o meno barrato il check box per la presenza/assenza del campo chiave. Se sono stati scelti più campi potrebbero comparire altre finestre di dialogo: • nella prima scegliere un campo (di solito il campo chiave) • nella seconda scegliere memorizza il valore temporaneamente ... • nella maschera successiva, selezionare un nome per la casella combinata e selezionare Fine. Durante l’utilizzo della casella combinata precedentemente costruita, se si sono effettuati aggiornamenti al recordset sottostante, potrà essere utile usare il comando Record | Aggiorna per aggiornare il contenuto della casella combinata stessa. Un altro utilizzo caratteristico della la casella combinata (ComboBox) è quello che consente, in autocomposizione, di generare una casella combinata per la assegnazione di un valore ad un campo della maschera prelevandolo dall’elenco a discesa. Per ottenere ciò si deve: • selezionare la casella combinata dalla ToolBox • trascinare il controllo sulla maschera per disporlo come si vuole • quando compare la prima finestra di dialogo: scegliere Ricerca valori in una tabella o query da parte … Nelle successive finestre di dialogo (dialog box): • selezionare la tabella/query da cui prelevare i dati Università degli Studi di Bari 99 Base di Dati • selezionare il/i campo/i che entreranno a far parte dei dati della casella combinata • regolare le dimensioni della/e colonna/e di dati e decidere (se presente) se lasciare o meno barrato il check box per la presenza/assenza del campo chiave • (potrebbe non comparire) bisogna selezionare il campo della tabella/query da associare al campo della maschera attuale • selezionare memorizza il valore permanentemente in questo campo e quindi selezionare il campo (della maschera) in cui inserire il valore • Nella successiva maschera è necessario selezionare un nome per la casella combinata e selezionare Fine. In ogni caso, è possibile accedere alle proprietà della Casella Combinata di cui le più significative sono le seguenti: • nome elemento: è il nome dell’oggetto • origine controllo: consente di stabilire da dove attingere o dove mettere il valore selezionato nella casella combinata; di solito si tratta del valore di un campo del recordset associato alla maschera corrente. Non conviene impostare tale proprietà nel caso di uso di una casella combinata per la ricerca • tipo origine Riga: che di solito è tabella/query se i dati dell’elenco devono arrivare da una tabella/query • origine Riga: contiene l’indicazione della tabella/query o più spesso della query SQL per selezionare i valori che finiranno nella lista della casella combinata • visibile: indica se il controllo è o meno visibile • abilitato: stabilisce se l’oggetto può diventare l’oggetto corrente di una maschera 100 La Mongolfiera Le Maschere • bloccato: stabilisce se è possibile modificare i dati contenuti nell’oggetto • colonna associata: stabilisce quale è il numero della colonna da cui prelevare il valore da associare al campo Origine Controllo. Università degli Studi di Bari 101 Base di Dati Discorso analogo alle Caselle Combinate si fa per l’oggetto Casella di riepilogo (list box). 102 La Mongolfiera I Report (le stampe) I Report (Le Stampe). Un report rappresenta uno stampato (di solito nella forma di un tabulato più o meno elaborato) che consente di evidenziare i dati del database selezionati e raggruppati in maniera opportuna. I dati da inserire in un report possono provenire da una tabella o da una query. A tali dati possono esserne aggiunti altri, generati direttamente mediante la struttura stessa del report. Un report può essere creato definendo direttamente la sua struttura o, più semplicemente, ricorrendo all’autocomposizione. La struttura generata con l’autocomposizione può essere facilmente modificata per adattarla alle effettive esigenze dell’utente. Caratteristica peculiare di un report è quella di essere un oggetto che potrebbe avere destinatari diversi dall’utente che crea e gestisce il database; potrebbe anche rappresentare, in un determinato contesto, l’immagine dell’azienda alla quale i dati si riferiscono. Bisogna, quindi, curare i dettagli nel layout del report stesso. Elemento caratterizzante di questo tipo di applicazione in ambiente Microsoft Access è che i report, nel momento in cui vengono creati, si basano sui dati forniti dalla tabella di origine dati definita dall’utente, per cui l’applicazione avrà inizialmente alcuni “record” su cui costruire il resoconto di stampa ma, se la tabella origine viene modificata, cancellando, cambiando o addirittura aggiungendo altre informazioni, il report aggiorna automaticamente il layout di stampa ai nuovi dati. Questo è un aspetto importante che permette all’utente di ottimizzare il lavoro evitando di compiere operazioni ridondanti; non ci sarà bisogno, infatti, di creare nuovamente il report una volta cambiata la tabella origine, l’aggiornamento verrà eseguito in automatico dall’applicazione. Detto questo, si deduce che i report possono diventare veri e propri fascicoli “interattivi”, con una copertina, un’organizzazione 105 Base di dati specifica dei dati ed una pagina finale o di conclusione; fascicoli interattivi rispondenti alle esigenze dell’utente che li avrà strutturati secondo le caratteristiche del proprio lavoro. 106 La Mongolfiera I Report (Le Stampe) Costruzione di report semplici (su una sola tabella/query) Bisogna quindi, arrivati a questo punto, costruire un report relativo, in questa fase iniziale, ad una sola tabella/query. Per far questo si può procedere come segue: • scegliere la voce Report • selezionare il bottone Nuovo • selezionare Creazione guidata Report nella successiva finestra di dialogo; quindi indicare la tabella/query di riferimento e confermare con Ok. Nelle successive finestre di dialogo: • selezionare i campi da inserire nel report (non è necessario selezionarli tutti) e selezionare Avanti • viene chiesto all’utente se desidera aggiungere livelli di gruppo: per un tabulato semplice non bisogna selezionare nulla ma premere semplicemente il pulsante Avanti • è possibile scegliere il criterio di ordinamento in base ad un massimo di 4 campi (in ordine crescente o decrescente); selezionare gli ordinamenti e confermare con Avanti • occorre selezionare il layout di stampa: tabulare, verticale (i campi vengono mostrati in verticale e viene posta una separazione tra ogni record ed il successivo) o giustificato; foglio orizzontale o verticale. Selezionare Avanti • si deve scegliere lo stile di stampa tra quelli proposti: Formale, Generico, Società, ecc.. Selezionare Avanti • occorre fornire un nome (titolo) al report e selezionare il radio button “Modifica la struttura del report” in modo da poter apportare modifiche alla struttura fin qui definita nella Università degli Studi di Bari 107 Base di dati finestra di creazione /modifica dei report. Concludere la procedura cliccando su Fine. Nella finestra di creazione/modifica del report è possibile eseguire varie operazioni, tra cui: • selezionare un oggetto del report; sono possibili, con le usuali modalità (uso del tasto SHIFT durante la selezione), selezioni e quindi manipolazioni di più oggetti • trascinare gli oggetti o i relativi marker per spostare/ridimensionare gli oggetti. Il trascinamento si ottiene tramite il marker in alto a sinistra • eseguire operazioni tipo taglia/copia/incolla con il menù Modifica 108 La Mongolfiera I Report (Le Stampe) • visualizzare le proprietà dello/degli oggetto/i selezionato/i ed eventualmente modificarle attraverso una finestra a linguette (comando Visualizza | Proprietà). La possibilità di accedere alle proprietà di un oggetto sarà fondamentale per la programmazione in VBA. Le proprietà sono differenti da oggetto ad oggetto e sono numerose; quando si vuole modificare qualche caratteristica di un oggetto è opportuno controllare se c’è qualche proprietà che si riferisce a quella caratteristica in modo da poterla modificare • visualizzare l’elenco dei campi (comando Visualizza | Elenco campi) per aggiungere altri elementi (dalle tabelle/query selezionate all’inizio) al report con una operazione di trascinamento • inserire oggetti nel report (ad esempio immagini con il comando Inserisci | Immagine; l’immagine può poi essere portata in primo o secondo piano, come ogni altro oggetto, con i comandi Formato | Porta in primo piano o Formato | Porta in secondo piano). Costruzione di report su più tabelle/query. Si vuole adesso costruire un report relativo a più tabelle/query procedendo, nelle successive finestre, a selezionare: • la voce Report • il bottone Nuovo • ceazione guidata Report nella successiva finestra di dialogo; confermare con Ok senza selezionare la tabella/query Università degli Studi di Bari 109 Base di dati • le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nel report (non è necessario selezionarli tutti). Selezionare Avanti • (può non comparire) il criterio di priorità: visualizzazione in base a ... (scegliere la tabella/query che guida la visualizzazione): il resto della struttura del report è guidato dalla struttura delle relazioni tra le tabelle/query. Ogni scelta nella finestra di dialogo viene rappresentata con un esempio che mostra la struttura che verrà generata • se l’utente vuole aggiungere livelli di gruppo (cioè raggruppamenti). Per scegliere un nuovo raggruppamento è sufficiente fornire il campo in base a cui eseguire il raggruppamento. E’ poi possibile cambiare la priorità di raggruppamento manovrando sulle frecce apposite. E’ altresì possibile cambiare la modalità di raggruppamento all’interno della relativa finestra di dialogo (richiamata con il bottone Opzioni raggruppamento): conviene di solito lasciare la modalità di raggruppamento normale (i record si raggruppano a parità di valore del campo selezionato). Premere il pulsante Avanti • il criterio di ordinamento in base ad un massimo di 4 campi (in ordine crescente o decrescente). Nella stessa finestra di dialogo è presente il bottone Opzioni di riepilogo che consente di accedere ad una finestra di dialogo nella quale vengono richiesti, per i campi numerici, se si vuole avere dei riepiloghi (rispettivamente somma, media, minimo, massimo) e se si vuole solo il riepilogo o anche il dettaglio; è pure possibile specificare se si vuole ottenere la percentuale delle somme di dettaglio sul totale. Uscire dalle opzioni di riepilogo e selezionare Avanti 110 La Mongolfiera I Report (Le Stampe) • il layout di stampa: con rientri, a blocchi, bordato 1, bordato 2, allineato a sinistra1, allineato a sinistra 2; foglio orizzontale o verticale. A sinistra è sempre presente una immagine di come verrà prodotto l’output. Selezionare Avanti • la scelta dello stile di stampa tra quelli proposti: Società, Formale, Generico, ecc.. Selezionare Avanti. • Nella successiva finestra di dialogo è necessario fornire un nome (titolo) al report e selezionare il radio button “Modifica la struttura del report” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica dei report. Selezionare Fine. A questo punto, si può modificare il report, come già descritto nel precedente paragrafo, all’interno della finestra di creazione/modifica dei report. Modifica e cancellazione di report Per modificare un report è sufficiente selezionarlo nella finestra Report, premere il bottone Struttura, ed accedere così alla finestra di creazione /modifica dei report per le modifiche. Per cancellare un report è sufficiente selezionarlo nella finestra Report e premere il bottone CANC. Verrà richiesta la conferma dell’operazione. Utilizzo dei report. Al fine di operare con un report occorre: • selezionare la voce Report del database corrente • selezionare un report dall’elenco Università degli Studi di Bari 111 Base di dati • fare click sul bottone Anteprima per accedere all’anteprima del report selezionato che consente, in maniera del tutto intuitiva, la visualizzazione del report stesso sullo schermo 112 La Mongolfiera I Report (Le Stampe) • Oppure è possibile dare il comando File | Stampa per stampare il report correntemente selezionato. Università degli Studi di Bari 113 Base di dati Per approfondire considerazioni e suggerimenti su alcuni aspetti emersi durante le prove E’ stato osservato che quando si aprono alcuni report generati con la Creazione guidata si possono risolvere alcuni problemi dovuti ad una impropria composizione del report da parte di Access (“baco”). E’ usualmente possibile sistemare questi problemi entrando in modifica sul report e cambiando gli elementi scorretti. A titolo di esempio indichiamo di seguito due problemi emersi e le loro soluzioni. 1. Si verifica un problema sulle intestazioni dei raggruppamenti (messaggio di richiesta parametro all’atto dell’apertura). Per risolvere tale problema è sufficiente entrare in modalità modifica e dare il comando Visualizza | Ordinamento e raggruppamento; quindi, scegliere nella colonna Campo o espressione il valore opportuno (dall’elenco a discesa) in modo da sostituire il valore errato. Può essere sufficiente, per correggere il valore, aggiungere le parentesi quadre attorno ai nomi di campo nelle espressioni. E’ possibile, inoltre, fare altre operazioni di adattamento nella finestra Ordinamento e raggruppamento. 2. Nel piè pagina di alcuni raggruppamenti non viene inserita correttamente l’espressione per il conteggio degli elementi (come risultato si vedono messaggi di errore nel report). Per risolvere questo problema è sufficiente entrare in modalità modifica, cercare una espressione analoga a quella errata ma funzionante, entrare nelle proprietà e copiare la formula dell’Origine controllo per poi incollarla nelle proprietà (Origine controllo) dell’elemento errato e quindi riadattarla alla nuova situazione. Se non si trova una espressione analoga a quella scorretta (ma che sia funzionante) si ricordi che l’errore 114 La Mongolfiera I Report (Le Stampe) avviene di solito su una espressione di “Conteggio(*)” che può essere costruita ex-novo usando le funzioni opportune all’interno della proprietà Origine controllo dell’elemento errato (esempio di espressione da costruire: ="Riepilogo per Codice=" & [Codice] & " (" & Conteggio(*) & " record di dettaglio)"). Costruzione di report contenenti oggetti (Text Box, separazione di pagine...) All’interno dei report, gli oggetti si usano principalmente per creare ulteriori elementi di stampa. In questo paragrafo si vuole solo mostrare, per linee generali, l’uso degli oggetti più significativi quali elementi per stampare i dati di un database. Per disporre oggetti su di un report occorre passare in visualizzazione struttura (si seleziona un report e si preme il bottone Struttura) e quindi attivare la ToolBox con il comando Visualizza | Casella degli strumenti. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli (il pulsante con la “bacchetta magica”). Se bisogna modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie Proprietà dal menù Visualizza o dal menù di scelta rapida. Un report avrà in generale un corpo (che rappresenta la parte più “interna” del report) “incapsulato” in una serie di coppie intestazione/piè di sezione (o raggruppamenti). Inoltre in un report ci sono di solito intestazioni e piè di pagina (di pagina e report). Tenendo conto di questo, di seguito, per ogni controllo significativo, vengono date alcune indicazioni su come gestirlo (a livello di proprietà) per le più comuni esigenze. Per esigenze più sofisticate è sufficiente controllare/gestire anche altre proprietà oltre a quelle che andiamo ad elencare. Università degli Studi di Bari 115 Base di dati N.B. All’interno della finestra di creazione/modifica del report è possibile visualizzare/modificare i raggruppamenti e gli ordinamenti richiamando la finestra relativa con il comando Visualizza | Ordinamento e Raggruppamento. All’interno di questa finestra è anche possibile fare comparire e scomparire le intestazioni ed i piè pagina dei vari raggruppamenti. Il primo oggetto di cui conviene occuparsi è sicuramente il report nel suo complesso. Per selezionare il report basta non selezionare alcun oggetto. Nella finestra delle proprietà risultano interessanti i seguenti elementi: • origine record: si può specificare un tabella, una query o una query SQL che descrivono i record (le righe) che verranno visualizzati nei controlli del report. Si può scegliere il pulsante a destra (quello con “...”) per generare automaticamente la query per l’origine dei record; l’ambiente richiamato è quello per la costruzione e la modifica di query. Estendendo la query SQL che definisce l’origine dei record con la clausola WHERE è possibile porre delle condizioni di “filtro” sui record che andranno a far parte del report (es. ... WHERE [Fatture].[NumFatt] = [RigheFatt].[NumRiga]) • filtro e applica filtro: con la prima proprietà si può specificare un filtro per i record che andranno a far parte del report (es. [NumFatt] = [NumRiga]); in tal caso, la seconda proprietà deve essere impostata a sì • intestazione (pagina) e piè pagina (pagina): queste due proprietà consentono di specificare se e quando non stampare le eventuali intestazioni di pagina e piè pagina 116 La Mongolfiera I Report (Le Stampe) Un altro tipo di oggetto interessante è la sezione (corpo, piè pagina, intestazione, ...). Basta selezionare la barra relativa alla sezione desiderata per potere accedere alle sue proprietà (tramite il menù visualizza o il menù di scelta rapida). Le caratteristiche principali sono: • interruzione pagina che consente di stabilire se inserire interruzioni di pagina prima e/o dopo la sezione corrente del report • stampa sezione unita che consente (se impostata a sì) di fare in modo che una sezione non venga spezzata su due pagine diverse • visibile: che consente di stabilire se la sezione che interessa sarà visibile o meno • aspetto: piatto, in rilievo, incassato. L’oggetto di sicuro più interessante è il Text Box (detto anche edit control o casella di testo). Le proprietà più interessanti da gestire (una volta selezionato l’oggetto) sono: • nome elemento: è il nome dell’oggetto • origine controllo: tipicamente si può scegliere uno dei campi appartenenti al recordset selezionato come origine controllo del report (il combo box a destra consente appunto questa selezione). E’ anche possibile costruire espressioni (che tipicamente combinano i valori dei campi appartenenti al recordset del report); ad esempio: =Str([NumFatt]) & " del " & Str([DataFatt]). E’ anche possibile costruire espressioni per aggregare (es. sommare) valori (di solito nella sezione di piè di pagina o intestazione di un raggruppamento, della pagina o del report); ad esempio, =Somma([PrezzoUn]*[Quantità]) oppure: =conteggio(*). La costruzione di espressioni può essere facilitata dall’uso del Università degli Studi di Bari 117 Base di dati generatore di espressioni (pulsante a destra: “...”). Si noti che le espressioni devono iniziare con il simbolo “=” • formato: stabilisce il formato dell’oggetto (numero generico, standard, fisso, valuta, data generica, ...) • visibile: dice se il controllo è o meno visibile. Per inserire elementi descrittivi conviene usare l’oggetto etichetta (label). Proprietà significative sono: • nome elemento che rappresenta il nome dell’oggetto • etichetta che è una stringa descrittiva che comparirà sul report. 118 La Mongolfiera I Report (Le Stampe) Costruzione di report a più colonne - cenni. Vediamo, attraverso un esempio, come costruire report a più colonne, cioè report che possono disporre i dati anche in colonna oltre che per righe successive. Il caso tipico è quello che consente di riservare una colonna per ogni nuovo raggruppamento: nelle righe sottostanti ogni colonna (che rappresenta il gruppo) ci saranno gli elementi di dettaglio di quel raggruppamento. Per costruire un report a più colonne si può procedere come segue: • costruire un report normale (che abbia almeno un raggruppamento) con le procedure viste in precedenza • entrare nella finestra di creazione/modifica dei report • dare il comando File | Imposta Pagina e Selezionare la linguetta Colonne • nel campo Numero di Colonne, selezionare il numero (massimo) di colonne per pagina per il report multicolonna. Nel campo Larghezza impostare la larghezza della colonna (eliminare il check dal box Come Corpo); scegliere la priorità (di solito Priorità Verticale) e confermare con Ok • selezionare una intestazione/piè pagina di raggruppamento (se non è visibile farla comparire all’interno della finestra di Ordinamento e Raggruppamento - vedi paragrafo precedente), di solito si sceglie un piè di pagina • fare comparire l’elenco delle proprietà (Visualizza | Proprietà) • nella proprietà Nuova Riga o Colonna selezionare un valore opportuno, di solito Dopo sezione (se è stato scelto un “oggetto” piè di pagina). Università degli Studi di Bari 119