Caratteristiche di MS Access Database Creazione

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