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