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 )$