Caratteristiche di MS Access Database Creazione ... - DBGroup
Caratteristiche di MS Access Database Creazione ... - DBGroup
Caratteristiche di MS Access Database Creazione ... - DBGroup
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Sistemi Informativi<br />
Corso <strong>di</strong> Laurea in:<br />
Ingegneria della Gestione Industriale<br />
Ingegneria dell’Integrazione d’Impresa<br />
Esercitazioni ACCESS<br />
Anno Accademico 2006-2007<br />
<strong>Caratteristiche</strong> <strong>di</strong> <strong>MS</strong> <strong>Access</strong><br />
• Interazione a finestre o me<strong>di</strong>ante SQL<br />
• Funzioni (vista utente):<br />
– creazione e consultazione <strong>di</strong> tabelle, interfaccia tabellare<br />
– interfaccia a schede personalizzabili (un record per volta)<br />
– interfaccia SQL<br />
– salvataggio e mo<strong>di</strong>fica <strong>di</strong> interrogazioni<br />
– generazione <strong>di</strong> report<br />
– multiutenza<br />
• Funzioni (vista sistema)<br />
– chiavi primarie e in<strong>di</strong>ci<br />
– valori nulli, regole <strong>di</strong> vali<strong>di</strong>tà e domini <strong>di</strong> valori<br />
– gestione vincoli <strong>di</strong> integrità referenziale<br />
– programmazione<br />
"<br />
!<br />
<strong>Database</strong><br />
• è un contenitore <strong>di</strong> tabelle, maschere, query, report, moduli,<br />
macro, pagine<br />
• le tabelle contengono i dati, gli altri tipi <strong>di</strong> documenti<br />
forniscono strumenti <strong>di</strong> accesso personalizzati<br />
• ogni strumento <strong>di</strong> accesso può essere generato<br />
automaticamente in forma standard, poi mo<strong>di</strong>ficato secondo<br />
le esigenze<br />
• ogni strumento può essere usato o mo<strong>di</strong>ficato<br />
• è possibile importare/esportare DB da/verso i dbms più<br />
<strong>di</strong>ffusi<br />
• i dati possono essere facilmente collegati ad altri strumenti<br />
<strong>di</strong> ambiente windows (es: excel, word, ...)<br />
• dal punto <strong>di</strong> vista DOS è un unico file con estensione .MDB<br />
• All’apertura <strong>di</strong> <strong>Access</strong> selezionare<br />
<strong>Database</strong> <strong>di</strong> <strong>Access</strong> vuoto oppure<br />
selezionare Nuovo database dal menu<br />
File<br />
• Nella finestra Nuovo selezionare<br />
l’icona <strong>Database</strong> vuoto nella scheda<br />
Generale e confermare con OK<br />
• Dalla finestra Salva nuovo database<br />
assegnare un nome al database da<br />
creare, scegliere la cartella in cui <strong>di</strong><br />
desidera salvare il database e fare clic<br />
sul pulsante Crea.<br />
• Esempio: studente.mdb<br />
<strong>Creazione</strong> <strong>Database</strong><br />
#<br />
$
Finestra <strong>di</strong> database principale<br />
)<br />
• tipi <strong>di</strong> oggetti:<br />
Oggetti <strong>di</strong> un <strong>Database</strong><br />
– tabelle: contenitori <strong>di</strong> dati (relazionali)<br />
– query: operazioni su dati (<strong>di</strong> consultazione o mo<strong>di</strong>fica) e<br />
schema<br />
– maschere: interfacce visuali per l’accesso ai dati<br />
– report: produzione <strong>di</strong> stampe<br />
– macro: sequenze <strong>di</strong> operazioni pre-registrate e<br />
rieseguibili a comando<br />
– moduli: applicazioni programmate<br />
– Pagine: produzione <strong>di</strong> pagine Web per l’accesso ai dati<br />
• ogni oggetto può essere creato, memorizzato,<br />
utilizzato, mo<strong>di</strong>ficato<br />
• tramite tabelle, maschere, query e pagine si possono<br />
anche mo<strong>di</strong>ficare i dati<br />
%<br />
DDL<br />
• CREATE TABLE e ALTER TABLE:<br />
– Proposizione CONSTRAINT<br />
• CREATE INDEX<br />
• CREATE PROCEDURE<br />
• CREATE VIEW<br />
• DROP TABLE, INDEX, PROCEDURE,<br />
VIEW<br />
&<br />
CREATE TABLE<br />
((((CREATE [TEMPORARY] TABLE tabella<br />
(campo1 tipo [(<strong>di</strong>mensioni)] [NOT NULL]<br />
[WITH COMPRESSION | WITH COMP]<br />
[in<strong>di</strong>ce1]<br />
[, campo2 tipo [(<strong>di</strong>mensioni)] [NOT<br />
NULL] [in<strong>di</strong>ce2] [, ...]]<br />
[, CONSTRAINT in<strong>di</strong>cemulticampo [,<br />
...]])<br />
• tabella: nome della tabella da creare.<br />
• campo1, campo2 : nome del campo o dei campi da<br />
creare nella nuova tabella. È necessario creare<br />
almeno un campo.<br />
'
CREATE TABLE (2)<br />
• tipo: tipo <strong>di</strong> dati del campo nella nuova tabella.<br />
• <strong>di</strong>mensioni: <strong>di</strong>mensioni del campo in caratteri,<br />
solo per campi con tipo <strong>di</strong> dati Testo e Binario.<br />
• in<strong>di</strong>ce1, in<strong>di</strong>ce2 : proposizione CONSTRAINT<br />
che definisce un in<strong>di</strong>ce a campo singolo.<br />
+,-.(/ ,(/01, 20-03,14(/,<br />
5 65 .7,8808,.96<br />
:6;37,8,.96<br />
@A " (BC16(-67(307011676 =9(D9(305 -.(/,(ED6;1.(1,-.(F(-.;;,B,G6<br />
5 65 .7,88076(ED0G;,0;,(1,-.(/ ,(/01,H(>.9<br />
I,696(6JJ611D010(0G3D90(3.9I67;,.96(/,<br />
/01,(K 0/(6;65 -,.L(,9(16;1.M H(=G(5 ./.(,9(3D,<br />
GN,9-D1(/6,(/01,(0II,696(,9(D9(305 -.<br />
B,907,.(/61675 ,90(,G(5 ./.(,9(3D,(I,696<br />
I,;D0G,8801.(GN.D1-D1(/6,(/01,H<br />
WA ' (BC16 T9(9D5 67.(,9167.(-7.-.78,.901.(3.5 -76;.<br />
170(! X! Y ! ! H# # & H! * # H% ' ) L$ & & L) ' * ' (6<br />
Y ! ! H# # & H! * # H% ' ) H$ & & L) ' * & H<br />
:+W+=UW(K I6/676<br />
:VT+W^W@ $ (BC16 T9(9D5 67.(,9167.(GD9S .(3.5 -76;.(170<br />
! X! ! H" $ & H$ ' # H% $ ' (6(! H" $ & H$ ' # H% $ & H<br />
:W2=UZ " & (BC16 +,-.(/ ,(/01,(9D5 67,3.(6;011.(3.9(I0G.7,<br />
3.5 -76;,(170(" * ! ' (](/0(" (0(](" * ! ' (](" H(_<br />
-.;;,B,G6(/6J ,9,76(G0(- 763,;,.96(K /0(" (0(! ' M<br />
6(G0(-7.-.78,.96(K / 0(* (0(-763,;,.96<br />
/6J ,9,10M H(Z0(-763,;,.96(6(G0(-7.-.78,.96<br />
-76/6J ,9,16(;.9.(7,;-611,I05 6916(" ' (6(* H<br />
+W`+ ! (BC16(-67(307011676 :0(867.(0/(D9(5 0;;,5 .(/,(! L" $ (^
CONSTRAINT (2)<br />
• nome: nome del vincolo da creare.<br />
• primaria1, primaria2 : nome del campo o dei campi da definire<br />
come chiave primaria.<br />
• univoca1, univoca2 : nome del campo o dei campi da definire<br />
come chiave univoca.<br />
• nonnull1, nonnull2 : nome del campo o dei campi limitati a<br />
contenere valori non Null.<br />
• rif1, rif2 : nome <strong>di</strong> uno o più campi con funzione <strong>di</strong> chiave<br />
esterna che si riferiscono ai campi <strong>di</strong> un'altra tabella.<br />
• tabellaesterna : nome della tabella esterna che contiene il campo<br />
o i campi specificati da campoesterno.<br />
• campoesterno1, campoesterno2 : nome del campo o dei campi in<br />
tabellaesterna specificati da rif1, rif2. È possibile omettere questa<br />
proposizione se il campo a cui si fa riferimento è la chiave<br />
Esempio 1 : schema E/R<br />
primaria <strong>di</strong> tabellaesterna. " #<br />
" $<br />
Docente<br />
Corso<br />
(0,N)<br />
(0,1)<br />
CD<br />
CC<br />
Esempio 1 : sc. relazionale<br />
:V2W>+WK 2:L(>VUWL(2V^>VUWL<br />
2=++M<br />
2V@PVK 22L(>VUWL(2:V2W>+WM<br />
\fh(2:V2W>+W(@W\W@W>2WP<br />
:V2W>+W<br />
Esempio 1 : DDL<br />
2@W+W(++W<br />
K<br />
2:(=>+W^W@L<br />
>VUW(16b1K # * M (>V+(>TZZL<br />
2V^>VUW(16b1K # * M (>V+(>TZZL<br />
2=++(16b1K ! M L<br />
2V>P+@=>+(-cd /.36916(e@=U@A(fWAK 2:M<br />
M g<br />
" )<br />
" %
Esempio 1 : DDL<br />
2@W+W(+.5 6(3R07K # * M (>V+(>TZZL<br />
2:V2W>+W(=>+W^W@L<br />
2V>P+@=>+(-cd 3.7;.(e@=U@A(fWAK 22M L<br />
2V>P+@=>+(Jcd 3.7;.d /.36916((\V@W=^>(fWA<br />
K 2:V2W>+WM (<br />
@W\W@W>2WP<br />
:V2W>+WK 2:M<br />
M g<br />
" &<br />
Immissione dei dati<br />
• Aprire la tabella in modalità Foglio Dati facendo doppio<br />
clic sul suo nome oppure tramite il pulsante Apri.<br />
• Posizionarsi sull’ultimo record vuoto.<br />
• Digitare il contenuto del record.<br />
Successivamente è possibile:<br />
– Spostarsi all’interno della tabella tramite i tasti della<br />
tastiera o tramite mouse<br />
– Selezionare e mo<strong>di</strong>ficare il contenuto<br />
– Eliminare un record<br />
– Annullare le mo<strong>di</strong>fiche apportate<br />
– Correggere gli errori <strong>di</strong> immissione<br />
" '<br />
Personalizzazione Foglio Dati<br />
• E’ possibile:<br />
– mo<strong>di</strong>ficare l’ampiezza della colonna<br />
– bloccare le colonne in modo che restino sempre<br />
visualizzate<br />
– mo<strong>di</strong>ficare l’altezza <strong>di</strong> una riga<br />
– visualizzare o nascondere le linee della griglia<br />
– mo<strong>di</strong>ficare il tipo <strong>di</strong> carattere<br />
– salvare le mo<strong>di</strong>fiche <strong>di</strong> visualizzazione (Salva layout)<br />
Esempio 1 : integrità<br />
• Provare ad inserire dati e a comprendere:<br />
– Chiave primaria<br />
– Primo vincolo <strong>di</strong> integrità<br />
– Vincolo <strong>di</strong> integrità referenziale: le opzioni ON<br />
UPDATE CASCADE e ON DELETE CASCADE<br />
• Utilizzare la Visualizzazione foglio dati<br />
• Utilizzare la finestra Strumenti\Relazioni per la<br />
visualizzazione e la mo<strong>di</strong>fica delle proprietà delle<br />
relazioni<br />
" Y<br />
! *
Estensione esempio 1<br />
Estensione esempio 1 (2)<br />
Docente<br />
(0,N)<br />
CD<br />
P+T:W>+WK U017,3.G0L(>.5 6L(2.S 9.5 6L<br />
=9/,7,88.L(2,110L(>.16d ;1D/6916M<br />
Corso<br />
(0,1)<br />
(0,N)<br />
CC<br />
Data<br />
ESAME<br />
Voto<br />
(0,N)<br />
Matricola<br />
Studente<br />
WPUWK U017,3.G0L(22.7;.L(:010L(O.1.M<br />
\fh(U017,3.G0(@W\W@W>2WP(P+T:W>+W<br />
\fh(22.7;.(@W\W@W>2WP(2V@PV<br />
! "<br />
! !<br />
Estensione esempio 1 (3)<br />
CREATE TABLE STUDENTE<br />
(<br />
MATRICOLA INTEGER,<br />
NOME char(30) NOT NULL,<br />
COGNOME char(30) NOT NULL,<br />
INDIRIZZO char(40),<br />
CITTA char(2),<br />
NOTE_STUDENTE memo,<br />
CONSTRAINT pk_studenti PRIMARY<br />
KEY(MATRICOLA)<br />
);<br />
! #<br />
Estensione esempio 1 (4)<br />
2@W+W(++W^W@L<br />
22.7;.(2a@K ! M L<br />
OV+V(PUZZ=>+L<br />
:+(:+W(>V+(>TZZL<br />
2V>P+@=>+(-cd 6;05 ,;.;169D1,(e@=U@A<br />
fWAK U+@=2VZL22.7;.M L<br />
2V>P+@=>+(Jcd 6;05 ," ((\V@W=^>(fWA(K U+@=2VZM<br />
@W\W@W>2WP(P+T:W>+WK U+@=2VZM L<br />
2V>P+@=>+(Jcd 6;05 ,! ((\V@W=^>(fWA(K 22.7;.M (@W\W@W>2WP<br />
2V@PV<br />
M g<br />
! $
CHECK<br />
• E’ possibile impostare vincoli <strong>di</strong> check<br />
solamente da Visualizzazione struttura<br />
! )<br />
Z+W@(+(!&'(()"* '(jK +&* $,-&(,&M k(j>V+<br />
>TZZk<br />
Z+W@(<br />
jL(2V>P+@=>+(.k(l<br />
2VZTU>(!&'(()"* '(jK +&* $,-&(,&M k(l<br />
(((( j2V>P+@=>+(mn (l<br />
:@Ve(i 2VZTU>()"* '((=(2V>P+@=>+<br />
,(* $)(,-!/"&,!0n<br />
n<br />
! %<br />
ALTER TABLE (2)<br />
ALTER TABLE (3)<br />
• Utilizzare(::(2VZTU>(per aggiungere un<br />
nuovo campo alla tabella.<br />
• Utilizzare(Z+W@(2VZTU>(per mo<strong>di</strong>ficare il<br />
tipo <strong>di</strong> dati <strong>di</strong> un campo esistente.<br />
• Utilizzare ::(2V>P+@=>+(per aggiungere<br />
un constraint.<br />
• Utilizzare(:@Ve(2VZTU>(per eliminare un<br />
campo.<br />
• Utilizzare(:@Ve(2V>P+@=>+(per eliminare<br />
un constraint.<br />
• tabella: nome della tabella da mo<strong>di</strong>ficare.<br />
• campo: nome del campo da aggiungere,<br />
mo<strong>di</strong>ficare o eliminare da tabella.<br />
• tipo: tipo <strong>di</strong> dati <strong>di</strong> campo.<br />
• <strong>di</strong>mensioni: <strong>di</strong>mensioni del campo in caratteri.<br />
• in<strong>di</strong>ce: in<strong>di</strong>ce per campo.<br />
• …: ve<strong>di</strong> CONSTRAINT<br />
• nomeconstraint: nome dell'in<strong>di</strong>ce multicampo da<br />
rimuovere.<br />
! &<br />
! '
ALTER TABLE - ESEMPIO<br />
Z+W@(+(:+d =>=q=V(:+WL<br />
:+d \=>W(:+WL(V@@=V(2a@K ) * M L<br />
:T@+d 2V@PV(=>+W^W@<br />
• Provare ad aggiungere l’anno accademico alla<br />
tabella corso<br />
• Aggiungere i campi in<strong>di</strong>rizzo, telefono, e-mail, e<br />
data <strong>di</strong> nascita alla tabella docente<br />
! Y<br />
ADD COLUMN E NOT NULL<br />
• Provare ad eseguire il seguente statement su una<br />
tabella(:V2W>+W(che contiene già dei record:<br />
Z+W@(++W<br />
::(2VZTU>(2\(2a@K " % M (>V+(<br />
>TZZ<br />
• In <strong>Access</strong> funziona! In <strong>MS</strong> SQL Server e Sybase<br />
ASA non funziona.<br />
• Il comportamento <strong>di</strong> <strong>Access</strong> non è corretto perché<br />
il database si trova ora in uno stato<br />
inconsistente!<br />
# *<br />
ALTER TABLE – ESEMPIO (2)<br />
ALTER TABLE (4)<br />
• Esempio <strong>di</strong> mo<strong>di</strong>fica del tipo <strong>di</strong> dato <strong>di</strong> una<br />
colonna:<br />
Z+W@(+(V@@=V(UWUV<br />
• Esempio <strong>di</strong> eliminazione <strong>di</strong> una colonna:<br />
Z+W@(+
Esercizio ALTER TABLE<br />
CC<br />
Corso<br />
(0,1)<br />
SI_TIENE_IN<br />
CREATE INDEX<br />
• Da SQL:<br />
CREATE [ UNIQUE ] INDEX in<strong>di</strong>ce<br />
ON tabella (campo [ASC|DESC][, campo [ASC|DESC],<br />
...])<br />
[WITH { PRIMARY | DISALLOW NULL | IGNORE<br />
NULL }]<br />
• In Visualizzazione struttura, menu Visualizza\In<strong>di</strong>ci<br />
(0,N)<br />
Laboratorio<br />
CL<br />
# #<br />
# $<br />
CREATE INDEX (5)<br />
• UNIQUE: impe<strong>di</strong>sce la presenza <strong>di</strong> valori duplicati.<br />
• Nella proposizione opzionale WITH, è possibile applicare<br />
regole <strong>di</strong> convalida dei dati. È possibile:<br />
– Impe<strong>di</strong>re voci Null nel campo o nei campi in<strong>di</strong>cizzati <strong>di</strong><br />
nuovi record utilizzando l'opzione DISALLOW NULL.<br />
– Impe<strong>di</strong>re che i record con valori Null nel campo o nei<br />
campi in<strong>di</strong>cizzati vengano inclusi nell'in<strong>di</strong>ce utilizzando<br />
l'opzione IGNORE NULL.<br />
– Definire il campo o i campi in<strong>di</strong>cizzati come chiave<br />
primaria utilizzando la parola riservata PRIMARY. Ciò<br />
implica che la chiave sia univoca, in modo che si possa<br />
omettere la parola riservata UNIQUE.<br />
DROP<br />
• DROP TABLE nometabella<br />
• DROP INDEX nomein<strong>di</strong>ce ON nometabella<br />
• DROP PROCEDURE nomeprocedura<br />
• DROP VIEW nomeview<br />
# )<br />
# %
Le Maschere<br />
• maschera <strong>di</strong> visualizzazione, aggiornamento e<br />
inserimento<br />
• può essere generata automaticamente a partire dalla<br />
struttura <strong>di</strong> una tabella o <strong>di</strong> una query<br />
• può essere personalizzata dal punto <strong>di</strong> vista sia grafico<br />
che funzionale<br />
! menu a ten<strong>di</strong>na, pulsanti <strong>di</strong><br />
opzione, procedure da associare ai<br />
vari eventi (pressione del mouse<br />
in un punto determinato, rilascio<br />
del mouse, ...)<br />
! procedure <strong>di</strong> controllo per vincoli<br />
<strong>di</strong> integrità<br />
Le Maschere<br />
• consentono <strong>di</strong> visualizzare e gestire in modo <strong>di</strong>verso i dati<br />
contenuti nelle tabelle<br />
<strong>Creazione</strong> <strong>di</strong> una maschera:<br />
• Visualizzare la scheda Maschere<br />
• Si può utilizzare:<br />
-funzione <strong>di</strong> autocomposizione<br />
- modalità Visualizzazione<br />
Struttura<br />
# &<br />
# '<br />
Autocomposizione Maschera<br />
<strong>Creazione</strong> maschera vuota<br />
• Si seleziona il nome della<br />
tabella o della query<br />
• Si selezionano i campi<br />
della tabella<br />
• Selezionare il formato <strong>di</strong><br />
visualizzazione:<br />
– a colonne<br />
– tabulare<br />
– foglio dati<br />
• Specificare lo stile <strong>di</strong><br />
visualizzazione<br />
• scegliere modalità visualizzazione struttura<br />
• è possibile aggiungere:<br />
– caselle <strong>di</strong> testo<br />
– etichette<br />
– altri controlli (pulsanti, casella <strong>di</strong> controllo, casella combinata<br />
etc...)<br />
La finestra <strong>di</strong> lavoro è costituita da:<br />
• area <strong>di</strong> lavoro<br />
• strumenti<br />
– barra degli strumenti<br />
– righelli<br />
– casella degli strumenti<br />
• Specificare il titolo # Y<br />
$ *
Sezioni <strong>di</strong> una maschera<br />
• Una maschera può essere sud<strong>di</strong>visa in<br />
cinque sezioni:<br />
– Intestazione maschera<br />
– Intestazione pagina<br />
– Corpo<br />
– Piè <strong>di</strong> pagina pagina<br />
– Piè <strong>di</strong> pagina maschera<br />
• <strong>di</strong> default viene visualizzato solo il corpo<br />
• è possibile mo<strong>di</strong>ficare le <strong>di</strong>mensioni <strong>di</strong> ciascuna<br />
sezione e specificare le proprietà<br />
Mo<strong>di</strong>fica proprietà <strong>di</strong> una<br />
maschera<br />
• Si può accedere alle proprietà<br />
della maschera cliccando con<br />
il tasto destro del mouse sulla<br />
cornice della maschera<br />
(visualizzata in modalità<br />
struttura), oppure dal menu<br />
Mo<strong>di</strong>fica (seleziona<br />
maschera); In entrambi i casi<br />
si seleziona Proprietà per<br />
visualizzare le roprietà della<br />
maschera.<br />
$ "<br />
$ !<br />
Casella degli strumenti 1<br />
• Seleziona oggetti<br />
• Autocomposizione controllo<br />
• Etichetta<br />
• Casella <strong>di</strong> testo<br />
• Gruppo <strong>di</strong> opzioni<br />
• Interruttore<br />
• Pulsante <strong>di</strong> opzione<br />
• Casella <strong>di</strong> controllo<br />
• Casella combinata<br />
• Casella <strong>di</strong> riepilogo<br />
Casella degli strumenti 2<br />
• Pulsante <strong>di</strong> comando<br />
• Immagine<br />
• Cornice oggetto non associato<br />
• Cornice oggetto associato<br />
• Interruzione <strong>di</strong> pagina<br />
• Sottomaschera/sottoreport<br />
• Linea<br />
• Rettangolo<br />
$ #<br />
$ $
Proprietà campi<br />
E` possibile mo<strong>di</strong>ficare le proprietà <strong>di</strong> ciascun campo<br />
Maschere basate su più tabelle<br />
Esistono tre modalità:<br />
• basare la maschere su una query<br />
• selezionare campi <strong>di</strong> <strong>di</strong>verse tabelle tramite la<br />
procedura <strong>di</strong> autocomposizione tabella<br />
• creare una sottomaschera che consente <strong>di</strong><br />
visualizzare la relazione esistente tra i record <strong>di</strong><br />
<strong>di</strong>verse tabelle<br />
$ )<br />
$ %<br />
Sottomaschere<br />
! vengono usate soprattutto per<br />
visualizzare i record<br />
contenuti in tabelle collegate<br />
con relazioni del tipo uno a<br />
molti<br />
! è possibile crearle con la<br />
modalità autocomposizione:<br />
"#creare la maschera principale<br />
$#utilizzare lo strumento<br />
Sottomaschera/Sottoreport per<br />
creare la sottomaschera sulla<br />
griglia della maschera principale<br />
<strong>Creazione</strong> <strong>di</strong> una sottomaschera<br />
• Creare la maschera principale<br />
• Creare la sottomaschera<br />
• Riaprire la maschera principale in visualizzazione<br />
struttura<br />
• Trascinare dalla finestra <strong>di</strong> database il nome della<br />
sottomaschera sulla griglia della maschera principale<br />
• Verificare che nella tavola delle proprietà della<br />
sottomaschera le proprietà Collega campi secondari e<br />
Collega campi master contengano i campi che<br />
collegano la maschera principale e la sottomaschera<br />
$ &<br />
$ '
Report<br />
Report<br />
• per la produzione<br />
<strong>di</strong> stampe<br />
• personalizzare le<br />
intestazioni<br />
• definire gruppi e<br />
sottogruppi<br />
• calcolare totali<br />
parziali sui gruppi<br />
• Un report è una presentazione <strong>di</strong> dati, provenienti<br />
da una o più tabelle, formattata e stampata.<br />
• Può essere basato su una tabella o su una query<br />
• Può essere utilizzato per una stampa dei dati, ma<br />
non per la loro immissione o mo<strong>di</strong>fica<br />
$ Y<br />
) *<br />
<strong>Creazione</strong> <strong>di</strong> un report<br />
Esistono tre modalità:<br />
! <strong>Creazione</strong> tramite la funzione<br />
Report Standard<br />
• formato a colonne<br />
• formato tabulare<br />
! <strong>Creazione</strong> tramite<br />
autocomposizione<br />
– selezione dei campi<br />
– livello <strong>di</strong> raggruppamento dati<br />
– tipo <strong>di</strong> or<strong>di</strong>namento<br />
– layout e stile<br />
! <strong>Creazione</strong> report vuoto<br />
Finestra <strong>di</strong> struttura <strong>di</strong> un report<br />
• È simile a quella <strong>di</strong> una maschera<br />
• È sud<strong>di</strong>viso in sezioni:<br />
– Intestazione report<br />
– Intestazione pagina<br />
– Intestazione nome_raggruppamento<br />
– Corpo<br />
– Piè <strong>di</strong> pagina nome_raggruppamento<br />
– Piè <strong>di</strong> pagina pagina<br />
– Piè <strong>di</strong> pagina report<br />
) "<br />
) !
Or<strong>di</strong>namento e raggruppamento dei dati<br />
Si può impostare:<br />
• Tramite la procedura <strong>di</strong> autocomposizione selezionando il campo<br />
secondo il quale si desidera raggruppare i record<br />
• Direttamente nella struttura del report<br />
– fare clic sullo strumento Or<strong>di</strong>namento e raggruppamento della<br />
barra degli strumenti<br />
– selezionare il campo su cui basare l’or<strong>di</strong>namento o il<br />
raggruppamento<br />
– selezionare il criterio <strong>di</strong> or<strong>di</strong>namento<br />
– se si vuole usare il campo per il raggruppamento e avere una<br />
intestazione <strong>di</strong> gruppo mo<strong>di</strong>ficare in Si la proprietà Intestazione<br />
(gruppo)<br />
– se si vuole usare il campo per il raggruppamento e avere un piè <strong>di</strong><br />
pagina <strong>di</strong> gruppo, mo<strong>di</strong>ficare in Si la proprietà Piè pagina<br />
(gruppo)<br />
) #<br />
Calcoli in un report<br />
• Dalla finestra si struttura inserire una casella <strong>di</strong> testo<br />
standard non associata<br />
• Per immettere un’espressione:<br />
– <strong>di</strong>gitare l’espressione nella casella iniziando con il segno<br />
uguale (=), oppure<br />
– aprire la tavola delle proprietà e <strong>di</strong>gitare l’espressione nella<br />
propietà Origine controllo o utilizzare il generatore <strong>di</strong><br />
espressioni<br />
• se si colloca il campo calcolato in una sezione relativa ad un<br />
gruppo il calcolo si riferisce al gruppo, se lo si colloca in una<br />
sezione relativa al report il calcolo si riferisce a tutti i record,<br />
se lo si colloca nella sezione Corpo, il calcolo si basa solo sul<br />
record<br />
) $<br />
Aggiunta <strong>di</strong> numeri <strong>di</strong> pagina e date<br />
Si possono utilizzare:<br />
• le funzioni =Date() o<br />
=Now() =Pagina in un<br />
controllo calcolato;<br />
• utilizzare i coman<strong>di</strong> del<br />
menu Inserisci<br />
– Numeri <strong>di</strong> pagina…<br />
– Data e ora...<br />
) )