Appunti di Access 97 Guida introduttiva PROMETEO S.R.L. VIA GIUDECCA 15 30035 MIRANO (VE) Prometeo s.r.l. Appunti di Access 97 Progettazione di un database Un database è un insieme di informazioni relative ad un particolare oggetto o scopo, ad esempio tenere traccia degli ordini dei clienti o gestire una collezione di libri. Quando si progetta un database, è necessario suddividere in entità distinte le informazioni che si desidera gestire, quindi indicare il tipo di relazione esistente tra le informazioni. Con MS Access le entità in cui le informazioni sono memorizzate sono chiamate Tabelle. Supponiamo ad esempio di voler realizzare un database che archivi gli ordini dei clienti. Gli argomenti che si vogliono gestire sono: i dati dei clienti, gli ordini che questi ci inoltrano, i prodotti con le loro caratteristiche; ognuno di questi argomenti dovrà essere definito nella realizzazione di una tabella. Dopo aver definito tutte le tabelle sarà necessario impostare le relazioni, cioè i collegamenti logici tra i dati. Questa prima fase di progettazione è molto importante in quanto rappresenta la struttura sulla quale poggerà la successiva fase di realizzazione. Si può tranquillamente affermare che se l'applicazione poi non dovesse funzionare sarà per errori nel progetto piuttosto che per errori nella realizzazione. Inoltre un errore nella realizzazione si può correggere ricostruendo l'oggetto sbagliato, un errore di progetto potrebbe significare ricominciare tutto da capo. Una volta realizzato correttamente un database e inseriti i dati sarà possibile qualsiasi tipo di manipolazione, di ricerca, di aggregazione, di conteggio, ecc. Definizione delle tabelle La definizione delle tabelle rappresenta la fase più complessa nel processo di strutturazione del database. I risultati che si vogliono ottenere, le stampe, le maschere a video, le domande a cui si chiede una risposta, solitamente non forniscono le indicazioni sulla struttura delle tabelle che dovranno produrli. I principi fondamentali di cui tener conto durante questa operazione sono: Ogni informazione deve essere memorizzata in una sola tabella. In questo modo è possibile aggiornarla in un'unica posizione ed evita la possibilità che voci duplicate contengano informazioni diverse. Ciascuna tabella deve contenere informazioni relative ad un solo argomento. Questo consente di conservare le singole informazioni indipendentemente le une dalle altre. Se gli indirizzi dei clienti fossero contenuti nella stessa tabella degli ordini, eliminando tutti gli ordini di un cliente sarebbero perse anche tutte le informazioni relative al cliente stesso. Ogni Tabella è costituita da una struttura (il contenitore) e dai dati (il contenuto). La struttura di una tabella definisce le celle per la memorizzazione delle singole informazioni (es.: nome, cognome, indirizzo, ecc.): ogni cella è un campo della tabella. I campi possono essere paragonati a delle caratteristiche della tabella. Ogni record (o riga) all'interno della tabella contiene lo stesso insieme di campi o caratteristiche. Il campo "Indirizzo" di una tabella Clienti, ad esempio, contiene Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 2 Prometeo s.r.l. Appunti di Access 97 gli indirizzi dei clienti. Ogni record della tabella contiene dei dati relativi ad un cliente, il campo "Indirizzo" contiene l'indirizzo di quel cliente. Definizione dei campi Per definire i campi di una tabella, occorre stabilire quali informazioni relative alle persone, alle cose o agli eventi registrati nella tabella sono necessarie. Durante la progettazione dei campi è utile seguire le seguenti indicazioni: Ogni campo deve riferirsi direttamente all'argomento della tabella in cui è inserito. Se le stesse informazioni sono ripetute in più tabelle, significa che alcune tabelle contengono dei campi superflui. Più avanti, quando verranno analizzate le relazioni, si vedrà come raggruppare i dati provenienti da tabelle diverse. Non includere dati derivati o risultati di calcoli. I risultati di calcoli, solitamente, non vanno inseriti come campi ma vengono calcolati all'interno delle maschere o delle stampe dove si rendono necessari. Includere tutte le informazioni necessarie. Pensare a tutte le possibili richieste che si vorranno porre all'applicazione e stabilire se i dati memorizzati permetteranno di fornire delle risposte. Inserire campi per le informazioni raggruppate. Può essere utile inserire, ad esempio, un campo Nome e uno Cognome, piuttosto che un unico campo Nominativo. Se in un campo vengono raggruppate informazioni di diverso tipo, sarà difficile in seguito estrarle singolarmente. Ad ogni campo deve essere associato un tipo di dato per le informazioni che vi devono essere contenute. Questa scelta determina il tipo di valore che potrà essere immesso (testo, numerico, ecc.), il tipo di operazioni che si possono eseguire (operazioni matematiche, operazioni tra stringhe di testo, ecc.). La seguente tabella elenca i possibili tipi di dato in MS Access 97: Tipo di dati Valori memorizzati Testo Caratteri alfanumerici (fino a 255 caratteri) Memo Caratteri alfanumerici. In genere varie frasi o paragrafi (fino a 64.000 caratteri) Numerico Valori numerici interi o frazionari Data/ora Date e ore Valuta Valori monetari Contatore Un valore numerico intero che viene incrementato automaticamente per ciascun record aggiunto Sì/No Valori booleani del tipo Vero Falso Oggetto OLE Oggetti OLE, oggetti grafici o interi documenti prodotti da altre applicazioni quali ad esempio MS Word Chiave primaria e chiavi esterne Per fare in modo che le informazioni memorizzate in diverse tabelle vengano collegate (per collegare, ad esempio, un cliente con tutti i suoi ordini), è necessario che ciascuna tabella del database comprenda un campo o un set di campi che identifichi in modo univoco ogni singolo record della tabella. Tale campo o set di campi viene definito chiave primaria. Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 3 Prometeo s.r.l. Appunti di Access 97 Nella maggior parte dei casi questo campo sarà identificato da un unico numero di identificazione (MS Access mette a disposizione il tipo campo Contatore, che consente di attribuire automaticamente un numero progressivo ad ogni nuovo record). Se una tabella dispone già di un proprio identificatore, quale ad esempio un numero di serie, sarà possibile utilizzare tale numero come chiave primaria. Il concetto fondamentale comunque, è che la chiave primaria è un valore unico: non ci possono essere due record di una stessa tabella con la stessa chiave primaria. Una chiave primaria viene chiamata chiave esterna quando vi si fa riferimento da un'altra tabella. Ad esempio in una tabella Ordini può esservi il riferimento alla chiave primaria della tabella Clienti allo scopo di collegare ciascun ordine al cliente che lo ha emesso (vedi Definizione delle relazioni). Questo campo della tabella Ordini è denominato chiave esterna. Indici Se in una tabella si eseguono spesso operazioni di ricerca o di ordinamento dei record in base ad un campo, sarà possibile velocizzare tali operazioni creando un indice per il campo. E' possibile creare due tipi di indice: Indice univoco. Non sarà possibile immettere nel campo un valore esistente nello stesso campo di un altro record. Gli indici univoci vengono creati automaticamente per le chiavi primarie, ma è possibile impedire che vengano immessi valori duplicati anche in altri campi. Indice con duplicati possibili. E' consentita la duplicazione dei dati contenuti nel campo indicizzato. Si consiglia di associare ad indice un campo se si verificano le seguenti condizioni: Si prevede di ricercare valori specifici o intervalli di valori memorizzati nel campo oppure si prevede di ordinare i valori contenuti nel campo. Si prevede di memorizzare nel campo molti valori diversi. E' anche possibile creare indici multicampo, cioè indici costruiti sui valori di più campi contemporaneamente. Definizione delle relazioni MS Access è un sistema di gestione di database relazionale, permette cioè di impostare i collegamenti tra le tabelle, detti Relazioni, in sede di disegno dell'applicazione. Un sistema di questo tipo consente di memorizzare dati correlati in tabelle distinte e di definire le relazioni che le legano tra loro. Supponiamo ad esempio che si voglia conoscere l'anno di nascita dell'autore di un particolare libro. Disponiamo dei dati in una database contenente le tabelle Autori e Libri. Da un particolare libro sarà possibile risalire ai dati del suo autore grazie alla relazione esistente tra le due tabelle. La relazione è data dal fatto che nella tabella autori è stata definita la chiave primaria "ID_Autore" e al tempo stesso anche nella tabella Libri è stato definito un campo "ID_Autore" (chiave esterna) allo scopo di poter collegare ciascun libro con il suo autore. Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 4 Prometeo s.r.l. Appunti di Access 97 Per impostare una relazione tra due tabelle è quindi necessario aggiungere la chiave primaria di una tabella all'altra tabella. Per impostare la relazione in maniera corretta, è necessario definire dapprima la natura della relazione. Ne esistono di tre tipi: Relazioni uno a molti Relazioni molti a molti Relazioni uno a uno Relazioni uno a molti E' il tipo di relazione più comune in un database relazionale. In una relazione uno a molti ad un record della tabella A possono corrispondere molti record della tabella B, mentre ad un record della tabella B può corrispondere al massimo un record della tabella A. Consideriamo ad esempio due tabelle: Impiegati e Reparti; in un reparto lavorano molti impiegati, un impiegato lavora in un solo reparto. Per impostare questa relazione, è necessario creare una chiave primaria nella tabella che costituisce la parte uno (in questo caso la tabella Reparti) che chiameremo ID_Reparto. Dato che un impiegato lavora in un solo reparto, aggiungeremo il campo ID_Reparto anche nella tabella Impiegati per individuare il reparto in cui ciascun impiegato lavora. Relazioni molti a molti Nella relazione molti a molti ad un record della tabella A possono corrispondere più record della tabella B e viceversa. E' la relazione che intercorre tra una tabella Ordini e una tabella Prodotti. Un ordine contiene una lista di molti prodotti e, d'altro canto, un prodotto può essere presente su più ordini. Per risolvere una relazione di questo tipo, è necessario modificare la struttura del database aggiungendo una tabella, in modo da suddividere la relazione molti a molti in due relazioni uno a molti. Se noi aggiungiamo la tabella DettaglioOrdini otteniamo esattamente questo risultato: possiamo definire una relazione uno a molti tra Ordini (uno) e DettaglioOrdini (molti) e un'altra relazione uno a molti tra Prodotti (uno) e DettaglioOrdini (molti). La tabella DettaglioOrdini dovrà contenere il riferimento sia alla chiave primaria della tabella Ordini, sia alla chiave primaria della tabella Prodotti. La tabella Ordini e la tabella Prodotti non sono collegate direttamente, ma indirettamente tramite la tabella DettaglioOrdini. Relazioni uno a uno E' un tipo di relazione piuttosto insolito. Ad un record della tabella A può corrispondere un solo record della tabella B, così come ad un record della tabella B può corrispondere un solo record della tabella A. Questo tipo di relazione viene utilizzato molto raramente in quanto, nella maggior parte dei casi, le informazioni delle due tabelle possono essere contenute in una tabella unica. Una relazione uno a uno ha senso quando si vogliono aggiungere campi ad una tabella che però saranno valorizzati solamente per una parte dei record. Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 5 Prometeo s.r.l. Appunti di Access 97 Consideriamo ad esempio una tabella Impiegati, contenente i dati di tutti gli impiegati di una azienda. Alcuni di questi impiegati hanno partecipato ad un corso di lingue e noi vogliamo archiviare i dati relativi al corso. In questo caso può aver senso creare una tabella con i campi che vogliamo gestire e collegarla con una relazione uno a uno alla tabella degli impiegati. Per realizzare una relazione di questo tipo il campo di collegamento è chiave primaria in entrambe le tabelle. Integrità referenziale L'integrità referenziale assicura che le relazioni tra i record delle tabelle correlate siano valide e che non vengano eliminati o modificati per errore i dati correlati. Se nella definizione della relazione tra due tabelle si è scelto di applicare l'integrità referenziale, non sarà possibile immettere un valore nel campo chiave esterna che non sia anche presente nella chiave primaria della tabella correlata; non sarà possibile eliminare record dalla tabella primaria se esistono record corrispondenti in tabelle collegate; non sarà possibile modificare il valore di una chiave primaria se quel record dispone di record collegati. In MS Access è possibile ignorare le restrizioni sull'eliminazione o sulla modifica dei record correlati, pur mantenendo l'integrità referenziale selezionando, in fase di definizione della relazione, le opzioni "Aggiorna campi correlati a catena" ed "Elimina record correlati a catena". Le Query La funzionalità di un database risiede nella possibilità di visualizzare i dati inseriti, organizzati secondo un ordine specifico. Con le query è possibile porre al database delle domande specifiche sui dati contenuti nelle tabelle, ad esempio quali sono i clienti di una certa provincia o quale venditore ha acquisito il maggior numero di ordini. Una query quindi, è uno strumento che consente di porre una domanda sui dati memorizzati nelle tabelle. Il tipo di dati estratti dal database dipende dal modo in cui la query è stata progettata. Dopo che viene eseguita una query, i dati richiesti vengono raccolti in un dynaset. Un dynaset rappresenta un insieme dinamico di dati provenienti da una o più tabelle, selezionati e ordinati in base all'impostazione della query. Ogni volta che si esegue una query, verrà creato un dynaset contenente i dati selezionati. Perché utilizzare le query Le query sono uno strumento molto flessibile che ci consentono di manipolare e gestire i dati con estrema semplicità. Attraverso le query è possibile: Scegliere i campi. Si possono scegliere le informazioni che si desidera visualizzare. Ad esempio, è possibile creare una query che visualizzi i nomi dei clienti e i corrispondenti numeri telefonici senza gli indirizzi o altre informazioni. Scegliere i record. E' possibile specificare delle condizioni che i record devono soddisfare per essere inclusi nel dynaset. Si può scegliere ad esempio di includere solo i clienti di una certa zona geografica. Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 6 Prometeo s.r.l. Appunti di Access 97 Ordinare i record. E' possibile visualizzare i record in un ordine specifico. Ad esempio l'elenco dei clienti in ordine alfabetico. Combinare i dati memorizzati su più tabelle. E' possibile utilizzare le query per rispondere a domande sui dati provenienti da più tabelle. Eseguire calcoli. Possono essere creati campi "virtuali" che visualizzano il risultato di un calcolo. Questi campi non esistono nella realtà, ma vengono creati nel dynaset nel momento in cui la query è eseguita. Utilizzare le query come fonte di dati per maschere, report e altre query. Per selezionare solo determinati dati da visualizzare in una maschera o report, è possibile creare una query di selezione e basare su di essa la maschera o il report. Ogni volta che si apre la maschera o si stampa il report, la query estrae dalle tabelle le informazioni aggiornate. Apportare modifiche ai dati nelle tabelle. Con le query di comando si possono aggiornare, cancellare o aggiungere un gruppo di record con una sola operazione. E' inoltre possibile creare una nuova tabella che includa record provenienti da una o più tabelle esistenti. Tipi di query Si possono creare diversi tipi di query: Query di selezione. E' il tipo più comune. Consentono di visualizzare i dati delle tabelle, analizzarli e perfino apportarvi delle modifiche. Query a campi incrociati. Presentano i dati con instestazioni di riga e di colonna come in un foglio di calcolo. Consentono di riassumere grandi quantità di informazioni in un formato pratico. Query di comando. Apportano modifiche a un insieme di record con un'unica operazione. Con questo tipo di query è possibile creare tabelle, eliminare record, accodarne di nuovi o modificare quelli esistenti. Altre query. Esistono altri tipi di query, quali ad esempio le query di unione, le query pass-through e le query di definizione dati, che però sono rivolte agli utenti più esperti che lavorano con database server e che conoscono il linguaggio SQL Utilizzo dei criteri nelle query I criteri sono delle restrizioni poste in una query per identificare i record specifici con i quali si desidera lavorare. Invece di visualizzare tutti i fornitori della propria società, ad esempio, è possibile visualizzare soltanto i fornitori del Giappone. Per effettuare tale operazione, si specificano i criteri che limitano i risultati ai record il cui campo Nazione sia "Giappone". Per specificare dei criteri per un campo si immette un'espressione nella cella Criteri della griglia di struttura. L'espressione dell'esempio precedente è "Giappone". È possibile utilizzare espressioni complesse quali, ad esempio, Between 1 and 5000 per porre la condizione su un intervallo di valori, gli operatori > (maggiore) < (minore) per filtrare valori più grandi o più piccoli di un certo limite. Si possono immettere dei criteri aggiuntivi per lo stesso campo o per campi diversi. Quando si digitano delle espressioni in più di una cella Criteri, queste vengono combinate con l'operatore And oppure Or. Se le espressioni si trovano in celle diverse nella stessa riga, sarà utilizzato l'operatore And, il che significa Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 7 Prometeo s.r.l. Appunti di Access 97 che verranno restituiti solo i record che soddisfano i criteri in tutte le celle. Se le espressioni si trovano in righe diverse della griglia di struttura, sarà utilizzato l'operatore Or, il che significa che verranno restituiti i record che soddisfano i criteri di alcune celle. Query di comando Quando si crea una query, viene automaticamente creata una query di selezione a meno che non si scelga un tipo differente. Quando si esegue una query di selezione, viene automaticamente visualizzato il dynaset contenete i dati estratti dalle tabelle. E' possibile apportare modifiche ai dati del dynaset, ma solo un record alla volta. Se si devono apportare molte modifiche dello stesso tipo, utilizzando una query di comando tali modifiche potranno essere svolte più velocemente. Query di eliminazione Elimina un gruppo di record che soddisfano ai criteri immessi, da una o più tabelle. Con le query di eliminazione vengono eliminati sempre record interi, non solo determinati campi al loro interno. Query di accodamento Aggiunge un gruppo di record di una o più tabelle alla fine di una tabella. Le query di accodamento risultano utili per aggiungere record basati su determinati criteri. Query di aggiornamento Apporta modifiche globali ad un gruppo di record in una o più tabelle. Consente, ad esempio, di aumentare del 10% il prezzo di tutti gli articoli oppure del 5% il salario di tutti i dipendenti appartenenti ad una determinata categoria lavorativa. Query di creazione tabella Consente di estrarre da una o più tabelle i record richiesti e di utilizzarli per creare una nuova tabella. Possono essere utili per creare una tabella da esportare verso altri database, creare report che stampano i dati relativi ad un determinato momento, eseguire una copia di backup di una tabella, creare una tabella di resoconto contenente i vecchi record. Query a campi incrociati Le query a campi incrociati consentono di visualizzare i dati in formato compatto di riepilogo, simile a quello di un foglio di calcolo. Una query a campi incrociati può presentare una grande quantità di dati riepilogativi in un formato più leggibile che consenta facilmente di confrontare i valori e di verificare le tendenze. Consideriamo, ad esempio, una query di selezione che restituisca il seguente insieme di dati: Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 8 Prometeo s.r.l. Appunti di Access 97 Venditore Numero ordine Nazione cliente Rossi 1 Italia Rossi 4 Germania Rossi 7 Germania Rossi 9 Germania Bianchi 2 Francia Bianchi 5 Francia Bianchi 8 Germania Verdi 3 Francia Verdi 6 Germania Con una query a campi incrociati, possiamo analizzare la tabella in questo modo: Venditore Francia Germania Rossi Italia 3 Bianchi 2 1 Verdi 1 1 1 Abbiamo ottenuto il numero di ordini che ciascun venditore ha realizzato in ciascuna nazione. Le Maschere Le maschere costituiscono l'interfaccia tra i dati e l'utente. Possono essere utilizzate per eseguire molteplici operazioni, quali l'immissione, la modifica, la visualizzazione e, all'occorrenza, la stampa dei dati. Consentono di organizzare i dati in modo analogo alle schede su carta da compilare a penna. Funzionamento delle maschere Le maschere, generalmente, sono utilizzate come strumento per agevolare l’immissione di dati da parte dell’utente. Teoricamente sarebbe possibile inserire i dati anche direttamente nelle tabelle, ma questo sarebbe piuttosto macchinoso in una applicazione di una certa complessità. Possiamo distinguere le maschere in due categorie: Maschere legate. Sono basate su una tabella o su una query e consentono di gestire i dati. Maschere non legate. Non sono basate su nessuna tabella o query. Solitamente questo tipo di maschere è utilizzato per consentire all’utente di fare delle scelte o per visualizzare messaggi. I Controlli nelle maschere Tutte le informazioni di una maschera sono contenute nei controlli. I controlli sono oggetti presenti nella maschera e consentono di visualizzare i dati, eseguire le operazioni o migliorare l’aspetto grafico. Tutto ciò che è possibile vedere in una maschera è rappresentato da un controllo: i campi da riempire, le etichette dei campi, linee, pulsanti, ecc. sono tutti controlli. Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 9 Prometeo s.r.l. Appunti di Access 97 Alcuni controlli possono essere legati ad un campo della tabella o query su cui la maschera è basata, altri rappresentano delle etichette o didascalie, altri ancora visualizzano il risultato di calcoli. Controlli legati. Sono collegati ad un campo della tabella o query della maschera. Consentono di visualizzare immettere e aggiornare i valori contenuti nei campi del database. Controlli non legati. Non dispongono di una fonte dati (un campo o un’espressione). Sono utilizzati per visualizzare informazioni: le etichette dei campi o il titolo della maschera. Possono essere utilizzati anche per immettere dati che non si vuole memorizzare nel database. Controlli calcolati. La fonte dati di questi controlli è un’espressione piuttosto che un campo. Visualizzano il risultato dell’espressione. Ad esempio l’importo di una riga di ordine, può essere calcolato moltiplicando il valore del campo “Quantità” per il valore del campo “PrezzoUnitario”. “Proprietà” di maschere e controlli In MS Access le “proprietà” sono utilizzate per impostare le caratteristiche di maschere e controlli. Nella maschera le proprietà hanno effetto sull’aspetto e sul funzionamento. Ad esempio consentono di definire se la maschera è di sola lettura, se deve essere visualizzata al centro dello schermo, qual è l’origine dei dati che va a gestire, ecc. Anche i controlli dispongono di proprietà che ne determinano la struttura e l’aspetto, come pure l’aspetto del testo e dei dati in esso contenuti. Sottomaschere L’utilizzo di sottomaschere consente di includere in una maschera informazioni provenienti da più tabelle. Una sottomaschera è una maschera all’interno di un’altra maschera. In MS Access, la maschera primaria è definita “maschera principale“ mentre la maschera all’interno di quella principale viene detta “sottomaschera”. Utilizzando le sottomaschere è possibile visualizzare la relazione tra i record di due o più tabelle. Si rivelano particolarmente utili quando si desidera visualizzare i dati contenuti in tabelle o query collegate da una relazione uno a molti. La maschera principale rappresenta la parte “uno” mentre la sottomaschera la parte “molti”. Ad esempio, in una applicazione di gestione ordini, si potrebbe progettare la maschera di inserimento dell’ordine con la maschera principale per l’immissione dei dati di testata (numero ordine, data, cliente, ecc.) e la sottomaschera per il dettaglio (articoli dell’ordine). I Report Il modo migliore per conferire ai propri dati l’aspetto di un documento stampato consiste nell’utilizzare i report. Anche le maschere e le tabelle possono essere stampati, ma i report consentono un maggior controllo sui dati e offrono varie possibilità per la presentazione delle informazioni di riepilogo. Un report consente di estrarre e presentare i dati sotto forma di informazioni logiche che possono essere utilizzate e distribuite a tutti. Le etichette postali, le Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 10 Prometeo s.r.l. Appunti di Access 97 fatture, i riepiloghi delle vendite sono tutti esempi di report che si possono realizzare. Funzionamento dei report Il funzionamento dei report, per molti versi è molto simile a quello delle maschere. Alcune informazioni contenute nel report stampato provengono da una query o da una tabella, ovvero dalla fonte dati del report. Altre informazioni sono invece memorizzate come parte della struttura (titolo del report, intestazioni). Il collegamento tra un report e la relativa fonte dati viene stabilito utilizzando i controlli. I Controlli nei report Tutte le informazioni che un report può stampare, sono contenute nei controlli. I controlli sono oggetti presenti nel report che consentono di visualizzare i dati o migliorare l’aspetto grafico. Alcuni controlli possono essere legati ad un campo della fonte dati del report, altri rappresentano titoli, etichette o didascalie, altri ancora visualizzano il risultato di calcoli. Controlli legati. Sono collegati ad un campo della fonte dati. Consentono di visualizzare valori provenienti da campi del database. Controlli non legati. Non dispongono di una fonte dati. Sono utilizzati per visualizzare informazioni: le etichette dei campi o il titolo del report. Controlli calcolati. La fonte dati di questi controlli è un’espressione invece di un campo. Visualizzano il risultato dell’espressione. Ad esempio il prezzo scontato di un prodotto, può essere calcolato moltiplicando il valore del campo “PrezzoUnitario” per il valore del campo “Sconto”. Le sezioni Le sezioni sono elementi predefiniti della struttura di un report che consentono di migliorarne la funzionalità. Ad esempio se si desidera stampare delle informazioni introduttive al report, è possibile aggiungere un’intestazione che venga stampata solo sulla prima pagina. Sono disponibili diversi tipi di sezione ognuna delle quali ha uno scopo preciso: Intestazione report. Compare una sola volta all’inizio del report. Può essere utilizzata per il titolo del report. Compare prima dell’intestazione pagina sulla prima pagina Intestazione pagina. Compare nella parte superiore di ogni pagina. Viene utilizzata per stampare i titoli delle colonne in un report in forma tabellare. Intestazione gruppo. Compare all’inizio di un nuovo gruppo di record e viene utilizzata per visualizzare voci quali il nome del gruppo (vedi Ordinamento e raggruppamento di dati). Corpo. Contiene la parte principale dei dati. I controlli in questa sezione sono ripetuti per ogni record della fonte dati. Piè di pagina gruppo. Compare alla fine di un gruppo di record. Si utilizza per i totali di gruppo (vedi Ordinamento e raggruppamento di dati). Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 11 Prometeo s.r.l. Appunti di Access 97 Piè di pagina pagina. Compare in fondo ad ogni pagina del report. Si utilizza per inserire la numerazione delle pagine. Piè di pagina report. Compare una sola volta alla fine del report ed è utilizzato per stampare i totali complessivi. Compare prima del Piè di pagina pagina. Ordinamento e raggruppamento di dati I dati presenti in un report possono essere ordinati in base ai valori di uno o più campi. E’ anche possibile separare in gruppi i record ordinati. Il raggruppamento consente di organizzare e disporre i record in modo da poter identificare con facilità le relazioni tra i gruppi e trovare rapidamente le informazioni desiderate. Il raggruppamento dei dati consente inoltre di calcolare dati di riepilogo, quali totali e percentuali. Un gruppo è un insieme di record che possono essere aggregati in base a qualsiasi campo o espressione sulla quale sia stato effettuato l’ordinamento. Ogni gruppo dispone di una intestazione e di un piè di pagina. Si possono anche definire più livelli di raggruppamento nidificati. Consideriamo, ad esempio, una query che restituisca il seguente insieme di dati: Cliente Numero Ordine Importo B & B Comunications 1 1.250.000 B & B Comunications 4 863.000 B & B Comunications 7 255.000 B & B Comunications 10 2.230.000 B & B Comunications 12 455.000 Il Magazzino s.p.a. 2 680.000 Il Magazzino s.p.a. 5 950.000 Il Magazzino s.p.a. 8 468.000 Il Magazzino s.p.a. 11 936.000 Il Bottegone 3 1.563.000 Il Bottegone 6 986.000 Il Bottegone 9 763.000 Utilizzando i raggruppamenti, potremmo ottenere un report di questo tipo: B & B Comunications 1 1.250.000 4 863.000 7 255.000 10 2.230.000 12 455.000 Totale B & B Comunications 5.053.000 Il Magazzino s.p.a. 2 680.000 5 950.000 8 468.000 11 936.000 Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 12 Prometeo s.r.l. Totale Il Magazzino s.p.a. Appunti di Access 97 3.034.000 Il Bottegone 3 1.563.000 5 986.000 9 763.000 Totale Il Bottegone 3.312.000 TOTALE GENERALE 11.399.000 Sottoreport L’utilizzo di sottoreport consente di combinare due o più report in uno unico. Un sottoreport è un report inserito in un altro report. Quando si combinano più report, uno di essi rappresenta il report principale. Il report principale può essere legato o non legato, cioè può essere basato o meno su una tabella o query. Un report principale non legato è utilizzato per contenere sottoreport non correlati: ad esempio, se si desidera ottenere un’unica stampa che riepiloghi sia le vendite per rappresentante, sia le vendite per categoria di prodotto. Se il report principale è legato, cioè dispone di una sua fonte dati, il sottoreport può essere utilizzato per estrarre i dati di dettaglio (relazione uno a molti tra due tabelle). Ad esempio, se il report principale è basato sulla tabella Ordini, possiamo inserire un sottoreport per visualizzare le righe di dettaglio di ciascun ordine. Error! Use the Home tab to apply Titolo 1 to the text that you want to appear here. 13