Corso Access tutto di tutto
Corso Access
Corso Access tutto di tutto
DISPENSA INTRODUTTIVA SULL’APPLICATIVO ACCESS
(OFFICE 2010 BETA)
0. CREAZIONE/APERTURA DI UN DATABASE.
Dopo avere mandato in esecuzione l’applicativo Access da Start | Programmi | Microsoft Office si può procedere con le operazioni descritte di seguito.
Per creare un nuovo database:
- Selezionare File | Nuovo. Quindi lasciare selezionato Database vuoto dalla porzione centrale di video.
- Nella barra a destra fornire un nome ed un direttorio dove piazzare il nuovo database e fare click sul pulsante Crea.
- Verrà mostrata a sinistra una barra, denominata Pannello di Navigazione, che conterrà l’elenco degli oggetti del database corrente. Gli oggetti apparterranno a una delle 6 categorie classiche: Tabelle, Query, Maschere, Report, Macro, Moduli. Per vedere gli oggetti raggruppati per tipo (in maniera simile alle precedenti versioni di Access) è necessario scegliere la voce Tipo di oggetto dal menù che compare facendo click sulla piccola freccia che si trova in alto al Pannello di navigazione. A destra del Pannello di Navigazione in una porzione a linguette verranno mostrati gli oggetti correntemente aperti.
Per aprire un database:
- Selezionare File | Apri.
- Dalla relativa dialog box selezionare il database da aprire.
- Premere il bottone Apri.
Subito dopo l’apertura potrebbe essere necessario abilitare i contenuti “dinamici” selezionando l’apposito pulsante posto sotto il nastro (ribbon) che fa da menù.
Per chiudere un database dare il comando File | Chiudi database. Per uscire da Access dare il comando File | Esci da access.
1. LE TABELLE.
Le tabelle rappresentano l’ingrediente principale di ogni database. Per lavorare sulle tabelle occorre scegliere le tabelle dal Pannello di navigazione (che si trova di solito a sinistra nella finestra di Access).
1.1 Creazione di Tabelle.
- Selezionare Crea | Tabelle | Disegna tabella.
- Compare la finestra di creazione di una tabella in visualizzazione struttura.
- Fornire il nome di campo nella prima colonna.
- Fornire il tipo del campo nella seconda colonna. I tipi più importanti ed usati sono: Testo, Numerico, Data/Ora, Contatore, Oggetto OLE (per inserire oggetti, ad esempio immagini).
- Nelle parte sottostante, una volta selezionato il tipo si possono definire informazioni e caratteristiche che dipendono dal tipo di campo. Riassuntivamente possiamo individuare le seguenti:
- Per tutti i tipi: l’indicazione se il campo in questione sarà indicizzato (con o senza possibili duplicati di chiave) oppure no.
- Per il tipo Testo: la dimensione in caratteri. Vedere comunque anche le altre caratteristiche.
- Per il tipo Numero: la dimensione che può assumere principalmente i seguenti valori: intero, intero lungo, precisione singola (numeri decimali), precisione doppia (numeri decimali); il numero di posizioni decimali. Vedere comunque anche le altre caratteristiche.
- Per il tipo Data/Ora: il formato della data/ora.
- Per il tipo Contatore: la dimensione che viene di solito impostata ad intero lungo; i nuovi valori che possono essere impostati ad incremento (ogni nuovo record avrà un numero progressivo superiore di uno al precedente caricato) o casuale (i numeri vengono generati casualmente in modo però da garantire l’univocità del valore del campo); l’opzione più usata è incremento.
- Nella terza colonna (descrizione) è possibile mettere un commento al campo a puro scopo documentativo.
A questo punto sono possibili, tra le altre, le seguenti operazioni:
- Editazione dei valori impostati in precedenza.
- Spostamento di un campo: tramite una operazione di trascinamento (drag).
- Cancellazione di un campo: selezionare il campo; dare il comando Strumenti tabella | Disegno | Strumenti | Cancella riga.
- Inserimento di un campo: selezionare il campo prima del quale si vuole l’inserimento; dare il comando Strumenti tabella | Disegno | Strumenti | Inserisci riga.
- Creazione/Modifica degli indici (anche su più campi): dare il comando Strumenti tabella | Disegno | Mostra/nascondi | Indici. A questo punto compare una finestra nella quale: nella prima colonna si indica il nome dell’indice; nella seconda colonna il nome del campo che contribuisce all’indice (per gli indici multicampo si compilano più righe nella seconda colonna senza ricompilare la prima); nella terza colonna si indica il criterio di ordinamento. In fondo alla finestra è possibile, in questa fase, indicare che un certo indice è univoco ed è anche possibile indicare che un certo indice (anche multicampo) è la chiave primaria della tabella (in questo caso l’indice dovrà anche essere univoco).
- Attribuire una chiave primaria alla tabella: selezionare il/i campo/i per la chiave primaria (per selezionare più campi usare il trascinamento del mouse oppure i tasti SHIFT e CTRL durante la/le selezione/i); dare il comando Strumenti tabella | Disegno | Strumenti | Chiave primaria. Si ricordi che la chiave primaria è l’elemento privilegiato per costruire relazioni.
- Uscita: chiudere la finestra di creazione della tabella. Access allora chiede se salvare la struttura della tabella e chiede anche (la prima volta) quale nome attribuire alla tabella medesima.
1.2 Modifica di Tabelle.
- Selezionare una tabella dall’elenco delle tabelle nel Pannello di navigazione.
- Fare click con il destro sulla tabella di interesse e scegliere la voce Visualizzazione struttura per accedere alla finestra struttura della tabella descritta nel paragrafo precedente. Si procede quindi ad operare su questa finestra come indicato nel paragrafo precedente.
1.3 Caricamento/Modifica di Tabelle.
- Selezionare una tabella dall’elenco delle tabelle nel Pannello di navigazione.
- Fare click con il destro sulla tabella di interesse e scegliere la voce Apri per accedere ad una visione “tabulare” della tabella che consente, in maniera del tutto intuitiva, sia il caricamento di nuovi dati, che la modifica dei dati, che ovviamente la visualizzazione dei medesimi. In più è possibile eseguire un numero enorme di altre operazioni sui dati della tabella: daremo di seguito alcuni accenni.
Nella maschera di caricamento/modifica di una tabella sono possibili, tra le altre, le seguenti operazioni:
- Dare ESC per annullare le modifiche mentre si è ancora sulla stessa riga (record).
- Cancellare una o più righe: selezionare la/le riga/righe; dare il comando Home | Record | Elimina; verrà richiesta conferma.
- Inserire un record: dare il comando Home | Record | Nuovo record; il record viene sempre inserito in fondo.
- Modificare la larghezza delle colonne: selezionare la/le colonna/e di cui modificare la larghezza; dare il comando Home | Record | Altro | Larghezza Colonne ed agire sulla relativa dialog box.
- Salvare il Layout (File | Salva) dell’elenco come si presenta attualmente (per le volte successive).
- Stampare i record: dare il comando File | Stampa | Stampa; compilare in maniera opportuna la relativa dialog box (in particolare la sezione relativa all’intervallo di stampa); confermare con ok la stampa. Si noti che è possibile impostare la pagina (File | Stampa | Anteprima di stampa e poi agire sulle diverse voci del menù dell’Anteprima di stampa) ed è possibile avere un anteprima della stampa (File | Stampa | Anteprima di stampa).
- Eseguire operazioni di copia/taglia/incolla con i dati dei campi usando le voci del menù Home | Appunti.
- Ricercare dati. Il tipo più significativo di ricerca è il seguente: selezionare un campo su cui eseguire la ricerca; dare il comando Home | Trova | Trova; compare la finestra di dialogo di trova e sostituisci (posizionata sulla linguetta Trova); specificare (per il campo in questione) la stringa di ricerca, selezionare solo il campo di interesse nella voce Cerca in, selezionare il tipo di confronto (campo intero, parte del campo, inizio campo), selezionare la zona della tabella in cui cercare (tutto, su, giù); quindi usare il tasto trova successivo per iniziare la ricerca. Il bottone annulla termina la ricerca.
- Sostituire valori: la sostituzione si attiva con il comando Home | Trova | Sostituisci ed ha una struttura analoga a quella della ricerca.
- Spostarsi su un certo record: si usa il comando Home | Trova | Vai a; poi si seleziona dove andare: primo, ultimo, successivo, precedente, nuovo.
- Eseguire delle operazioni di filtro sui record (righe) della tabella: l’opzione più comoda si ottiene con il comando Home | Ordina & Filtra | Avanzate | Ordinamento/Filtro avanzato. Una volta scelta questa voce di menù si accede ad una finestra che consente di operare come segue (nella parte inferiore della finestra):
- Nella prima riga di ogni colonna si seleziona (in ordine) il campo su cui imporre condizioni o criteri di ordinamento.
- Nella seconda riga di ogni colonna si seleziona l’eventuale criterio di ordinamento.
- Nella terza riga si indica un criterio di selezione. Il criterio di selezione farà tipicamente uso degli operatori di relazione (<,>,=,<>,<=,>=), degli operatori logici (And, Or, Not) e di valori come operandi (i valori stringa andranno racchiusi tra virgolette). Si potrà usare l’operatore Like ed i caratteri jolly (es. *) per corrispondenze parziali (ad es. Like “Giova*” troverà un campo che contiene “Giovanni” ma anche un campo che contiene “Giovani”).
- E’ poi possibile cancellare delle colonne con il comando Home | Record | Elimina dato dopo avere selezionato la/le colonna/e da eliminare.
- Applicare il filtro per renderlo effettivo con il comando Home | Ordina & Filtra | Commuta filtro. Dando un’altra volta lo stesso comando il Filtro viene eliminato.
- Salvare il filtro come query: dare il comando File | Salva; si deve poi dare un nome che finirà tra le query.
- E’ infine possibile uscire dalla maschera relativa ai filtri chiudendo la relativa finestra.
- Una volta usciti dalla maschera relativa ai filtri/ordinamenti è possibile applicare il filtro creato in precedenza (comando Home | Record | Commuta filtro) oppure eliminare la vista attraverso il filtro in precedenza applicato (sempre il comando Home | Record | Commuta filtro).
Si osservi infine che nella prima colonna delle tabelle è possibile che compaia un piccolo simbolo “+”: questo consente di visualizzare gli eventuali record correlati attraverso le relazioni (vedi sotto) con il record corrente.
1.4 Eliminazione di Tabelle.
Per eliminare una tabella è sufficiente selezionarla con il tasto destro e dare il comando Elimina. Verrà richiesta conferma.
2. LE RELAZIONI.
Una relazione può essere definita come un legame tra due tabelle basato sul valore di uno o più campi di ciascuna delle due tabelle. Di solito i campi di almeno una delle due tabelle sono campi chiave. I due principali tipi di relazioni sono:
- Relazione uno-a-uno: in questo caso ad ogni riga della prima tabella corrisponde una sola riga nella seconda.
- Relazione uno-a-molti: in questo caso ad ogni riga della prima tabella corrispondono più righe nella seconda.
Le relazioni molti-a-molti possono sempre essere decomposte in termini di relazioni uno-a-molti con l’aggiunta di “tabelle di appoggio”.
2.1 La creazione di relazioni.
La procedura più semplice per la creazione di relazioni è la seguente:
- Scegliere il comando Strumenti di database | Relazioni | Relazioni.
- Comparirà la finestra Relazioni assieme ad una finestra di dialogo che consente di scegliere le tabelle tra cui creare le relazioni. Si osservi che è possibile creare relazioni anche utilizzando Viste (Query) oltre alle tabelle.
- Selezionare ogni tabella di interesse e confermarla con Aggiungi poi chiudere la finestra di dialogo con Chiudi. Nella finestra relazioni rimarranno le tabelle (e le query) selezionate. Le volte successive, per fare comparire la finestra di dialogo per selezionare le tabelle di interesse dare il comando Strumenti Relazioni Disegno | Relazioni | Mostra Tabella.
A questo punto per ogni relazione che si vuole creare, individuare la copia di tabelle di interesse ed eseguire i passi successivi:
- Spostarsi sulla prima tabella (che conviene sia quella del “lato uno” nelle relazioni “uno-a-molti”). In presenza di relazioni uno-a-uno conviene selezionare prima la tabella “principale” (quella con i dati di riferimento) e poi quella “dipendente” (cioè quella con i dati che fanno riferimento alla “principale”). Questo è importante soprattutto in presenza di integrità referenziale (vedi sotto).
- Selezionare il/i campo/i in base a cui relazionare le tabelle (per selezionare più di un campo tenere premuto il tasto CTRL mentre si selezionano i campi successivi al primo).
- Effettuare una operazione di drag (trascinamento) sul campo corrispondente nella seconda tabella e rilasciare il pulsante del mouse. Nel caso di corrispondenza con più campi effettuare il trascinamento solo sul primo dei campi corrispondenti.
- A questo punto comparirà la finestra di dialogo Modifica relazioni.
- Modificare o completare la tavola che consente di stabilire i campi posti in relazione tra le due tabelle.
- Accedere (tramite il bottone “Tipo join”) alla finestra di dialog “proprietà join”. In questa finestra occorre di solito selezionare “Includi solo le righe in cui i campi collegati da entrambe le tabelle sono uguali”; potrebbe però qualche volta essere necessario selezionare un join diverso. Uscire da questa finestra di dialogo.
- Osservare che il tipo di relazione viene automaticamente impostato al valore corretto (uno-a-uno o uno-a-molti).
- Specificare se si vuole l’integrità referenziale. Con l’integrità referenziale si richiede in sostanza che non si possa inserire un valore nella seconda tabella se non c’è già il corrispondente valore nella prima e non si possa cancellare un valore dalla prima tabella se esistono righe correlate nella seconda.
Barrando in questo caso la casella aggiorna campi correlati a catena, si fa in modo che cambiamenti nei campi “relazionati” della prima tabella vengano riportati anche nelle righe corrispondenti della seconda.
Barrando la casella elimina record correlati a catena, si impone che la cancellazione nella prima tabella (che ora è permessa) comporti la cancellazione delle righe corrispondenti nella seconda.
- Alla fine confermare la relazione così costruita con Crea (o Ok per le volte successive).
2.2 La visualizzazione, la modifica a la cancellazione di relazioni.
Per visualizzare la struttura delle relazioni occorre dare il comando Strumenti database | Relazioni | Relazioni. Comparirà la finestra relazioni nella quale saranno mostrate le tabelle (e le query) e le relazioni tra di esse. Volendo è possibile nascondere o mostrare tabelle (o query) rispettivamente con i comandi Strumenti Relazioni | Disegno | Relazioni | Nascondi Tabella e Strumenti Relazioni | Disegno | Relazioni | Mostra tutto.
Per modificare una relazione:
- Dare il comando Strumenti database | Relazioni | Relazioni.
- Si seleziona la relazione (con un click sul link).
- Si da il comando Strumenti Relazioni | Disegno | Strumenti | Modifica Relazione.
- Si accede alla finestra di dialogo Modifica relazioni descritta nel paragrafo 2.1 per modificare i parametri della relazione.
Per cancellare una relazione dare il comando Strumenti database | Relazioni | Relazioni, poi si seleziona la relazione (con un click sul link) e quindi si da il comando click con il destro | Elimina. Seguirà richiesta di conferma.
3. LE QUERY (VISTE).
Le query (o viste) possono essere considerate tabelle virtuali che attingono i loro dati da tabelle o query definite in precedenza. In genere le query richiedono l’esistenza di relazioni ed operano selezioni e proiezioni sull’insieme delle tabelle/query su cui sono costruite. Le query (o viste) servono in pratica per avere una visione “logica” dei dati che differisca da quella “fisica” imposta dalla struttura delle tabelle/query di partenza.
3.1 La creazione di una query.
Per creare una query si può seguire la successiva procedura:
- Selezionare la voce Crea | Macro & Codice | Disegna query nel database corrente.
- Compare la finestra di costruzione/modifica query ed in primo piano una finestra di dialogo dalla quale selezionare le tabelle/query su cui costruire la nuova query. Usare il bottone Aggiungi per aggiungere tabelle/query ed il bottone Chiudi per passare alla costruzione effettiva della query. Le volte successive, per fare comparire la finestra di dialogo per la scelta delle tabelle/query, dare il comando Strumenti Query | Disegno | Costruzione query | Mostra Tabella.
Nella finestra di costruzione/modifica query si può costruire/modificare una query. Per query di tipo semplice la procedura può essere la seguente per ogni colonna della tabella posta in fondo alla finestra (se la voce Strumenti Query | Disegno | Mostra/Nascondi | Totali è disabilitata e la voce Strumenti Query | Disegno | Mostra/Nascondi | Nomi tabelle è abilitata):
- Nella riga “campo” selezionare il campo di una tabella (o query) o scrivere espressioni che usano come operatori anche nomi di campo (nella sintassi nome_tabella.nome_campo). All’eventuale espressione (qui come altrove) si può assegnare un nome generando una forma sintattica del tipo Nome:Espressione.
- Nella riga “tabella” dovrebbe automaticamente venire selezionata la tabella/query relativa al campo scelto in precedenza.
- Nella riga “ordinamento” è possibile scegliere un criterio di ordinamento per il campo. In questo caso la scelta dell’ordine dei campi nelle colonne diventa fondamentale (ordinamento da sinistra a destra).
- Nella riga “mostra” posso specificare se il campo selezionato andrà mostrato o meno nella query (pur facendone comunque parte).
- Nella riga “criteri” (e successive) si possono specificare i criteri (condizioni) a cui deve soddisfare il valore del campo selezionato perché la relativa riga sia inclusa nella query. Si opera in pratica una selezione. Le condizioni si compongono degli usuali operatori (relazionali, logici, ecc.): vedi anche il paragrafo 1.3 per quanto riguarda le operazioni di filtro. Non usare il nome del campo nelle espressioni logiche (in quanto è sottinteso) e quindi scrivere espressioni del tipo: (<=3) Or (>=6). Ci si ricordi anche di usare i delimitatori (“ per il tipo Testo e # per il tipo Data). Si osservi che i criteri specificati in diverse righe “Oppure” sono da considerarsi logicamente come Or, mentre i criteri specificati sulla stessa riga (in colonne diverse) sono da considerarsi logicamente come And.
NB1 Condizioni su più campi possono essere costruite scrivendo espressioni logiche nella riga “campo” che facciano appunto riferimento a più campi (anche di tabelle diverse) e selezionando nella riga “criteri” (o successive) solo i valori corrispondenti a vero (-1).
NB2 Quando si debbono scrivere formule è possibile richiamare il generatore di formule attraverso il menù di scelta rapida (click con il pulsante destro) e dando il commando “Genera”.
Nella finestra di costruzione/modifica query si possono costruire/modificare query più complesse di quelle menzionate in precedenza che consentono di eseguire raggruppamenti di dati. Rispetto a quanto detto sopra la procedura può essere la seguente per ogni colonna della tabella posta in fondo alla finestra (se la voce Strumenti Query | Disegno | Mostra/Nascondi | Totali e la voce Strumenti Query | Disegno | Mostra/Nascondi | Nomi tabelle sono abilitate):
- Per la riga “campo” vale lo stesso discorso di cui sopra.
- Per la riga “tabella” vale lo stesso discorso di cui sopra.
- Per la riga “formula” indicare raggruppamento per i campi/espressioni che faranno parte del raggruppamento definito dalla presente query (es. i dati di una fattura di un cliente); indicare invece la funzione di raggruppamento (es. somma, conteggio, ...) per i campi/espressioni che andranno riassunti (es. il prodotto quantità per prezzo di ogni riga delle fatture dei clienti).
- Per la riga “ordinamento” vale lo stesso discorso di cui sopra.
- Per la riga “mostra” vale lo stesso discorso di cui sopra.
- Per la riga “criteri” (e successive) vale lo stesso discorso di cui sopra.
E’ poi possibile eseguire, tra le altre, le seguenti azioni:
- Cambiare le proprietà del campo selezionato della query (comando Strumenti Query | Disegno | Mostra/Nascondi | Foglio proprietà). Facendo click con il pulsante destro del mouse sull’area della query, sull’elenco campi o su un campo specifico e selezionando proprietà si può accedere all’elenco delle proprietà dell’oggetto in questione.
- Allargare le colonne con una operazione di trascinamento del mouse.
- Inserire colonne (comando Strumenti Query | Disegno | Costruzione query | Inserisci Colonna) dopo avere selezionato la colonna prima di cui inserire.
- Cancellare colonne: si selezionano le colonne e si usa il tasto CANC.
- Selezionare un diverso tipo di query dal menù Strumenti Query | Disegno | tipo di query: per i nostri scopi ci sarà sufficiente il tipo query di selezione esaminato in precedenza.
NB Per creare query su cui siano eseguibili inserimenti devono essere soddisfatte una serie di condizioni tra cui quella di includere il campo chiave del lato “molti” di una relazione uno-a-molti.
3.2 La modifica di una query.
Per modificare una query è sufficiente selezionare la query di interesse nel Pannello di navigazione, usare il menù di scelta rapida (click con il destro) e scegliere la voce Vista disegno (struttura). A questo punto si accede alla finestra query di selezione descritta (con le sue funzionalità) nel precedente paragrafo 3.1.
3.3 La cancellazione di una query.
Per cancellare una query è sufficiente selezionare la query di interesse nel Pannello di navigazione, usare il menù di scelta rapida (click con il destro) e scegliere la voce Elimina o usare il tasto CANC. A questo punto verrà chiesta conferma.
3.4 L’uso di una query.
Per usare una query è sufficiente selezionare la query di interesse nel Pannello di navigazione, usare il menù di scelta rapida (click con il destro) e scegliere la voce Apri. A questo punto si accede alla finestra che consente di visualizzare e manipolare (se il recordset è aggiornabile) i dati della query.
La struttura della finestra, le modalità operative e le operazioni eseguibili (tipicamente tramite comandi di menù) sono praticamente identiche a quelle descritte per le operazioni su tabelle al paragrafo 1.3.
4. LE QUERY SQL.
E’ possibile visualizzare, scrivere e modificare le query usando il linguaggio SQL. Una volta creata/modificata una query SQL può venire utilizzata e cancellata esattamente come una query normale (vedi paragrafi 3.3 e 3.4).
4.1 La visualizzazione di una query qualsiasi in modalità SQL.
Per visualizzare (e poi eventualmente modificare) una query qualsiasi in modalità SQL occorre:
- Selezionare la query di interesse nel Pannello di navigazione.
- Usare il menù di scelta rapida (click con il destro) e scegliere la voce Vista disegno (struttura).
- A questo punto si accede alla finestra query di selezione.
- Selezionare il comando Strumenti Query | Disegno | Risultati | Vista | Vista SQL.
4.2 La creazione di una query SQL.
Per creare (e “manipolare”) una query SQL occorre:
- Selezionare la voce Crea | Macro & Codice | Disegna query nel database corrente.
- Compare la finestra di costruzione/modifica query ed in primo piano una finestra di dialogo dalla quale selezionare le tabelle/query su cui costruire la nuova query. Usare il bottone Chiudi per passare alla costruzione effettiva della query.
- Selezionare il comando Strumenti Query | Disegno | Risultati | Vista | Vista SQL.
- Si accede quindi alla finestra di creazione/modifica delle query SQL dalla quale è possibile creare/aggiornare query SQL come descritto sotto.
La finestra di creazione/modifica delle query SQL agisce come un editor di testo che consente di scrivere query in linguaggio SQL. Si possono costruire/modificare (scrivendo/modificando il testo) query SQL di diverso tipo per la cui sintassi dettagliata si rimanda alla documentazione in linea. Seguono le principali tipologie descritte con l’aiuto di esempi.
4.2.1 Query di selezione (SQL: SELECT).
E’ il tipo più comune di query SQL e consente di costruire query (viste) che a seconda dei casi possono risultare (in dipendenza del tipo di struttura creata) modificabili o solo visualizzabili (provare ad agire sulla query risultante per vedere se è possibile fare modifiche/inserimenti oppure no). Le query SQL possono essere arbitrariamente complesse usando tutte le clausole che si ritiene necessario (FROM, WHERE, GROUP BY, HAVING, ORDER BY). Eccone alcuni esempi:
1- Per selezionare l’anagrafica dei correntisti che hanno almeno una operazione con importo maggiore o uguale di tutte le altre operazioni (ossia con importo massimo):
SELECT ANAGRAFICA FROM FLCORRE WHERE NRCC IN
(SELECT NRCC FROM FLOPE WHERE IMPO>= ALL
(SELECT IMPO FROM FLOPE));
2- Per selezionare l’anagrafica dei correntisti che hanno almeno una operazione con importo minimo:
SELECT ANAGRAFICA FROM FLCORRE WHERE NRCC IN
(SELECT NRCC FROM FLOPE WHERE IMPO =
(SELECT MIN(IMPO) FROM FLOPE));
3- Per selezionare i dati (numero C/C, data e importo) delle operazioni di importo massimo per ciascun correntista:
SELECT NRCC, DATAOP, IMPO FROM FLOPE AS OUTFLOPE WHERE OUTFLOPE.IMPO >= ALL
(SELECT IMPO FROM FLOPE INFLOPE WHERE INFLOPE.NRCC=OUTFLOPE.NRCC);
4- Per eseguire il join tra correntisti e relative operazioni:
SELECT * FROM FLCORRE, FLOPE WHERE FLCORRE.NRCC=FLOPE.NRCC;
4.2.2 Query di inserimento (SQL: INSERT).
Consente di inserire record in una tabella/query direttamente come nel seguente esempio (in cui si inseriscono dati in un archivio anagrafico di correntisti):
INSERT INTO FLCORRE ( NRCC, ANAGRAFICA, INDIRIZZO )
VALUES (777, "Pinco Pallino", "Via Roma, 93 - Verbania");
E’ possibile anche inserire dati in una tabella/query prendendoli da altre tabelle/query con una operazione di SELECT come mostrato nel seguente esempio (in cui si caricano alcuni dati di un archivio di risposte ad un questionario distinte per gruppi a partire dai dati di una query SQL che fa il join tra diversi archivi tra cui quello contenente i testi delle risposte e quello contenente i gruppi):
INSERT INTO Risposte ( N_QUEST, N_DOM, N_RISP, COD_GRUPPO )
SELECT Testo_Risposte.N_QUEST, Testo_Risposte.N_DOM,
Testo_Risposte.N_RISP, Gruppi.COD_GRUPPO
FROM [Permutazione Risposte];
Query “Permutazione Risposte”:
SELECT DISTINCTROW Questionari.*, Testo_Domande.*, Testo_Risposte.*, Gruppi.*
FROM Questionari, Testo_Domande, Testo_Risposte, Gruppi
WHERE (Questionari.N_QUEST=Testo_Domande.N_QUEST) AND
(Testo_Domande.N_QUEST=Testo_Risposte.N_QUEST) AND
(Testo_Domande.N_DOM=Testo_Risposte.N_DOM)
ORDER BY Testo_Risposte.N_QUEST, Testo_Risposte.N_DOM, Testo_Risposte.N_RISP,
Gruppi.COD_GRUPPO;
4.2.3 Query di modifica (SQL: UPDATE).
Consente di modificare dati in una tabella/query cambiando i valori dei campi di una o più righe (che soddisfano a certe condizioni). Come esempio mostriamo la modifica dei valori di alcuni dati di un correntista individuato dal codice:
UPDATE FLCORRE
SET DATAAPERTURA = "10/09/96", SSALDO = "A", SALDO = 2000000
WHERE NRCC=777;
4.2.4 Query di cancellazione (SQL: DELETE).
Consente di cancellare righe (record) in una tabella/query (che soddisfano a certe condizioni). Come esempio mostriamo la cancellazione di un correntista individuato dal codice:
DELETE FROM FLCORRE
WHERE NRCC=777;
4.2.5 Query di creazione tabelle (SQL: CREATE TABLE).
Consente di creare una tabella specificando i campi, e per ogni campo le informazioni relative (tipo, lunghezza, ...). Come esempio mostriamo la creazione di una tabella di appoggio con un campo di tipo carattere (a lunghezza 10), un campo numerico intero (lungo) e un campo numerico decimale:
CREATE TABLE FLTMP (
CARATTERE STRING (10),
VALORE LONG,
DECIMALE FLOAT
);
4.3 La modifica di una query SQL.
Per modificare una query è sufficiente selezionare la query di interesse nel Pannello di navigazione, usare il menù di scelta rapida (click con il destro) e scegliere la voce Vista disegno (struttura). A questo punto si accede alla finestra di creazione/modifica delle query SQL dalla quale è possibile aggiornare la query come descritto al paragrafo 4.2.
5. LE MASCHERE.
Una maschera è una interfaccia personalizzata o personalizzabile per accedere al database ed alle sue funzionalità. In particolare ogni maschera consente di accedere ad una o più tabelle o query.
NB Al fine del discorso sulle maschere può essere utile sapere che è possibile definire relazioni anche includendo query e non solo tabelle.
5.1 Costruzione di maschere semplici (su una sola tabella/query).
Per costruire una maschera relativa ad una sola tabella/query si può procedere come segue:
- Selezionare la voce Crea | Maschere | Creazione guidata maschera.
- Selezionare la tabella/query di riferimento e quindi i campi da inserire nella maschera (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo indicare il layout scelto per la maschera tra quelli proposti: a colonne (viene mostrato un solo record per pagina); tabulare (vengono mostrate le varie righe della tabella/query in forma tabulare); foglio dati (simile alla modalità precedente ma con uno schema di tipo foglio elettronico); giustificato; ecc.. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) alla maschera e selezionare il radio button “Modifica la struttura della maschera” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione/modifica delle maschere. Selezionare Fine.
Nella finestra di creazione/modifica delle maschere si possono eseguire varie operazioni, tra cui le seguenti:
- Selezionare un oggetto della maschera. Per selezionare un singolo oggetto è necessario rimuovere il Layout con il comando click con il destro | Layout | Rimuovi Layout. Sono possibili, con le usuali modalità (uso del tasto SHIFT durante la selezione), selezioni e quindi poi manipolazioni di più oggetti.
- Trascinare gli oggetti o i relativi marker per spostare/ridimensionare gli oggetti. Lo spostamento si ottiene con il marker in alto a sinistra.
- Eseguire operazioni tipo taglia/copia/incolla con il menù Home | Appunti.
- Visualizzare le proprietà dello/degli oggetto/i selezionato/i ed eventualmente modificarle attraverso una finestra a linguette (comando Strumenti maschere | Disegno | Strumenti | Proprietà). La possibilità di accedere alle proprietà di un oggetto sarà fondamentale per la programmazione in VBA (vedi sotto). Le proprietà sono differenti da oggetto ad oggetto e sono molto numerose: quando si vuole modificare qualche caratteristica di un oggetto conviene provare a controllare se c’è qualche proprietà che si riferisce a quella caratteristica in modo da poterla modificare. Una proprietà interessante dell’oggetto maschera nel suo complesso è la proprietà Tipo recordset (linguetta Dati): se si sceglie dynaset si potranno (in generale) eseguire modifiche, mentre se si sceglie snapshot si potranno solo visualizzare i dati.
- Visualizzare l’elenco dei campi (comando Strumenti maschere | Disegno | Strumenti | Elenco Campi) per aggiungere altri elementi (dalle tabella/query selezionate all’inizio) alla maschera con una operazione di trascinamento.
5.2 Costruzione di maschere su più tabelle/query.
Per costruire una maschera relativa a più tabelle/query si può procedere come segue:
- Selezionare la voce Crea | Maschere | Creazione guidata maschera.
- Nella successiva finestra di dialogo selezionare le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nella maschera (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo selezionare la modalità di visualizzazione e poi selezionare Avanti. Occorre in pratica selezionare:
- Il criterio di priorità: scegliere, in ordine, le tabelle/query che guidano la visualizzazione.
- Il tipo di visualizzazione a maschera: le voci tra cui scegliere dipendono dalla scelta precedente ma tipicamente si possono avere le seguenti:
- Maschera singola: in tal caso tutti i campi vengono piazzati su di un’unica maschera: questa voce non è molto comune per più tabelle/query ma potrebbe talvolta essere quella desiderata.
- Maschera con sottomaschere: in tal caso la struttura delle relazioni tra le tabelle determina come andranno disposti i dati all’interno di due (o più) livelli: i dati della maschera principale ed i dati della sottomaschera che saranno quelli correlati a quelli della maschera principale.
- Maschere collegate: in tal caso la struttura delle relazioni tra le tabelle determina come andranno disposti i dati all’interno di due (o più) livelli: i dati della maschera principale ed i dati della maschera collegata, richiamata tramite un bottone, che saranno quelli correlati a quelli della maschera principale.
Ogni scelta nella finestra di dialogo viene rappresentata con un esempio che mostra la struttura che verrà generata.
- Nella successiva finestra di dialogo (se viene proposta) indicare il layout scelto per la maschera tra quelli proposti, tipicamente: tabulare (vengono mostrate le varie righe della tabella/query in forma tabulare); foglio dati (simile alla modalità precedente ma con uno schema del tipo foglio elettronico). Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) per le maschere e sottomaschere (che possibilmente non contengano spazi) e selezionare il radio button “Modifica la struttura della maschera” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica delle maschere. Selezionare Fine.
A questo punto si può modificare la maschera (principale), come già descritto nel precedente paragrafo 5.1, all’interno della finestra di creazione/modifica delle maschere. Per modificare una sottomaschera è sufficiente selezionarla nel Pannello di Navigazione e usare il menù di scelta rapida (click con il destro) alla voce Vista disegno (Struttura), ed accedere così alla finestra di creazione /modifica delle maschere per le modifiche (vedi paragrafo 5.1).
5.3 Modifica e cancellazione di maschere e sottomaschere.
Per modificare una maschera o una sottomaschera è sufficiente selezionarla Pannello di Navigazione e usare il menù di scelta rapida (click con il destro) alla voce Vista disegno (Struttura). Si accede così alla finestra di creazione / modifica delle maschere per le modifiche (vedi paragrafo 5.1).
Per cancellare una maschera o una sottomaschera è sufficiente selezionarla Pannello di Navigazione e usare il menù di scelta rapida (click con il destro) alla voce Cancella oppure premere il bottone CANC. Verrà chiesta conferma.
5.4 Utilizzo di maschere.
Le maschere forniscono una interfaccia personalizzabile che consente di visualizzare, modificare (se permesso - vedi paragrafo 3.4 sulle query) ed in generale di manipolare i dati di tabelle e query.
NB Per creare maschere su cui siano eseguibili inserimenti potrebbero essere richieste una serie di condizioni tra cui quella di includere il campo chiave del lato “molti” di una relazione uno-a-molti.
Per operare con una maschera occorre:
- Selezionarla Pannello di Navigazione;
- Usare il menù di scelta rapida (click con il destro) alla voce Apri che consente, in maniera del tutto intuitiva, la visualizzazione e la manipolazione dei dati.
All’interno della maschera sono disponibili (se non sono stati disabilitati) i controlli per passare alla prima, alla successiva, alla precedente, all’ultima, ad una specificata riga della tabella/query corrente. E’ pure possibile passare alla riga successiva all’ultima per nuovi inserimenti (se permessi). Esistono inoltre i pulsanti per selezionare direttamente le righe (record).
In più è possibile eseguire un numero enorme di altre operazioni sui dati della maschera: queste operazioni si ottengono tramite menù e sono le stesse che sono state descritte (almeno per quanto riguarda le più interessanti) nel paragrafo 1.3 relativo al caricamento/modifica di tabelle. Si osservi però che, per quanto riguarda le operazioni di filtro e ordinamento, alcune volte potrebbe essere necessario impostare e modificare (quindi applicare) i filtri/ordinamenti a livello di sottomaschere e maschere collegate affinché essi poi possano essere usati ed agiscano anche sulle maschere principali. Altre volte, per evitare problemi si potrebbero creare i filtri all’interno di opportune Query (vedi sotto).
5.5 Considerazioni su alcuni aspetti emersi durante le prove.
L’utilizzo pratico delle maschere ha messo in evidenza i seguenti punti che costituiscono un elenco di: strumenti da usare, regole che è meglio seguire, problemi emersi:
- I Filtri/Ordinamenti (che non sono definiti all’interno di query) vanno di solito applicati ogni volta che si rientra sull’oggetto a cui sono riferiti.
- Per eliminare problemi di efficienza o di bachi si può creare un “duplicato” query delle tabelle necessarie (eventualmente con filtri/ordinamenti) e quindi si può basare la Maschera su queste query invece che sui dati originari così risolvendo il problema di efficienza e della necessità di filtri/ordinamenti.
- E’ possibile inserire una sottomaschera in una maschera usando il comando Strumenti maschere | Disegno | Controlli e scegliendo dalla Toolbox il controllo sottomaschera. Una volta inserita una sottomaschera ed assegnata ad essa una maschera (voce Oggetto origine delle proprietà) è possibile vederne e modificarne le proprietà selezionando con il pulsante destro del mouse l’area della sottomaschera individuata dal righello verticale. NB Una volta mostrata la finestra delle proprietà, se non si vedono le proprietà della sottomaschera, è possibile scegliere l’oggetto sottomaschera stesso dal combo box posto in cima alla finestra delle proprietà.
- In fase di modifica di una maschera è possibile fare uso delle proprietà (visualizzabili selezionando con il pulsante destro del mouse l’area della sottomaschera individuata dal righello verticale e poi eventualmente scegliendo l’oggetto dal combo box in cima alla finestra delle proprietà come detto prima) Collega Campi Secondari e Collega Campi Master (linguetta Dati) di un oggetto sottomaschera. Questo serve per correlare i record di una sottomaschera, in base ad uno o più campi della sottomaschera stessa (campi secondari), con il record attuale della maschera principale, in base ad uno o più campi della stessa (campi master). Se i campi sono più di uno vanno separati da punto e virgola.
- Con lo stesso principio del punto precedente è possibile correlare i record di una sottomaschera con quelli di un’altra sottomaschera entrambe “figlie” della stessa maschera principale. In tal caso nei campi master della maschera di terzo livello occorrerà usare la sintassi [nome sottomaschera di secondo livello].Form![Nome campo].
- E’ possibile, in fase di modifica di una maschera (principale), includere una o più altre maschere come sottomaschere. Questo si ottiene disponendo in maniera opportuna le diverse finestre e trascinando la maschera che dovrà diventare sottomaschera dal Pannello di Navigazione all’opportuna area all’interno della finestra di creazione/modifica della maschera principale. Se si inseriscono due sottomaschere (da correlare tra loro e con la maschera principale) occorre lavorare come indicato al punto precedente affinché ci sia coerenza tra i dati presenti nella maschera principale e nelle sottomaschere.
- E’ stato osservato che può essere utile modificare il tipo di maschera all’interno della finestra di creazione/modifica delle maschere con la seguente procedura: dal menù di scelta rapida (click con il destro) su un’area all’esterno dello spazio di progettazione del form (“quadrettato”), si da il comando Proprietà; si controlla/modifica la proprietà Formato | Visualizzazione predefinita (maschere continue = rappresentazione tabulare; foglio dati; maschera singola; …).
- Se si verificano problemi durante l’uso di un database, si consiglia di procedere ad una compattazione/ripristino del database medesimo. Per compattare/ripristinare un database: dare il comando File | Informazioni | Compatta e ripristina database. Può essere conveniente compattare periodicamente il database per eliminare “sprechi” di memoria.
5.6 Costruzione di maschere contenenti oggetti (bottoni, ...).
Gli oggetti all’interno delle maschere si usano principalmente in concomitanza della programmazione in VBA e per tale ragione rimandiamo più oltre una discussione più approfondita su tali aspetti. In questo paragrafo vogliamo solo mostrare, per linee generali, l’uso degli oggetti più significativi quali elementi per mostrare/manipolare i dati di un database attraverso una maschera.
Per disporre oggetti su di una maschera occorre andare in visualizzazione struttura (si seleziona una maschera dal Pannello di Navigazione, si usa il menù di scelta rapida – click con il destro - e si sceglie la voce Vista disegno – Struttura - oppure si da il comando Crea | Maschere | Disegna maschera) e quindi visualizzare la ToolBox selezionando Strumenti maschera | Disegna | Controlli. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli (il bottone con la bacchetta magica che si vede facendo click sul pulsante in fondo alla Toolbox).
Quando si devono modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie Proprietà dal menù di scelta rapida oppure si da il comando Strumenti maschera | Disegna | Strumenti | Proprietà.
Di seguito, per ogni controllo significativo, vengono date alcune indicazioni su come gestirlo (a livello di proprietà) per le più comuni esigenze. Per esigenze più sofisticate è sufficiente controllare/gestire anche altre proprietà oltre a quelle che elencherò.
Il primo oggetto di cui conviene occuparsi è sicuramente la maschera nel suo complesso. Per selezionare la maschera basta non selezionare alcun oggetto (occorre selezionare una zona al di fuori anche della zona dei “dettagli” per selezionare la maschera nel suo complesso). Nella finestra delle proprietà risultano interessanti i seguenti elementi:
- Origine Record: si può specificare un tabella, una query o una query SQL che descrivono i record (le righe) che verranno visualizzati nei controlli della maschera. Si può scegliere il pulsante a destra (quello con “...”) per generare automaticamente la query per l’origine dei record: l’ambiente richiamato è quello per la costruzione e la modifica di query.
- Visualizzazione Predefinita: si può scegliere il tipo di maschera: maschere continue ossia rappresentazione tabulare; foglio dati; maschera singola; … . Se necessario è poi possibile visualizzare l’intestazione/piè pagina di maschera o di pagina con i relativi comandi dal menù di scelta rapida (click con il destro) stando posizionati sulla sezione corpo (dettagli) della maschera.
Un altro tipo di oggetto interessante è la sezione (corpo, piè pagina maschera, intestazione maschera, ...). Basta selezionare la barra relativa alla sezione desiderata per potere accedere alle sue proprietà. Le caratteristiche principali sono:
- Visibile: che consente di stabilire se la sezione in questione sarà visibile o meno.
- Colore dello sfondo.
- Aspetto (effetti speciali): piatto, in rilievo, incassato.
L’oggetto di sicuro più interessante è il Text Box (detto anche edit control o casella di testo). Le proprietà più interessanti da gestire (una volta selezionato l’oggetto) sono:
- Nome: il nome dell’oggetto.
- Origine controllo: tipicamente si può scegliere uno dei campi appartenenti al recordset selezionato come origine controllo della maschera (il combo box a destra consente appunto questa selezione). E’ anche possibile costruire espressioni (che tipicamente combinano i valori dei campi appartenenti al recordset della maschera); ad esempio: =Str([NumFatt]) & " del " & Str([DataFatt]). E’ pure possibile costruire espressioni per aggregare (es. sommare) valori (di solito appartenenti al recordset associato alla maschera); ad esempio: =Somma([SommaImpo]); di solito le formule di aggregazione sono poste nella sezione di piè di pagina della maschera. La costruzione di espressioni può essere facilitata dall’uso del generatore di espressioni (pulsante a destra: “...”). Si noti che le espressioni devono iniziare con il simbolo “=”.
- Formato: stabilisce il formato dell’oggetto (numero generico, standard, fisso, valuta, data generica, ...).
- Abilitato: stabilisce se l’oggetto può diventare l’oggetto corrente di una maschera.
- Bloccato: stabilisce se è possibile modificare i dati contenuti nell’oggetto.
- Visibile: dice se il controllo è o meno visibile.
Per inserire elementi descrittivi conviene usare l’oggetto etichetta (label). Proprietà significative:
- Nome: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà sulla maschera.
- Visibile: dice se il controllo è o meno visibile.
Per raggruppare controlli è possibile usare l’oggetto cornice (group box). Proprietà significative (selezionare il bordo per richiamare le proprietà):
- Nome: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà nell’intestazione della cornice (selezionare l’etichetta per accedere a questa proprietà).
- Visibile: dice se il controllo è o meno visibile.
Un elemento molto comune è il Pulsante di comando (Command Button) che spesso è usato in concomitanza della programmazione in VBA. Qui vogliamo solo analizzare un utilizzo caratteristico che è quello che consente, in autocomposizione, di generare il richiamo di una maschera collegata. Per ottenere ciò:
- Selezionare il pulsante di comando dalla ToolBox;
- Trascinare il controllo sulla maschera per disporlo come si vuole;
- Compare la prima finestra di dialogo: scegliere Operazioni su maschere (nella lista categorie) e Apri Maschera (nella lista azioni);
- Nella successiva dialog box selezionare la maschera da aprire dalla list box;
- Nella successiva dialog box selezionare Apri la maschera e trova dati specifici da visualizzare;
- Nella successiva dialog selezionare (in maniera intuitiva) i campi delle due maschere da correlare: quando si apre la maschera premendo il bottone, in tale maschera verranno mostrati solo i record (o il record) correlati;
- Nella successiva dialog selezionare un testo o un immagine per il bottone;
- Nella maschera successiva selezionare un nome per il pulsante di comando e selezionare Fine.
In ogni caso è possibile accedere alle proprietà del bottone di comando di cui le più significative sono le seguenti:
- Visibile: dice se il controllo è o meno visibile.
- Nome: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà sul pulsante di comando.
- Su click: consente di accedere al codice di risposta all’evento click sul bottone. L’autocomposizione imposta automaticamente questo valore ad una macro che consente di aprire il form secondario con solo i dati correlati al form principale. Accertarsi che l’espressione della condizione Where nella macro abbia la forma: [Nome campo correlato maschera secondaria ]=[Forms]![Nome maschera principale]![Nome campo correlato nella maschera principale] oppure [Nome campo correlato maschera secondaria ]=Me![Nome campo correlato nella maschera principale]
Un altro oggetto è la casella combinata (ComboBox). Qui vogliamo analizzare un utilizzo caratteristico che è quello che consente, in autocomposizione, di generare una casella combinata per la ricerca di record attraverso l’elenco a discesa. Questo è possibile solo in alcuni contesti dove la macchina è in grado di reperire i dati della maschera a partire dal valore selezionato nella casella combinata (tipicamente in presenza di sole tabelle). Per ottenere ciò:
- Selezionare la casella combinata dalla ToolBox;
- Trascinare il controllo sulla maschera per disporlo come si vuole;
- Compare la prima finestra di dialogo: scegliere Trova un record nella maschera ...;
- Nella successiva dialog box selezionare il campo di ricerca che entrerà a far parte dei dati della casella combinata (in realtà è possibile scegliere più di un campo);
- Nella successiva dialog regolare le dimensioni della/e colonna/e di dati e decidere (se presente) se lasciare o meno barrato il check box per la presenza/assenza del campo chiave;
- Se si sono scelti più campi potrebbero comparire altre finestre di dialogo:
- Nella prima scegliere un campo (di solito il campo chiave)
- Nella seconda scegliere memorizza il valore temporaneamente ...;
- Nella maschera successiva selezionare un nome per la casella combinata e selezionare Fine.
Durante l’utilizzo della casella combinata precedentemente costruita potrà essere utile usare il comando Home | Record | Aggiorna per aggiornare il contenuto della casella combinata stessa se si sono effettuati aggiornamenti al recordset sottostante.
Un altro utilizzo caratteristico della casella combinata (ComboBox) è quello che consente, in autocomposizione, di generare una casella per la assegnazione di un valore ad un campo della maschera prelevandolo dall’elenco a discesa. Per ottenere ciò:
- Selezionare la casella combinata dalla ToolBox;
- Trascinare il controllo sulla maschera per disporlo come si vuole;
- Compare la prima finestra di dialogo: scegliere Ricerca valori in una tabella o query da parte …;
- Nella successiva dialog box selezionare la tabella/query da cui prelevare i dati;
- Nella successiva dialog box selezionare il/i campo/i che entreranno a far parte dei dati della casella combinata;
- Nella successiva dialog specificare eventualmente l’ordine dei dati nella casella combinata;
- Nella successiva dialog regolare le dimensioni della/e colonna/e di dati e decidere (se presente) se lasciare o meno barrato il check box per la presenza/assenza del campo chiave;
- Nella successiva dialog (che può non comparire) selezionare il campo della tabella/query da associare al campo della maschera attuale;
- Nella successiva dialog selezionare memorizza il valore permanentemente in questo campo e selezionare il campo (della maschera) in cui inserire il valore;
- Nella maschera successiva selezionare un nome per la casella combinata e selezionare Fine.
In ogni caso è possibile accedere alle proprietà della Casella Combinata di cui le più significative sono le seguenti:
- Nome: il nome dell’oggetto.
- Origine controllo: consente di stabilire da dove attingere o dove mettere il valore selezionato nella casella combinata: di solito si tratta del valore di un campo del recordset associato alla maschera corrente. Non conviene impostare tale proprietà nel caso di uso di una casella combinata per la ricerca (vedi sopra).
- Tipo origine Riga: che di solito è tabella/query se i dati dell’elenco devono arrivare da una tabella/query.
- Origine Riga: contiene l’indicazione della tabella/query o più spesso della query SQL per selezionare i valori che finiranno nella lista della casella combinata.
- Visibile: dice se il controllo è o meno visibile.
- Abilitato: stabilisce se l’oggetto può diventare l’oggetto corrente di una maschera.
- Bloccato: stabilisce se è possibile modificare i dati contenuti nell’oggetto.
- Colonna Associata: stabilisce quale è il numero della colonna da cui prelevare il valore da associare al campo Origine Controllo.
Discorso analogo alle Caselle Combinate si fa per l’oggetto Casella di riepilogo (list box).
6. I REPORT (LE STAMPE).
Un report rappresenta uno stampato (di solito nella forma di un tabulato più o meno elaborato) che consente di evidenziare i dati del database selezionati e raggruppati in maniera opportuna.
6.1 Costruzione di report semplici (su una sola tabella/query).
Per costruire un report relativo ad una sola tabella/query si può procedere come segue:
- Selezionare la voce Crea | Report | Autocomposizione report.
- Nella finestra di dialogo che compare selezionare la tabella/query di riferimento e selezionare i campi da inserire nel report (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo viene chiesto se si desidera aggiungere livelli di gruppo: per un tabulato semplice non selezionare nulla ma premere il bottone Avanti.
- Nella successiva finestra di dialogo si può scegliere il criterio di ordinamento in base ad un massimo di 4 campi (in ordine crescente o decrescente); selezionare gli ordinamenti. Selezionare Avanti.
- Nella successiva finestra di dialogo occorre selezionare il layout di stampa: tabulare, verticale (i campi vengono mostrati in verticale e viene posta una separazione tra ogni record ed il successivo) o giustificato; foglio orizzontale o verticale. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) al report e selezionare il radio button “Modifica la struttura del report” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica dei report. Selezionare Fine.
Nella finestra di creazione/modifica del report si possono eseguire varie operazioni, tra cui le seguenti:
- Selezionare un oggetto del report. Sono possibili, con le usuali modalità (uso del tasto SHIFT durante la selezione), selezioni e quindi poi manipolazioni di più oggetti.
- Trascinare gli oggetti o i relativi marker per spostare/ridimensionare gli oggetti. Il trascinamento si ottiene con il marker in alto a sinistra. Per potere spostare/ridimensionare ciascun oggetto in maniera indipendente occorre rimuovere il layout che di solito “unisce” gruppi di oggetti in un report. Per fare questo usare il menù di scelta rapida (click con il destro) e usare la voce layout | rimuovi layout (poi con la voce layout è possibile ripristinare uno dei due possibili layout: tabulare o impilato).
- Eseguire operazioni tipo taglia/copia/incolla con il menù di scelta rapida (click con il destro).
- Visualizzare le proprietà dello/degli oggetto/i selezionato/i ed eventualmente modificarle attraverso una finestra a linguette (comando menù di scelta rapida | Proprietà). La possibilità di accedere alle proprietà di un oggetto sarà fondamentale per la programmazione in VBA (vedi sotto). Le proprietà sono differenti da oggetto ad oggetto e sono molto numerose: quando si vuole modificare qualche caratteristica di un oggetto conviene provare a controllare se c’è qualche proprietà che si riferisce a quella caratteristica in modo da poterla modificare.
- Visualizzare l’elenco dei campi (comando Strumenti disegno report | Disegno | Strumenti | Aggiungi campo esistente) per aggiungere altri elementi (dalle tabelle/query) al report con una operazione di trascinamento.
- Inserire oggetti nel report con il comando Strumenti disegno report | Disegno | Controlli (ad esempio immagini scegliendo l’oggetto immagine dall’insieme dei controlli; l’immagine può poi essere portata in primo o secondo piano, come ogni altro oggetto, con i comandi Strumenti disegno report | Disposizione | Dimensione & Ordine | Porta in primo piano o Strumenti disegno report | Disposizione | Dimensione & Ordine | Porta in secondo piano).
- Tra le proprietà delle diverse sezioni (selezionare la barra di intestazione di sezione) c’è il colore alternativo di sfondo: conviene spesso eliminarlo o porlo uguale al colore di sfondo.
6.2 Costruzione di report su più tabelle/query (o comunque con raggruppamenti).
Per costruire un report relativo a più tabelle/query si può procedere come segue:
- Selezionare la voce Crea | Report | Autocomposizione report.
- Nella successiva finestra di dialogo selezionare le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nel report (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo (che può anche non comparire) selezionare il criterio di priorità: visualizzazione in base a ... (scegliere la tabella/query che guida la visualizzazione): il resto della struttura del report è guidato dalla struttura delle relazioni tra le tabelle/query. Ogni scelta nella finestra di dialogo viene rappresentata con un esempio che mostra la struttura che verrà generata. Selezionare Avanti.
- Nella finestra di dialogo successiva viene richiesto se si vogliono aggiungere livelli di gruppo (cioè raggruppamenti). Per scegliere un nuovo raggruppamento è sufficiente fornire il campo in base a cui eseguire il raggruppamento. E’ poi possibile cambiare la priorità di raggruppamento manovrando sulle frecce apposite. E’ altresì possibile cambiare la modalità di raggruppamento all’interno della relativa finestra di dialogo (richiamata con il bottone Opzioni raggruppamento): conviene di solito lasciare la modalità di raggruppamento normale (i record si raggruppano a parità di valore del campo selezionato). Premere il bottone Avanti.
- Nella successiva finestra di dialogo si può scegliere il criterio di ordinamento in base ad un massimo di 4 campi (in ordine crescente o decrescente). Nella stessa finestra di dialogo è presente il bottone Opzioni di riepilogo che consente di accedere ad una finestra di dialogo nella quale vengono richiesti, per i campi numerici, se si vogliono riepiloghi (rispettivamente somma, media, minimo, massimo) e se si vuole solo il riepilogo o anche il dettaglio; è pure possibile specificare se si vuole ottenere la percentuale delle somme di dettaglio sul totale. Uscire dalle opzioni di riepilogo e selezionare Avanti.
- Nella successiva finestra di dialogo occorre selezionare il layout di stampa e l’orientamento del foglio orizzontale o verticale. A sinistra si ha sempre una immagine di come verrà prodotto l’output. NB Nella versione beta in uso scegliere “evidenziato” (outline) come layout in quanto con altri layout l’autocomposizione potrebbe non riuscire a generare il report!. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) al report e selezionare il radio button “Modifica la struttura del report” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica dei report. Selezionare Fine.
A questo punto si può modificare il report, come già descritto nel precedente paragrafo 6.1, all’interno della finestra di creazione/modifica dei report.
In questo caso, in aggiunta a quanto detto, può essere utile fare comparire la finestra Ordinamento e raggruppamento con il menù di scelta rapida sulla sezione di interesse. In tale finestra scegliere la voce altro del raggruppamento (sezione) di interesse e modificare i valori delle voci che compaiono (in particolare la possibilità di visualizzare o nascondere le intestazioni e i piè di pagina).
6.3 Modifica e cancellazione di report.
Per modificare un report è sufficiente selezionarlo nel Pannello di Navigazione, usare il menù di scelta rapida (click con il destro) alla voce Vista disegno ed accedere così alla finestra di creazione /modifica dei report per le modifiche (vedi paragrafo 6.1 e 6.2).
Per cancellare un report è sufficiente selezionarlo nel Pannello di Navigazione e premere il bottone CANC. Verrà chiesta conferma.
6.4 Utilizzo dei report.
Per operare con un report occorre:
- Selezionare il Report nel Pannello di Navigazione
- Fare doppio click sul Report stesso per accedere alla vista report del report selezionato che consente, in maniera del tutto intuitiva, la visualizzazione del report stesso sullo schermo. Per visualizzare il report come verrà stampato utilizzare il comando Home | Viste | Anteprima di stampa.
- Oppure è possibile dare il comando File | Stampa | Anteprima di stampa per vedere il report in anteprima oppure dare il comando File | Stampa per stampare il report correntemente selezionato.
In alternativa a quanto detto in precedenza, per operare su intestazioni e piè di pagina dei raggruppamenti è sufficiente entrare in modalità modifica del report (vedi sopra) e dare il comando Strumenti disegno report | Disegno | Raggruppamenti & Totalizzazioni | Ordinamenti & Raggruppamenti, quindi scegliere dalla finestra che compare in fondo il raggruppamento di interesse e da qui in maniera intuitiva modificare gli elementi costitutivi (il Campo o espressione, il criterio di ordinamento, ecc.).
6.5 Costruzione di report contenenti oggetti (Text Box, separazione di pagine, ...).
Gli oggetti all’interno dei report si usano principalmente per creare ulteriori elementi di stampa. In questo paragrafo vogliamo solo mostrare, per linee generali, l’uso degli oggetti più significativi quali elementi per stampare i dati di un database.
Per disporre oggetti su di un report occorre passare in visualizzazione struttura (si seleziona un report e si usa il menù di scelta rapida alla voce Vista Disegno) e quindi si possono vedere e scegliere gli oggetti da inserire nel report attraverso la porzione di ribbon (nastro) che si trova selezionando Strumenti disegno report | Disegno e osservando la sezione Controlli. Potremo chiamare tale sezione ToolBox. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli (la bacchetta magica).
Quando si devono modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie la voce Foglio Proprietà da Strumenti disegno report | Disegno | Strumenti oppure si sceglie la voce Proprietà o dal menù di scelta rapida.
Un report avrà in generale un corpo (che rappresenta la parte più “interna” del report) “incapsulato” in una serie di coppie intestazione/piè di sezione (o raggruppamenti). In più in un report ci sono di solito intestazioni e piè di pagina (di pagina e report). Tenendo conto di questo fatto, di seguito, per ogni controllo significativo, vengono date alcune indicazioni su come gestirlo (a livello di proprietà) per le più comuni esigenze. Per esigenze più sofisticate è sufficiente controllare/gestire anche altre proprietà oltre a quelle che elencherò.
NB All’interno della finestra di creazione/modifica del report è possibile visualizzare/modificare i raggruppamenti e gli ordinamenti richiamando la finestra relativa con il comando Strumenti disegno report | Disegno | Raggruppamenti & Totalizzazioni | Ordinamenti & Raggruppamenti.
Il primo oggetto di cui conviene occuparsi è sicuramente il report nel suo complesso. Per selezionare il report basta non selezionare alcun oggetto. Nella finestra delle proprietà risultano interessanti i seguenti elementi:
- Origine Record: si può specificare un tabella, una query o una query SQL che descrivono i record (le righe) che verranno visualizzati nei controlli del report. Si può scegliere il pulsante a destra (quello con “...”) per generare automaticamente la query per l’origine dei record: l’ambiente richiamato è quello per la costruzione e la modifica di query. Estendendo la query SQL che definisce l’origine dei record con la clausola WHERE è possibile porre delle condizioni di “filtro” sui record che andranno a far parte del report (es. ... WHERE [Fatture].[NumFatt] = [RigheFatt].[NumRiga]).
- Filtro e Applica Filtro: Con la prima proprietà si può specificare un filtro per i record che andranno a far parte del report (es. [NumFatt] = [NumRiga]). In tal caso la seconda proprietà deve essere impostata a si.
- Ordinamento e Applica Ordinamento: Con la prima proprietà si può specificare un criterio di ordinamento per i record che andranno a far parte del report (es. [Ragione Sociale] per ordinare in base alla regione sociale). In tal caso la seconda proprietà deve essere impostata a si. NB A causa di un baco l’ordinamento del report avviene sempre in base alla chiave primaria. Per ovviare all’inconveniente occorre richiamare la finestra “raggruppamenti ordinamenti” con il comando Strumenti disegno report | Disegno | Raggruppamenti & Totalizzazioni | Ordinamenti & Raggruppamenti. In tale finestra usare il pulsante di aggiunta di un ordinamento e scegliere il campo (o l’espressione) in base a cui ordinare. Occorre poi usare le freccette associate all’ordinamento creato per spostarlo nella posizione di competenza (ad esempio prima di tutto se si vuole che l’ordinamento agisca al livello complessivo del report).
- Intestazione (pagina) e Piè pagina (pagina): Queste due proprietà consentono di specificare se e quando non stampare le eventuali intestazioni di pagina e piè pagina rispettivamente.
Un altro tipo di oggetto interessante è la sezione (corpo, piè pagina, intestazione, ...). Basta selezionare la barra relativa alla sezione desiderata per potere accedere alle sue proprietà (tramite il ribbon – nastro - o il menù di scelta rapida). Le caratteristiche principali sono:
- Interruzione Pagina: che consente di stabilire se piazzare interruzioni di pagina prima e/o dopo la sezione corrente del report.
- Stampa sezione unita: consente (se impostata a si) di fare in modo che una sezione non venga spezzata su due pagine diverse.
- Visibile: che consente di stabilire se la sezione in questione sarà visibile o meno.
- Aspetto (effetti speciali): piatto, in rilievo, incassato.
L’oggetto di sicuro più interessante è il Text Box (detto anche edit control o casella di testo). Le proprietà più interessanti da gestire (una volta selezionato l’oggetto) sono:
- Nome elemento: il nome dell’oggetto.
- Origine controllo: tipicamente si può scegliere uno dei campi appartenenti al recordset selezionato come origine controllo del report (il combo box a destra consente appunto questa selezione). E’ anche possibile costruire espressioni (che tipicamente combinano i valori dei campi appartenenti al recordset del report); ad esempio: =Str([NumFatt]) & " del " & Str([DataFatt]). E’ pure possibile costruire espressioni per aggregare (es. sommare) valori (di solito nella sezione di piè di pagina o intestazione di un raggruppamento, della pagina o del report); ad esempio: =Somma([PrezzoUn]*[Quantità]) oppure: =conteggio(*). La costruzione di espressioni può essere facilitata dall’uso del generatore di espressioni (pulsante a destra: “...”). Si noti che le espressioni devono iniziare con il simbolo “=”. Sono particolarmente interessanti, nella finestra del generatore di espressioni, le funzioni “Built-In” appartenenti alla categoria delle “funzioni di aggregazione SQL”.
- Formato: stabilisce il formato dell’oggetto (numero generico, standard, fisso, valuta, data generica, ...).
- Visibile: dice se il controllo è o meno visibile.
Per inserire elementi descrittivi conviene usare l’oggetto etichetta (label). Proprietà significative:
- Nome elemento: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà sul report.
6.6 Costruzione di report a più colonne - cenni.
Vediamo attraverso un esempio come costruire report a più colonne, cioè report che possono disporre i dati anche in colonna oltre che per righe successive. Il caso tipico è quello che consente di riservare una colonna per ogni nuovo raggruppamento: nelle righe sottostanti ogni colonna (che rappresenta il gruppo) ci saranno gli elementi di dettaglio di quel raggruppamento.
Per costruire un report a più colonne si può procedere come segue:
- Costruire un report normale (che abbia almeno un raggruppamento) con le procedure viste in precedenza.
- Entrare nella finestra di creazione/modifica dei report.
- Dare il comando File | Stampa | Anteprima di stampa. Selezionare la voce Anteprima di stampa | layout di pagina | Colonne.
- Nel campo Numero di Colonne selezionare il numero (massimo) di colonne per pagina per il report multicolonna. Nel campo Larghezza impostare la larghezza della colonna (eliminare il check dal box Come Corpo). Scegliere la priorità (di solito Priorità Verticale). Confermare con Ok.
- Tornare nella finestra di creazione/modifica dei report. Selezionare una intestazione/piè pagina di raggruppamento (se non è visibile farla comparire all’interno della finestra di Raggruppamento e Ordinamento - vedi paragrafo precedente). Di solito si sceglie un piè di pagina.
- Fare comparire l’elenco delle proprietà (Click con il destro | Proprietà).
- Nella proprietà Nuova Riga o Colonna selezionare un valore opportuno: di solito Dopo sezione (se si è scelto un “oggetto” piè di pagina).
7. LA PROGRAMMAZIONE IN ACCESS - VBA (CENNI).
Di solito il codice viene associato agli eventi che si possono verificare (nel modello previsto da Access) sugli oggetti che solitamente appartengono ad una maschera (più raramente sugli oggetti di un report). Attraverso i seguenti paragrafi vedremo come scrivere il codice e quali particolarità sono da osservare per codificare in VBA rispetto al Visual Basic “normale”.
7.1 Come scrivere il codice.
Il modo più semplice per scrivere/modificare il codice VBA associato agli eventi sugli oggetti è il seguente:
- Aprire la finestra di creazione/modifica di maschere o report (click con il destro | Vista disegno [Struttura] associato alle maschere o ai report).
- Selezionare un oggetto (l’intera maschera, un text box, un bottone, l’intestazione di un report, ecc.).
- Richiamare il comando Strumenti disegno maschere | Disegno | Strumenti | Foglio proprietà (o usare il menù di scelta rapida scegliendo sempre Proprietà).
- Selezionare la “linguetta” Evento. Scorrere e quindi selezionare l’evento di interesse.
- Se non è stato ancora scritto codice per quel dato evento selezionare Routine Evento dal combo box che compare a lato dell’evento.
- Fare click sul bottone con i tre puntini (...) a destra dell’evento per accedere alla finestra di codice per potere scrivere/modificare il codice associato all’evento. All’interno della finestra di codice è possibile muoversi selezionando altri oggetti e/o altri eventi. Si ricordi che è pure possibile selezionare la sezione “generale”.
- Per salvare le modifiche si può usare il comando File | Salva … oppure attendere i messaggi di richiesta di salvataggio che compaiono automaticamente chiudendo la finestra di creazione/modifica della maschera/report.
7.2 La struttura degli oggetti di Access.
Gli oggetti di Access sono strutturati in maniera gerarchica e possono essere acceduti usando la solita notazione “punto” del tipo:
- Oggetto1.Oggetto11.Oggettto111.Metodo oppure
- Oggetto1.Oggetto11.Oggettto111.Proprietà.
In realtà si dovrebbero distinguere, nella gerarchia gli oggetti semplici dalle collezioni (insiemi) di oggetti. Per quanto riguarda le collezioni, nella notazione punto, occorre evidenziare sia il nome della collezione che l’oggetto particolare con una espressione del tipo: Collezione(“Nome_Oggetto”) oppure Collezione!Nome_Oggetto.
Per i nostri scopi sono di interesse l’oggetto principale Application che fa parte degli “oggetti Access” e l’oggetto Database che fa parte degli “Oggetti DAO”.
Per quanto riguarda l’oggetto Application, per i nostri scopi, la sua struttura gerarchica comprende i seguenti elementi:
- La collezione delle Form ossia delle maschere aperte (Forms) che contiene:
- La collezione dei controlli (Controls) che contiene:
- Oggetti sezioni; Oggetti sottomaschere; Oggetti text box; Oggetti bottoni; Oggetti label; Oggetti listbox; ecc., ecc.
- La collezione dei Report aperti (Reports) che contiene:
- La collezione dei controlli (Controls) che contiene:
- Oggetti sezioni; Oggetti label; ecc., ecc.
- L’oggetto DoCmd che consente di impartire comandi ad Access.
Per quanto riguarda l’oggetto Database, per i nostri scopi, la sua struttura gerarchica comprende i seguenti elementi:
- La collezione TableDefs che contiene la descrizione delle tabelle del database.
- La collezione QueryDefs che contiene la descrizione delle query del database.
- La collezione Recordsets che contiene i recordset (Tabelle, query, query SQL,...) sulle quali si può agire con metodi e proprietà. L’unica collezione contenuta in ogni recordset è:
- La collezione Fields dei campi del recordset.
7.3 Caratteristiche relative all’uso dei “controlli” in VBA.
L’uso dei controlli in VBA è in generale governato dalle stesse regole del Visual Basic con, però, alcune notevoli eccezioni che vogliamo in qualche modo evidenziare. In generale, come in Visual Basic, i controlli si “usano” operando sulle loro proprietà e sui loro metodi e rispondendo agli eventi che si generano su di essi.
Per conoscere le proprietà, i metodi e gli eventi associati ad un controllo si può accedere ad una finestra di codice e dare il comando Visualizza | Visualizzatore oggetti; a questo punto occorre scegliere Access o DAO dal combo-box delle librerie ed individuare nell’elenco l’oggetto; sarà quindi disponibile sulla destra l’elenco alfabetico di proprietà, metodi ed eventi dell’oggetto selezionato; basterà scegliere l’oggetto che interessa e accedere alla guida premendo il tasto F1.
Alternativamente, per conoscere le proprietà e gli eventi associati ad un controllo si può accedere alla finestra proprietà associata al controllo in questione e accedere alla guida premendo il tasto F1 mentre si è posizionati su una certa proprietà o proprietà di evento.
Vediamo ora i tratti distintivi dei principali controlli del VBA (rispetto al Visual Basic). Per ogni controllo verrà fornito, alla fine, un breve elenco delle principali proprietà (e metodi) del controllo stesso; per conoscere i dettagli si interroghi la guida in linea in proposito.
NB Si osservi che, in VBA, può essere inserita l’istruzione Option Explicit che obbliga a definire ogni variabile usata fosse anche solo del tipo Variant.
7.3.1 Le Form (Maschere) ed il Corpo.
Occorre innanzi tutto distinguere (distinzione non presente in Visual Basic) la maschera (Form) nel suo complesso dal corpo (che non comprende eventuali intestazioni/piè pagina). Inoltre la struttura degli eventi in VBA è in qualche misura diversa da quella in Visual Basic: ad esempio, poiché in Access una maschera è in genere associata ad un recordset (tabella, query, ...), esiste l’evento Current (Su Corrente) che “si verifica quando lo stato attivo si sposta su un (nuovo) record che quindi diventa il record corrente, oppure quando una maschera viene aggiornata o viene rieseguita una query su di essa”.
Elenco principali proprietà e metodi (maschera): RecordSource, Tag, Parent, Name, TimerInterval, Requery, Controls.
7.3.2 I Text Box (Caselle di Testo - Edit Control).
Riguardo ai Text Box, così come per altri controlli (ma non per tutti), un tratto distintivo fondamentale è il fatto che per leggere/scrivere il contenuto dell’oggetto occorre che il medesimo abbia il “focus”. Occorrerà quindi in generale usare il metodo SetFocus sul Text Box prima di potere operare con esso.
NB Se l’oggetto non è abilitato occorre abilitarlo (proprietà Enabled), spostare il focus su di esso (SetFocus), operare sull’oggetto, spostare il focus da esso, disabilitarlo (per tornare alla condizione iniziale).
NB Il metodo SetFocus può essere usato anche per rendere attivo un controllo associato ad un campo di un database sui cui si vuole operare (ad esempio con il metodo DoCmd.FindRecord).
Elenco principali proprietà e metodi: SetFocus, Enabled, Text.
7.3.3 I Label (Etichette - Static Control).
Non ci sono particolari avvertenze per gli oggetti label, solo si ricordi che i Group Box (vedi sotto) sono costituiti dall’unione di un oggetto Cornice e di un oggetto Etichetta.
Elenco principali proprietà e metodi: Caption.
7.3.4 I Button (Bottoni - Command Button).
Nessuna avvertenza particolare.
Elenco principali proprietà e metodi: Enabled, Caption.
7.3.5 I Combo Box (Caselle Combinate) e le List Box (Caselle di Riepilogo).
Come per i Text Box, per leggere/scrivere il contenuto dell’oggetto occorre che il medesimo abbia il “focus” (almeno per l’oggetto Combo Box).
Elenco principali proprietà e metodi: AddItem, SetFocus, Value, ListIndex, RowSourceType, RowSource, ItemData, Requery (se associato a tabelle/query). Se la proprietà RowSourceType indica “Elenco valori”, la proprietà RowSource contiene l’elenco dei valori del combo box separati da punto e virgola; i valori alfanumerici vanno indicati tra virgolette (è possibile usare Chr(34)).
7.3.6 I Group Box (Gruppo di opzioni – Option Group - Cornice + Etichetta).
In VBA le cornici hanno lo scopo principale di accorpare Radio Button (opzioni - vedi sotto) e la struttura delle proprietà delle cornici riflette questo fatto: esiste infatti la proprietà Value che rappresenta il valore dell’opzione attualmente selezionata nella cornice. Per sapere quale nuova opzione viene selezionata basta testare la proprietà Value in corrispondenza dell’evento Click sulla cornice. Esiste anche la proprietà DefaultValue che consente di fissare l’opzione di default selezionata.
Usi delle cornici diversi dall’accorpamento di opzioni sono possibili ma non creano problemi per la nostra descrizione (non ci sono, cioè, avvertenze particolari da osservare in questi casi).
NB Sono stati riscontrati, in taluni casi, dei problemi nel caso si tentasse di rinominare le cornici. Si consiglia perciò, in caso di problemi, di lasciare il nome di default per le cornici.
Elenco principali proprietà e metodi: Value, DefaultValue.
7.3.7 I Radio Button (Option Button - Pulsanti di Opzione).
I Pulsanti di opzione sono di solito inclusi in cornici le quali, in genere, contengono anche il codice per gestire le opzioni (vedi sopra). In tal modo, perché tutto funzioni correttamente, occorre settare la proprietà OptionValue di ciascun Pulsante di opzione in modo che ognuno di essi possa essere identificato distintamente come valore della proprietà Value della cornice in cui è inserito (vedi sopra).
Elenco principali proprietà e metodi: OptionValue.
7.3.8 I Check Box (Caselle di Controllo).
Nessuna avvertenza particolare. La proprietà Value dice se l’opzione è selezionata o meno.
Elenco principali proprietà e metodi: Value.
7.3.9 Le sottomaschere (Sub Form).
Le sottomaschere sono oggetti particolari di Access e quindi metodi, proprietà ed eventi sono caratteristici di questo ambiente. Ricordiamo in particolare che per accedere agli oggetti di una sottomaschera di una data maschera si può usare una delle seguenti sintassi:
Form_Maschera(“Sottomaschera”).Form oppure
Forms!Maschera!Sottomaschera.Form
La proprietà Form restituisce cioè un riferimento alla maschera incorporata come sottomaschera in quella corrente.
Elenco principali proprietà e metodi: Form, LinkChildFields, LinkMasterFields.
7.4 Caratteristiche di un programma che non usa altre maschere/report.
Con programmi di questo tipo, si tratta sostanzialmente di usare l’ambiente di Access come un framework che consente di comporre form (maschere) per la gestione di dati (tabelle, query, ...) e per altre gestioni, ignorando la presenza di maschere già associate a insiemi di dati (tabelle, query, ...), ignorando la presenza di report, e ignorando la presenza di ogni altro elemento specifico di Access.
Programmi di questo tipo richiedono la creazione di maschere (vedi paragrafi precedenti) contenenti oggetti, e per il resto richiedono una programmazione Visual Basic del tutto simile a quella della versione “Stand-alone” con le precisazioni già fatte in precedenza e con le particolarità descritte nel seguito. Per questi casi conviene creare un form vuoto (comando Crea | Maschera | Maschera vuota) e quindi passare in modalita modifica della stessa. Per avere maggiori informazioni potrà essere utile anche consultare la guida in linea ai relativi argomenti: in questo caso il modo più semplice per cercare informazioni è quello di accedere ad una finestra di codice e dare il comando Visualizza | Visualizzatore oggetti; a questo punto occorre scegliere DAO dal combo-box delle librerie ed individuare nell’elenco l’oggetto di interesse; sarà quindi disponibile sulla destra l’elenco alfabetico di proprietà, metodi ed eventi dell’oggetto selezionato; basterà scegliere l’elemento che interessa e accedere alla guida premendo il tasto F1.
- Quando si gestiscono insiemi di dati (appartenenti di solito al database corrente) occorre definire variabili opportune. I tipi più comuni di variabile sono Database (per fare riferimento ad un oggetto database) e Recordset (per fare riferimento ad un qualsiasi recordset: tabella, query, ...). Si può usare al loro posto il più generico tipo Object senza nessuna perdita di generalità (al limite una leggera perdita di efficienza).
- Per ottenere un riferimento al database corrente occorre usare la funzione CurrentDb. Si userà quindi una istruzione del tipo Set DatabaseCorrente = CurrentDb().
- Per aprire un recordset (tabella, query, ..) si userà il metodo di database OpenRecordset. Si userà una istruzione del tipo Set InsiemeDati = VariabileDatabase.OpenRecordset(“NomeRecordset”).
- Si possono a questo punto usare tutte le proprietà, le collezioni ed i metodi tipici del Visual Basic per operare sui recordset: MoveFirst, MoveNext, MoveLast, Seek, EOF, NoMatch, Bookmark, Fields, Index, AddNew, Edit, Update, Delete, Close, LastModified, ....
- Le variabili di tipo oggetto di cui sopra vanno impostate a Nothing prima di uscire dalla maschera che le definisce.
- Per chiudere una maschera si può usare l’istruzione DoCmd.Close acForm, “Nome Maschera”, acSaveNo.
7.5 Caratteristiche di un programma che usa maschere e sottomaschere.
Quando si usano altre maschere o sottomaschere oltre a quella di “partenza” occorre tenere presente alcuni accorgimenti particolari tra i quali quelli riassunti nei seguenti punti:
- Conviene usare la parola chiave Me per fare riferimento alla maschera corrente (quella in cui è in esecuzione il codice).
- Si può usare la notazione “!” per fare riferimento agli elementi della collezione di default di un oggetto; esempi tipici di sono i seguenti: NomeForm!NomeCampo, NomeRecordSet!NomeCampo.
- Si può usare l’oggetto DoCmd per eseguire una serie di operazioni come ad esempio: DoCmd.Maximize (per massimizzare la maschera corrente); DoCmd.OpenForm (per aprire una maschera specificando una serie di parametri opzionali); DoCmd.Close (per chiudere un oggetto, ad esempio una maschera, specificando una serie di parametri opzionali).
- Per operare sulle proprietà e sui campi di una maschera aperta (diversa in generale da quella corrente) si può usare la collezione Forms con la seguente sintassi: Forms!Nome_maschera.Metodo/Proprietà oppure Forms!Nome_maschera!Nome_Campo. Sono, a questo proposito, particolarmente interessanti le seguenti proprietà delle maschere: Filter, FilterOn, OrderBy (nella stringa usare l’opzione DESC per ordinamenti decrescenti), OrderByOn.
- Si può usare la proprietà Tag di una maschera per memorizzare dati che così possono essere scambiati da una maschera all’altra. Ad esempio da una maschera mask2 si può scrivere l’istruzione Forms!mask1.Tag=valore; il codice di mask1 può ora accedere a questo valore con la notazione Me.Tag. E’ pure possibile scrivere istruzioni del tipo: Me.Tag = Forms!mask2!Campo1.Value (nel codice di mask1).
- Un oggetto Timer è automaticamente incluso in ogni maschera. Per non abilitarlo è sufficiente che la proprietà TimerInterval sia impostata a zero. Per rispondere agli eventi di timer è sufficiente gestire l’evento Timer della maschera.
- Per operare sulle proprietà/metodi (e sui campi) di una sottomaschera (cosa che non è tipicamente possibile in ogni contesto) si usa una notazione del tipo seguente:
- Forms!Nome_maschera!Nome_Sottomaschera.Form!NomeCampo oppure
- Forms!Nome_maschera!Nome_Sottomaschera.Form.Proprità/Metodo oppure (per le proprietà)
- Me!Nome_Sottomaschera.Form.Proprietà/Metodo (se “sono” sulla maschera principale).
- Per le sottomaschere risultano particolarmente utili le proprietà LinkChildFields e LinkMasterFields che consentono di creare un collegamento tra i campi della maschera principale (Master) ed i campi della sottomaschera (Child). Ad esempio: Me!Nome_sottomaschera.LinkChildFields = "campo1;...;campoN" e di quindi: Me!Nome_sottomaschera.LinkMasterFields = "campo1;...;campoN".
- Dall’interno di una sottomaschera la maschera principale può essere individuata tramite la proprietà Parent. In tal modo si possono scrivere istruzioni del tipo: ParentDocName = Me.Parent.Name (per leggere il nome della maschera principale); Me.Parent.Tag = X (per assegnare il valore X al Tag della maschera principale); ecc.
- Nel contesto di maschere e sottomaschere gioca un ruolo importante l’evento Current su una maschera (vedi paragrafo 7.3.1).
- NB Per verificare la correttezza del programma ed individuare eventuali errori è sufficiente impartire il comando “Debug | Compila …” dalla finestra di codice.
- 7.6 Caratteristiche di un programma che usa report.
- Quando si usano report occorre tenere presente, oltre a quanto detto nei paragrafi precedenti, alcuni accorgimenti particolari tra i quali quelli riassunti nei seguenti punti:
- Si può usare l’oggetto DoCmd per eseguire una serie di operazioni come ad esempio: DoCmd.OpenReport (per aprire un report specificando una serie di parametri opzionali).
- Per operare sulle proprietà/metodi e sui campi di un report aperto si può usare la collezione Reports con la seguente sintassi: Reports!Nome_report.Proprietà oppure Reports!Nome_report!Nome_Campo. Sono, a questo proposito, particolarmente interessanti le seguenti proprietà dei report: Filter, FilterOn.
- Poiché un report può avere in generale una struttura complessa è possibile raggiungere i suoi elementi attraverso strutture sintattiche che ripercorrono la struttura del report. Ad esempio in un report a tre livelli di nesting (livello 0, 1, 2) si può abilitare l’ordinamento decrescente dei dati con una istruzione del tipo mostrato di seguito: Reports!Nome_report.GroupLevel(2).SortOrder = -1. Per ulteriori informazioni al riguardo si consulti la guida in linea di Access a partire dall’oggetto Report in (particolare le proprietà dell’oggetto report).
- 7.7 Come mandare in esecuzione una maschera all’apertura di un Database.
- Affinché all’atto dell’apertura di un database venga aperta una certa maschera (o vengano eseguite più in generale altre azioni) è necessario dare il comando File | Opzioni e scegliere dall’elenco la voce Database corrente. A questo punto occorre compilare la sezione Opzioni dell’applicazione. Nella sezione detta occorre almeno selezionare la maschera desiderata dal combo box Maschera.
- 7.8 I moduli.
- I moduli consentono tipicamente di poter disporre di procedure, funzioni e variabili globali e cioè visibili a tutti gli oggetti (in particolare maschere e report) del database. Per potere essere visibili ovunque funzioni e procedure conviene che siano definite con la parola chiave Public, mentre le variabili devono essere definite come Global o Public. A parte quanto detto l’uso delle variabili, funzioni e procedure dei moduli non richiede avvertenze particolari rispetto all’uso dei corrispondenti oggetti locali.
- Per definire variabili, procedure e funzioni di modulo occorre:
- La prima volta dare il comando Crea | Macro & Codice | Modulo
- Le volte successive selezionare un modulo esistente dal Pannello di Navigazione e usare la voce Vista disegno.
- In ogni caso compare la finestra di codice nella quale si possono scrivere/modificare righe di codice corrispondenti a variabili, procedure e funzioni.
8. LE PRINCIPALI VOCI DEL RIBBON - NASTRO (CENNI).
- Elenchiamo qui di seguito alcune voci del Ribbon (nastro) che ha rimpiazzato in questa nuova versione i menù. Mostriamo quelle voci che paiono significative e che non sono state evidenziate (almeno in maniera adeguata) nella trattazione precedente. L’elenco delle voci viene, per comodità, suddiviso in paragrafi corrispondenti alla categoria di menù a cui apparteneva nella precedente versione.
- 8.1 Le operazioni sui File.
- Le voci di Dati esterni | Importa & Collega consentono l’inclusione di copie o collegamenti di tabelle e altri oggetti da database esterni (sia database Access che di altro tipo). Una tabella collegata fornisce solo un riferimento ad una tabella che si trova in effetti in un altro database. La tabella viene a tutti gli effetti vista anche nel corrente database ma appartiene ad un altro database di cui segue le “regole” (es. regole di integrità referenziale).
- Le voci di Dati esterni | Esporta consentono di esportare l’oggetto (tabella, query, maschera, report, ...) correntemente selezionato in un altro database/file specificato che può essere un database Access o di altro tipo. Qui è anche possibile esportare l’oggetto in PDF o inviarlo via Mail in un certo formato.
- La voce File | Salva oggetto con nome consente di esportare l’oggetto (tabella, query, maschera, report, ...) correntemente selezionato come altro oggetto nello stesso database.
- La voce File | Salva database con nome consente di creare una copia del database.
- Le voci di File | Condividi consentono varie forme di condivisione del database, in particolare consentono di salvare il database corrente con un formato precedente di Access.
- 8.2 Le operazioni di modifica tramite appunti (clipboard).
- Le funzionalità tipiche di questo gruppo di operazioni sono: taglia, copia, incolla dalla voce Home | Appunti; elimina dalla voce Home | Records; trova, sostituisci dalla voce Home | Trova; … .
- Oltre alle funzionalità tipiche di questo gruppo vi è la possibilità di creare (tipicamente sul desktop) un collegamento all’oggetto correntemente selezionato. Per ottenere questo è sufficiente trascinare l’oggetto in questione sul desktop. Quando si attiverà tale collegamento, verrà mandato in esecuzione Access ed aperto l’oggetto “collegato”.
- 8.4 Il gruppo delle operazioni di inserimento.
- Quando si crea o si modifica la struttura di una tabella, si trova, tra le altre, la voce Strumenti tabella | Disegno | Strumenti | Modifica campo di ricerca che consente di modificare/inserire nella tabella corrente uno o più campi il cui valore viene scelto (tipicamente tramite combo box) da un elenco di valori di solito appartenente ad un’altra tabella/query. La creazione di tale campo è guidata tramite Wizard.
- 8.5 Il gruppo degli strumenti.
- Il comando Home | Records | Controllo ortografia esegue un controllo ortografico “stile Word” sui campi alfabetici dell’oggetto (di solito una tabella) selezionato.
- Il comando File | Opzioni | Controllo | Opzioni di correzione automatica consente di abilitare/disabilitare la correzione automatica di determinati errori (vedi la relativa finestra di dialogo) durante la digitazione di valori nei campi.
- Probabilmente tra le funzioni più interessanti del menù strumenti vi è quella invocata dal comando Dati esterni | Esporta | Unisci con Microsoft Word che consente di collegare dati ad un documento Word e di stampare lettere “tipo” o buste unendo in maniera appropriata testo Word e campi di database. Una tipica procedura di utilizzo percorre i seguenti passi:
- Selezionare un oggetto di database (tipicamente una tabella o una query)
- Dare il comando Dati esterni | Esporta | Unisci con Microsoft Word.
- Selezionare dalla finestra di dialogo dell’autocomposizione relativa alla “stampa unione” se creare un nuovo documento per la stampa unione o aprirne uno esistente. Se si sceglie di aprire un documento esistente bisognerà poi specificare quale.
- A questo punto Access apre automaticamente Word. All’interno di Word si possono usare tutte le funzionalità usuali ma in più si possono utilizzare tipicamente le seguenti funzionalità:
- Dalla barra appositamente creata creata a destra seguire i passaggi proposti:
- Nel primo selezionare il tipo di documento (di solito lettera o catalogo: la differenza principale tra lettere e catalogo consiste nel fatto che con l’opzione “lettere” viene inserita una interruzione di pagina e di sezione dopo ogni singola lettera generata con i dati di una riga di tabella/query del database, mentre questo non avviene con l’opzione “catalogo”).
- Nel secondo scegliere il documento di partenza (di solito quello corrente)
- Nel terzo scegliere la sorgente dati (di solito confermare quella proposta che proviene da Access).
- Nel quarto comporre il documento scrivendo e inserendo i campi tramite la voce Mailing | Scrivi & inserisci campi | Inserisci campo unione.
- Nel quinto si ha un preview del documento composto
- Nel sesto si può scegliere di stampare il documento di unione oppure di modificare il documento di unione.
- Il comando Dati esterni | Esporta | Excel consente di importare l’oggetto (tipicamente tabella o query) selezionato all’interno di Excel per successive elaborazioni. Ogni riga della tabella/query verrà inserita in una riga di Excel; la prima riga conterrà i nomi di campo. In Excel si potranno applicare varie operazioni interessanti: filtro, tabella Pivot, ecc. ecc.
- Il comando Dati esterni | Esporta | Word consente di importare l’oggetto (tipicamente tabella o query) selezionato all’interno di Word per successive elaborazioni. Ogni riga della tabella/query verrà inserita in una riga di una tabella Word; la prima riga della tabella Word conterrà i nomi di campo.
- Il comando Strumenti database | Analizza | Analizza tabelle consente di eseguire un’analisi automatica della struttura e dei dati delle tabelle per proporre azioni migliorative. L’analisi delle tabelle è tipicamente fondata sul concetto di forme normali dei database relazionali.
- Il comando Strumenti database | Analizza | Analizza prestazioni, dopo avere richiesto di selezionare gli oggetti (tabelle, query, maschere, report, ...) di interesse, consente di eseguire un’analisi automatica delle prestazioni per proporre azioni migliorative.
- Il comando Strumenti database | Analizza | Documentatore di database, dopo avere chiesto l’elenco degli oggetti di interesse attraverso opportuna finestra di dialogo, produce un rapporto dettagliato (che può essere poi stampato) delle caratteristiche degli oggetti selezionati. Usando il bottone opzioni della finestra di dialogo di selezione degli oggetti è possibile specificare più in dettaglio quali caratteristiche evidenziare per gli oggetti.
- Il comando Strumenti database | Macro | Esegui Macro consente di mandare in esecuzione una macro di cui si specifica il nome.
- Il comando Strumenti database | Componenti agiiuntivi | Componenti aggiuntivi | Gestore componenti aggiuntivi consente di aggiungere (o rimuovere) i file di aggiunta di Access (MDA) che contengono di solito dei Wizard per consentire di eseguire in maniera “guidata” diverse operazioni.
- Il comando Crea | Maschere | Pannelli di navigazione consente di creare in maniera intuitiva pannelli di navigazione (ex switchboard) che sono in pratica particolari maschere in cui creare bottoni (ed oggetti simili) che consentono di invocare funzionalità (aprire maschere, aprire report, ecc.). Dato il comando seguire le relative indicazioni.
- Il menù File | Opzioni consente di specificare attraverso una “tabbed dialog” tutte le opzioni significative relative ad Access.
- Possiamo operare anche con le seguenti voci di menù che hanno un utilizzo automatico (basta seguire le indicazioni una volta dato il comando):
- File | Informazioni | Crittografa con password consente di cifrare (criptare) un database per proteggerlo da usi/manipolazioni improprie imponendo l’uso di una password: un database cifrato non può essere analizzato (in maniera semplice). Con lo stesso comando è possibile decifrare un database che sia cifrato.
- File | Condividi | Salva database come | … consente di convertire un database in una precedente versione di Access o in quella corrente.
- File | Informazioni | Compatta e ripristina database consente di compattare un database eliminando lo spazio sprecato e così aumentando le prestazioni. Consente altresì di ripristinare un database “corrotto” in maniera non irrimediabile.
- File | Condividi | Salva database come | Avanzate | Crea ACCDE consente di costruire una copia del database attuale con codice Visual Basic e struttura di form e report compilati che può essere eseguito tramite un doppio click sull’icona del relativo file. Questo consente di avere maggior efficienza.
8.7 Il menù di Help (?).
Questo menù contiene il punto di partenza per l’accesso alle pagine della guida in linea di Access. Spesso si può invocare l’help con il tasto F1 o usando, in opportuni contesti, il menù di scelta rapida.
9. GENERAZIONE DI PAGINE ASP PER LA VISUALIZZAZIONE DI DATI.
Questa parte non è stata prevista nella versione di Access 2010.
10. GENERAZIONE DI PAGINE HTML PER LA VISUALIZZAZIONE DI DATI TRAMITE REPORT.
In questo paragrafo si forniscono indicazioni su come generare (automaticamente) pagine HTML che esportino su Internet/Intranet i report di Access per visualizzare dati di un database.
Affinché quanto specificato successivamente funzioni occorre che sia configurato in maniera opportuna una directory virtuale su di un server Internet/Intranet. A questo punto è possibile iniziare a svolgere le operazioni descritte nei successivi sottoparagrafi.
NB Quando si deve effettuare la manutenzione del database può essere desiderabile fermare l’esecuzione del server internet (IIS o PWS). L’icona del PWS si trova nella barra d’avvio. Terminata la manutenzione occorre ripristinare l’esecuzione del server internet (magari facendo ripartire la macchina server).
10.1 Operazioni all’interno dell’applicativo Access.
Per potere creare pagine HTML (Internet/Intranet) che consentano di “esportare” report al fine di visualizzare in formato opportuno dati di un database è possibile svolgere i seguenti punti:
- Creare il database comprensivo degli usuali oggetti tra cui almeno un report. Si ricordi che il codice scritto nel report non verrà esportato.
- Selezionare il report da esportare.
- Dare il comando Dati esterni | Esporta | Altro | Documento HTML.
- Nella successiva finestra di dialogo (Esporta – Documento HTML) selezionare il nome del file ed il direttorio in cui memorizzare il file HTML generato. Il direttorio dovrebbe essere uno di quelli “visibile” da IIS o PWS. Fare click sul bottone Ok (anche nella finestra successiva).
Dopo le precedenti operazioni il sistema crea in automatico i file HTML contenti l’immagine statica del report nell’istante del salvataggio. Questo vuol dire che aggiornando i dati del database non si aggiornano automaticamente i file HTML: l’aggiornamento dovrà avvenire a cura dell’utente di Access che dovrà in questo caso rieseguire la precedente procedura.
10.2 Operazioni necessarie per visualizzare il report da Internet Explorer.
Per potere utilizzare quanto predisposto in precedenza è possibile porsi su una postazione client (possibilmente ma non necessariamente diversa dalla postazione del server) e mandare in esecuzione Internet Explorer. A questo punto occorre digitare, nel campo di indirizzo URL, la stringa http://NomeServer/pathname/file.html dove NomeServer è il nome del server su cui è stata posta la pagina html generata al precedente paragrafo 10.1 mentre pathname/file.html rappresenta il percorso ed il nome del file HTML generato al paragrafo 10.1 (il percorso viene dato a partire dalla radice virtuale di IIS o PWS). A questo punto dovrebbe comparire il report con i dati in precedenza salvati.
11. LE DATA ACCESS PAGES.
Le Data Access Pages sono state eliminate dalla versione attuale di Office.
12. NOVITA’.
12.1 Particolarità sulla voce Strumenti | Riferimenti della finestra di codice.
Si può usare questa voce per consentire di inserire il riferimento alla libreria “Microsoft DAO …” oppure alla libreria “Microsoft ActiveX Data Objects …” per mantenere la compatibilità con il tipo di progetti VBA descritti in precedenza (paragrafo 7.4). Si tenga presente che la libreria inserita di default già dovrebbe garantire questa compatibilità.
12.2 Il tipo di campo “collegamento ipertestuale”.
Con il tipo di campo “collegamento ipertestuale” si chiede di inserire un campo (nella tabella corrente aperta in modalità struttura) che consenta l’inserimento e l’aggiornamento di stringhe di testo che rappresentano collegamenti ipertestuali (indirizzi URL). Un click su un valore di questo tipo (anche all’interno di una query o di una maschera derivata dalla tabella contenente tale campo) consente di aprire automaticamente Internet Explorer e di visualizzare la pagina (il documento) a cui il collegamento stesso fa riferimento.
12.3 Esportazione / Importazione di dati (tabelle) in formato XML.
Usando il comando Dati esterni | Esporta è possibile esportare l’oggetto selezionato (di solito una tabella) in formato XML (File XML). Dopo avere dato il comando e scelto nome di file e direttorio in cui salvare i dati in formato XML viene fornita la possibilità di scegliere i parametri di salvataggio: in particolare sarà possibile decidere di salvare o meno lo schema (XSD) oltre ai dati e sarà anche possibile decidere di salvare un foglio di “presentazione” (XSL usato per default da un file html). In maniera simmetrica è possibile importare dati in formato XML (sempre che questi dati abbiano la struttura di una tabella Access) usando il comando Dati esterni | Importa e scegliendo il tipo di file XML.
12.4 Conversione (upsizing) di un database Access in un database SQL Server.
Tramite l’opportuna opzione di menù Strumenti database | Trasferimento dati | SQL Server è possibile fare in modo che il corrente database Access venga esportato in un database SQL Server (nuovo o già esistente).
12.5 Trasferimento in formato PDF.
Tramite la voce di menù Dati esterni | Esporta | PDF o XPS è possibile esportare l’oggetto correntemente selezionato (tabella, query, form, report) in formato PDF.
12.6 Altre operazioni interessanti.
- Controllare sempre tutte le voci disponibili nei menù Dati esterni | Importa e Dati esterni | Esporta quando si necessita scambiare dati tra diversi formati/strumenti. Al riguardo le possibilità offerte dalla corrente versione sono molto articolate come dimostrato anche altrove nella dispensa.
- Nel menù Crea | Maschera (form) controllare tutte le nuove possibilità offerte dalle voci presenti nell’elenco Altre maschere. Qui troviamo la possibilità di creare maschere di struttura nuova rispetto a quelle tradizionali discusse in questa disepnsa
DISPENSA INTRODUTTIVA SULL’APPLICATIVO ACCESS
(OFFICE 2003 BETA 2)
0. CREAZIONE/APERTURA DI UN DATABASE.
Per creare un nuovo database:
- Selezionare File | Nuovo. Quindi selezionare Database vuoto dalla “barra di dialogo” posta sulla destra.
- Nella dialog box Salva nuovo database fornire un nome ed un direttorio dove piazzare il nuovo database e fare click sul pulsante Crea.
- Verrà mostrata la classica finestra con i 7 oggetti classici di un database Access: Tabelle, Query, Maschere, Report, Pagine, Macro, Moduli. Tutti questi oggetti sono radunati all’interno del gruppo Oggetti.
Per aprire un database:
- Selezionare File | Apri.
- Dalla relativa dialog box selezionare il database da aprire.
- Premere il bottone Apri.
Per chiudere un database dare il comando File | Chiudi. Per uscire da Access dare il comando File | Esci.
1. LE TABELLE.
Le tabelle rappresentano l’ingrediente principale di ogni database. Per lavorare sulle tabelle occorre scegliere la voce Tabelle nella finestra del database.
1.1 Creazione di Tabelle.
- Selezionare il bottone Nuovo e poi (nella relativa dialog box) Visualizzazione struttura. Confermare poi con Ok.
- Compare la finestra di creazione di una tabella in visualizzazione struttura.
- Fornire il nome di campo nella prima colonna.
- Fornire il tipo del campo nella seconda colonna. I tipi più importanti ed usati sono: Testo, Numerico, Data/Ora, Contatore, Oggetto OLE (per inserire oggetti, ad esempio immagini).
- Nelle parte sottostante, una volta selezionato il tipo si possono definire informazioni e caratteristiche che dipendono dal tipo di campo. Riassuntivamente possiamo individuare le seguenti:
- Per tutti i tipi: l’indicazione se il campo in questione sarà indicizzato (con o senza possibili duplicati di chiave) oppure no.
- Per il tipo Testo: la dimensione in caratteri. Vedere comunque anche le altre caratteristiche.
- Per il tipo Numero: la dimensione che può assumere principalmente i seguenti valori: intero, intero lungo, precisione singola (numeri decimali), precisione doppia (numeri decimali); il numero di posizioni decimali. Vedere comunque anche le altre caratteristiche.
- Per il tipo Data/Ora: il formato della data/ora.
- Per il tipo Contatore: la dimensione che viene di solito impostata ad intero lungo; i nuovi valori che possono essere impostati ad incremento (ogni nuovo record avrà un numero progressivo superiore di uno al precedente caricato) o casuale (i numeri vengono generati casualmente in modo però da garantire l’univocità del valore del campo); l’opzione più usata è incremento.
- Nella terza colonna (descrizione) è possibile mettere un commento al campo a puro scopo documentativo.
A questo punto sono possibili, tra le altre, le seguenti operazioni:
- Editazione dei valori impostati in precedenza.
- Spostamento di un campo: tramite una operazione di trascinamento (drag).
- Cancellazione di un campo: selezionare il campo; dare il comando Modifica | Elimina.
- Inserimento di un campo: selezionare il campo prima del quale si vuole l’inserimento; dare il comando Inserisci | Righe.
- Creazione/Modifica degli indici (anche su più campi): dare il comando Visualizza | Indici. A questo punto compare una finestra nella quale: nella prima colonna si indica il nome dell’indice; nella seconda colonna il nome del campo che contribuisce all’indice (per gli indici multicampo si compilano più righe nella seconda colonna senza ricompilare la prima); nella terza colonna si indica il criterio di ordinamento. In fondo alla finestra è possibile, in questa fase, indicare che un certo indice è univoco ed è anche possibile indicare che un certo indice (anche multicampo) è la chiave primaria della tabella (in questo caso l’indice dovrà anche essere univoco).
- Attribuire una chiave primaria alla tabella: selezionare il/i campo/i per la chiave primaria (per selezionare più campi usare il trascinamento del mouse oppure i tasti SHIFT e CTRL durante la/le selezione/i); dare il comando Modifica | Chiave primaria. Si ricordi che la chiave primaria è l’elemento privilegiato per costruire relazioni.
- Uscita: chiude la finestra di creazione della tabella. Access allora chiede se salvare la struttura della tabella e chiede anche (la prima volta) quale nome attribuire alla tabella medesima.
1.2 Modifica di Tabelle.
- Selezionare una tabella dall’elenco delle tabelle.
- Fare click sul bottone Struttura per accedere alla finestra struttura della tabella descritta nel paragrafo precedente. Si procede quindi ad operare su questa finestra come indicato nel paragrafo precedente.
1.3 Caricamento/Modifica di Tabelle.
- Selezionare una tabella dall’elenco delle tabelle.
- Fare click sul bottone Apri per accedere ad una visione “tabulare” della tabella che consente, in maniera del tutto intuitiva, sia il caricamento di nuovi dati, che la modifica dei dati, che ovviamente la visualizzazione dei medesimi. In più è possibile eseguire un numero enorme di altre operazioni sui dati della tabella: daremo di seguito alcuni accenni.
Nella maschera di caricamento/modifica di una tabella sono possibili, tra le altre, le seguenti operazioni:
- Dare ESC per annullare le modifiche mentre si è ancora sulla stessa riga (record).
- Cancellare una o più righe: selezionare la/le riga/righe; dare il comando Modifica | Elimina; verrà richiesta conferma.
- Inserire un record: dare il comando Inserisci | Nuovo record; il record viene sempre inserito in fondo.
- Modificare la larghezza delle colonne: selezionare la/le colonna/e di cui modificare la larghezza; dare il comando Formato | Larghezza Colonne ed agire sulla relativa dialog box.
- Salvare il Layout (File | Salva) dell’elenco come si presenta attualmente (per le volte successive).
- Stampare i record: dare il comando File | Stampa; compilare in maniera opportuna la relativa dialog box (in particolare la sezione relativa all’intervallo di stampa); confermare con ok la stampa. Si noti che è possibile impostare la pagina (File | Imposta pagina) ed è possibile avere un anteprima della stampa (File | Anteprima di stampa).
- Eseguire operazioni di copia/taglia/incolla con i dati dei campi usando il menù Modifica. In Office2003 è possibile operare con più appunti: quando si eseguono più operazioni di copia (dal menù modifica) compare automaticamente sulla destra la “barra di dialogo” degli appunti dalla quale si possono incollare le voci di appunti desiderate semplicemente selezionandole.
- Ricercare dati. Il tipo più significativo di ricerca è il seguente: selezionare un campo su cui eseguire la ricerca; dare il comando Modifica | Trova; compare la finestra di dialogo di trova e sostituisci (posizionata sulla linguetta Trova); specificare (per il campo in questione) la stringa di ricerca, selezionare solo il campo di interesse nella voce Cerca in, selezionare il tipo di confronto (campo intero, parte del campo, inizio campo), selezionare la zona della tabella in cui cercare (tutto, su, giù); quindi usare il tasto trova successivo per iniziare la ricerca. Il bottone annulla termina la ricerca.
- Sostituire valori: la sostituzione si attiva con il comando Modifica | Sostituisci ed ha una struttura analoga a quella della ricerca.
- Spostarsi su un certo record: si usa il comando Modifica | Vai a; poi si seleziona dove andare: primo, ultimo, successivo, precedente, nuovo.
- Eseguire delle operazioni di filtro sui record (righe) della tabella: l’opzione più comoda si ottiene con il comando Record | Filtro | Ordinamento/Filtro avanzato. Una volta scelta questa voce di menù si accede ad una finestra che consente di operare come segue (nella parte inferiore della finestra):
- Nella prima riga di ogni colonna si seleziona (in ordine) il campo su cui imporre condizioni o criteri di ordinamento.
- Nella seconda riga di ogni colonna si seleziona l’eventuale criterio di ordinamento.
- Nella terza riga si indica un criterio di selezione. Il criterio di selezione farà tipicamente uso degli operatori di relazione (<,>,=,<>,<=,>=), degli operatori logici (And, Or, Not) e di valori come operandi (i valori stringa andranno racchiusi tra virgolette). Si potrà usare l’operatore Like ed i caratteri jolly (es. *) per corrispondenze parziali (ad es. Like “Giova*” troverà un campo che contiene “Giovanni” ma anche un campo che contiene “Giovani”).
- E’ poi possibile cancellare delle colonne con il comando Modifica | Elimina colonne dato dopo avere selezionato la/le colonna/e da eliminare. E’ possibile Inserire una colonna selezionando la colonna prima di cui inserire e dando il comando Inserisci | Colonne.
- Applicare il filtro per renderlo effettivo con il comando Filtro | Applica filtro/ordina. Se non faccio questa operazione il filtro non viene salvato.
- Salvare il filtro come query: dare il comando File | Salva come query; si deve poi dare un nome che finirà tra le query.
- E’ infine possibile uscire dalla maschera relativa ai filtri chiudendo la relativa finestra.
- Una volta usciti dalla maschera relativa ai filtri/ordinamenti è possibile applicare il filtro creato in precedenza (comando Record | Applica filtro/ordina) oppure eliminare la vista attraverso il filtro in precedenza applicato (comando Record | Rimuovi filtro/ordina).
Si osservi infine che nella prima colonna delle tabelle è possibile che compaia un piccolo simbolo “+”: questo consente di visualizzare gli eventuali record correlati attraverso le relazioni (vedi sotto) con il record corrente.
1.4 Eliminazione di Tabelle.
Per eliminare una tabella è sufficiente selezionarla e dare il comando Modifica | Elimina. Verrà richiesta conferma.
2. LE RELAZIONI.
Una relazione può essere definita come un legame tra due tabelle basato sul valore di uno o più campi di ciascuna delle due tabelle. Di solito i campi di almeno una delle due tabelle sono campi chiave. I due principali tipi di relazioni sono:
- Relazione uno-a-uno: in questo caso ad ogni riga della prima tabella corrisponde una sola riga nella seconda.
- Relazione uno-a-molti: in questo caso ad ogni riga della prima tabella corrispondono più righe nella seconda.
Le relazioni molti-a-molti possono sempre essere decomposte in termini di relazioni uno-a-molti con l’aggiunta di “tabelle di appoggio”.
2.1 La creazione di relazioni.
La procedura più semplice per la creazione di relazioni è la seguente:
- Scegliere il comando Strumenti | Relazioni.
- Comparirà la finestra Relazioni assieme ad una finestra di dialogo che consente di scegliere le tabelle tra cui creare le relazioni. Si osservi che è possibile creare relazioni anche utilizzando Viste (Query) oltre alle tabelle.
- Selezionare ogni tabella di interesse e confermarla con Aggiungi poi chiudere la finestra di dialogo con Chiudi. Nella finestra relazioni rimarranno le tabelle (e le query) selezionate. Le volte successive, per fare comparire la finestra di dialogo per selezionare le tabelle di interesse dare il comando Relazioni | Mostra Tabella (dopo avere dato il comando Strumenti | Relazioni).
A questo punto per ogni relazione che si vuole creare, individuare la copia di tabelle di interesse ed eseguire i passi successivi:
- Spostarsi sulla prima tabella (che conviene sia quella del “lato uno” nelle relazioni “uno-a-molti”). In presenza di relazioni uno-a-uno conviene selezionare prima la tabella “principale” (quella con i dati di riferimento) e poi quella “dipendente” (cioè quella con i dati che fanno riferimento alla “principale”). Questo è importante soprattutto in presenza di integrità referenziale (vedi sotto).
- Selezionare il/i campo/i in base a cui relazionare le tabelle (per selezionare più di un campo tenere premuto il tasto CTRL mentre si selezionano i campi successivi al primo).
- Effettuare una operazione di drag (trascinamento) sul campo corrispondente nella seconda tabella e rilasciare il pulsante del mouse. Nel caso di corrispondenza con più campi effettuare il trascinamento solo sul primo dei campi corrispondenti.
- A questo punto comparirà la finestra di dialogo Modifica relazioni.
- Modificare o completare la tavola che consente di stabilire i campi posti in relazione tra le due tabelle.
- Accedere (tramite il bottone “Tipo join”) alla finestra di dialog “proprietà join”. In questa finestra occorre di solito selezionare “Includi solo le righe in cui i campi collegati da entrambe le tabelle sono uguali”; potrebbe però qualche volta essere necessario selezionare un join diverso. Uscire da questa finestra di dialogo.
- Osservare che il tipo di relazione viene automaticamente impostato al valore corretto (uno-a-uno o uno-a-molti).
- Specificare se si vuole l’integrità referenziale. Con l’integrità referenziale si richiede in sostanza che non si possa inserire un valore nella seconda tabella se non c’è già il corrispondente valore nella prima e non si possa cancellare un valore dalla prima tabella se esistono righe correlate nella seconda.
Barrando in questo caso la casella aggiorna campi correlati a catena, si fa in modo che cambiamenti nei campi “relazionati” della prima tabella vengano riportati anche nelle righe corrispondenti della seconda.
Barrando la casella elimina record correlati a catena, si impone che la cancellazione nella prima tabella (che ora è permessa) comporti la cancellazione delle righe corrispondenti nella seconda.
- Alla fine confermare la relazione così costruita con Crea (o Ok per le volte successive).
2.2 La visualizzazione, la modifica a la cancellazione di relazioni.
Per visualizzare la struttura delle relazioni occorre dare il comando Strumenti | Relazioni. Comparirà la finestra relazioni nella quale saranno mostrate le tabelle (e le query) e le relazioni tra di esse. Volendo è possibile nascondere o mostrare tabelle (o query) rispettivamente con i comandi Relazioni | Nascondi Tabella e Relazioni | Mostra tutto.
Per modificare una relazione:
- Dare il comando Strumenti | Relazioni.
- Si seleziona la relazione (con un click sul link).
- Si da il comando Relazioni | Modifica Relazione.
- Si accede alla finestra di dialogo Modifica relazioni descritta nel paragrafo 2.1 per modificare i parametri della relazione.
Per cancellare una relazione dare il comando Strumenti | Relazioni, poi si seleziona la relazione (con un click sul link) e si da il comando Modifica | Elimina. Seguirà richiesta di conferma.
3. LE QUERY (VISTE).
Le query (o viste) possono essere considerate tabelle virtuali che attingono i loro dati da tabelle o query definite in precedenza. In genere le query richiedono l’esistenza di relazioni ed operano selezioni e proiezioni sull’insieme delle tabelle/query su cui sono costruite. Le query (o viste) servono in pratica per avere una visione “logica” dei dati che differisca da quella “fisica” imposta dalla struttura delle tabelle/query di partenza.
3.1 La creazione di una query.
Per creare una query si può seguire la successiva procedura:
- Selezionare la voce Query nel database corrente.
- Selezionare il bottone Nuovo e quindi selezionare Visualizzazione Struttura nella successiva finestra di dialogo.
- Compare la finestra query di selezione ed in primo piano una finestra di dialogo dalla quale selezionare le tabelle/query su cui costruire la nuova query. Usare il bottone Aggiungi per aggiungere tabelle/query ed il bottone Chiudi per passare alla costruzione effettiva della query. Le volte successive, per fare comparire la finestra di dialogo per la scelta delle tabelle/query, dare il comando Query | Mostra Tabella.
Nella finestra query di selezione si può costruire/modificare una query. Per query di tipo semplice la procedura può essere la seguente per ogni colonna della tabella posta in fondo alla finestra (se la voce Visualizza | Totali è disabilitata e la voce Visualizza | Nomi tabelle è abilitata):
- Nella riga “campo” selezionare il campo di una tabella (o query) o scrivere espressioni che usano come operatori anche nomi di campo (nella sintassi nome_tabella.nome_campo). All’eventuale espressione (qui come altrove) si può assegnare un nome generando una forma sintattica del tipo Nome:Espressione.
- Nella riga “tabella” dovrebbe automaticamente venire selezionata la tabella/query relativa al campo scelto in precedenza.
- Nella riga “ordinamento” è possibile scegliere un criterio di ordinamento per il campo. In questo caso la scelta dell’ordine dei campi nelle colonne diventa fondamentale (ordinamento da sinistra a destra).
- Nella riga “mostra” posso specificare se il campo selezionato andrà mostrato o meno nella query (pur facendone comunque parte).
- Nella riga “criteri” (e successive) si possono specificare i criteri (condizioni) a cui deve soddisfare il valore del campo selezionato perché la relativa riga sia inclusa nella query. Si opera in pratica una selezione. Le condizioni si compongono degli usuali operatori (relazionali, logici, ecc.): vedi anche il paragrafo 1.3 per quanto riguarda le operazioni di filtro. Non usare il nome del campo nelle espressioni logiche (in quanto è sottinteso) e quindi scrivere espressioni del tipo: (<=3) Or (>=6). Ci si ricordi anche di usare i delimitatori (“ per il tipo Testo e # per il tipo Data). Si osservi che i criteri specificati in diverse righe “Oppure” sono da considerarsi logicamente come Or, mentre i criteri specificati sulla stessa riga (in colonne diverse) sono da considerarsi logicamente come And.
NB1 Condizioni su più campi possono essere costruite scrivendo espressioni logiche nella riga “campo” che facciano appunto riferimento a più campi (anche di tabelle diverse) e selezionando nella riga “criteri” (o successive) solo i valori corrispondenti a vero (-1).
NB2 Quando si debbono scrivere formule è possibile richiamare il generatore di formule attraverso il menù di scelta rapida (click con il pulsante destro) e dando il commando “Genera”.
Nella finestra query di selezione si possono costruire/modificare query più complesse di quelle menzionate in precedenza che consentono di eseguire raggruppamenti di dati. Rispetto a quanto detto sopra la procedura può essere la seguente per ogni colonna della tabella posta in fondo alla finestra (se la voce Visualizza | Totali e la voce Visualizza | Nomi tabelle sono abilitate):
- Per la riga “campo” vale lo stesso discorso di cui sopra.
- Per la riga “tabella” vale lo stesso discorso di cui sopra.
- Per la riga “formula” indicare raggruppamento per i campi/espressioni che faranno parte del raggruppamento definito dalla presente query (es. i dati di una fattura di un cliente); indicare invece la funzione di raggruppamento (es. somma, conteggio, ...) per i campi/espressioni che andranno riassunti (es. il prodotto quantità per prezzo di ogni riga delle fatture dei clienti).
- Per la riga “ordinamento” vale lo stesso discorso di cui sopra.
- Per la riga “mostra” vale lo stesso discorso di cui sopra.
- Per la riga “criteri” (e successive) vale lo stesso discorso di cui sopra.
E’ poi possibile eseguire, tra le altre, le seguenti azioni:
- Cambiare le proprietà del campo selezionato della query (comando Visualizza | Proprietà). Facendo click con il pulsante destro del mouse sull’area della query, sull’elenco campi o su un campo specifico e selezionando proprietà si può accedere all’elenco delle proprietà dell’oggetto in questione.
- Allargare le colonne con una operazione di trascinamento del mouse.
- Inserire colonne (comando Inserisci | Colonne) dopo avere selezionato la colonna prima di cui inserire.
- Cancellare colonne: si selezionano le colonne e si usa il tasto CANC.
- Selezionare un diverso tipo di query dal menù Query: per i nostri scopi ci sarà sufficiente il tipo query di selezione esaminato in precedenza.
NB Per creare query su cui siano eseguibili inserimenti devono essere soddisfatte una serie di condizioni tra cui quella di includere il campo chiave del lato “molti” di una relazione uno-a-molti.
3.2 La modifica di una query.
Per modificare una query è sufficiente selezionare la voce Query, selezionare la query di interesse, usare il bottone Struttura. A questo punto si accede alla finestra query di selezione descritta (con le sue funzionalità) nel precedente paragrafo 3.1.
3.3 La cancellazione di una query.
Per cancellare una query è sufficiente selezionare la voce Query, selezionare la query di interesse, usare il comando Modifica | Elimina o il tasto CANC. A questo punto verrà chiesta conferma.
3.4 L’uso di una query.
Per usare una query è sufficiente selezionare la voce Query, selezionare la query di interesse, usare il bottone Apri. A questo punto si accede alla finestra che consente di visualizzare e manipolare (se il recordset è aggiornabile) i dati della query.
La struttura della finestra, le modalità operative e le operazioni eseguibili (tipicamente tramite comandi di menù) sono praticamente identiche a quelle descritte per le operazioni su tabelle al paragrafo 1.3.
4. LE QUERY SQL.
E’ possibile visualizzare, scrivere e modificare le query usando il linguaggio SQL. Una volta creata/modificata una query SQL può venire utilizzata e cancellata esattamente come una query normale (vedi paragrafi 3.3 e 3.4).
4.1 La visualizzazione di una query qualsiasi in modalità SQL.
Per visualizzare (e poi eventualmente modificare) una query qualsiasi in modalità SQL occorre:
- Selezionare la voce Query e poi selezionare una query.
- Premere il bottone Struttura.
- Selezionare il comando Visualizza | Visualizzazione SQL.
4.2 La creazione di una query SQL.
Per creare (e “manipolare”) una query SQL occorre:
- Selezionare la voce Query.
- Selezionare il bottone Nuovo e quindi selezionare Visualizzazione Struttura nella successiva finestra di dialogo.
- Compare la finestra query di selezione ed in primo piano una finestra di dialogo dalla quale selezionare le tabelle/query su cui costruire la nuova query. Usare il bottone Chiudi senza selezionare nulla per passare alla costruzione effettiva della query SQL.
- Selezionare il comando Visualizza | Visualizzazione SQL.
- Si accede quindi alla finestra di creazione/modifica delle query SQL dalla quale è possibile creare/aggiornare query SQL come descritto sotto.
La finestra di creazione/modifica delle query SQL agisce come un editor di testo che consente di scrivere query in linguaggio SQL. Si possono costruire/modificare (scrivendo/modificando il testo) query SQL di diverso tipo per la cui sintassi dettagliata si rimanda alla documentazione in linea. Seguono le principali tipologie descritte con l’aiuto di esempi.
4.2.1 Query di selezione (SQL: SELECT).
E’ il tipo più comune di query SQL e consente di costruire query (viste) che a seconda dei casi possono risultare (in dipendenza del tipo di struttura creata) modificabili o solo visualizzabili (provare ad agire sulla query risultante per vedere se è possibile fare modifiche/inserimenti oppure no). Le query SQL possono essere arbitrariamente complesse usando tutte le clausole che si ritiene necessario (FROM, WHERE, GROUP BY, HAVING, ORDER BY). Eccone alcuni esempi:
1- Per selezionare l’anagrafica dei correntisti che hanno almeno una operazione con importo maggiore o uguale di tutte le altre operazioni (ossia con importo massimo):
SELECT ANAGRAFICA FROM FLCORRE WHERE NRCC IN
(SELECT NRCC FROM FLOPE WHERE IMPO>= ALL
(SELECT IMPO FROM FLOPE));
2- Per selezionare l’anagrafica dei correntisti che hanno almeno una operazione con importo minimo:
SELECT ANAGRAFICA FROM FLCORRE WHERE NRCC IN
(SELECT NRCC FROM FLOPE WHERE IMPO =
(SELECT MIN(IMPO) FROM FLOPE));
3- Per selezionare i dati (numero C/C, data e importo) delle operazioni di importo massimo per ciascun correntista:
SELECT NRCC, DATAOP, IMPO FROM FLOPE AS OUTFLOPE WHERE OUTFLOPE.IMPO >= ALL
(SELECT IMPO FROM FLOPE INFLOPE WHERE INFLOPE.NRCC=OUTFLOPE.NRCC);
4- Per eseguire il join tra correntisti e relative operazioni:
SELECT * FROM FLCORRE, FLOPE WHERE FLCORRE.NRCC=FLOPE.NRCC;
4.2.2 Query di inserimento (SQL: INSERT).
Consente di inserire record in una tabella/query direttamente come nel seguente esempio (in cui si inseriscono dati in un archivio anagrafico di correntisti):
INSERT INTO FLCORRE ( NRCC, ANAGRAFICA, INDIRIZZO )
SELECT 777, "Pinco Pallino", "Via Roma, 93 - Verbania";
E’ possibile anche inserire dati in una tabella/query prendendoli da altre tabelle/query con una operazione di SELECT come mostrato nel seguente esempio (in cui si caricano alcuni dati di un archivio di risposte ad un questionario distinte per gruppi a partire dai dati di una query SQL che fa il join tra diversi archivi tra cui quello contenente i testi delle risposte e quello contenente i gruppi):
INSERT INTO Risposte ( N_QUEST, N_DOM, N_RISP, COD_GRUPPO )
SELECT Testo_Risposte.N_QUEST, Testo_Risposte.N_DOM,
Testo_Risposte.N_RISP, Gruppi.COD_GRUPPO
FROM [Permutazione Risposte];
Query “Permutazione Risposte”:
SELECT DISTINCTROW Questionari.*, Testo_Domande.*, Testo_Risposte.*, Gruppi.*
FROM Questionari, Testo_Domande, Testo_Risposte, Gruppi
WHERE (Questionari.N_QUEST=Testo_Domande.N_QUEST) AND
(Testo_Domande.N_QUEST=Testo_Risposte.N_QUEST) AND
(Testo_Domande.N_DOM=Testo_Risposte.N_DOM)
ORDER BY Testo_Risposte.N_QUEST, Testo_Risposte.N_DOM, Testo_Risposte.N_RISP,
Gruppi.COD_GRUPPO;
4.2.3 Query di modifica (SQL: UPDATE).
Consente di modificare dati in una tabella/query cambiando i valori dei campi di una o più righe (che soddisfano a certe condizioni). Come esempio mostriamo la modifica dei valori di alcuni dati di un correntista individuato dal codice:
UPDATE FLCORRE
SET DATAAPERTURA = "10/09/96", SSALDO = "A", SALDO = 2000000
WHERE NRCC=777;
4.2.4 Query di cancellazione (SQL: DELETE).
Consente di cancellare righe (record) in una tabella/query (che soddisfano a certe condizioni). Come esempio mostriamo la cancellazione di un correntista individuato dal codice:
DELETE * FROM FLCORRE
WHERE NRCC=777;
4.2.5 Query di creazione tabelle (SQL: CREATE TABLE).
Consente di creare una tabella specificando i campi, e per ogni campo le informazioni relative (tipo, lunghezza, ...). Come esempio mostriamo la creazione di una tabella di appoggio con un campo di tipo carattere (a lunghezza 10) ed un campo numerico intero (lungo):
CREATE TABLE FLTMP (CARATTERE STRING (10), VALORE LONG);
4.3 La modifica di una query SQL.
Per modificare una query in modalità SQL occorre:
- Selezionare la voce Query e poi selezionare una query.
- Premere il bottone Struttura.
- Selezionare il comando Visualizza | Visualizzazione SQL.
- Si accede quindi alla finestra di creazione/modifica delle query SQL dalla quale è possibile aggiornare la query come descritto al paragrafo 4.2.
5. LE MASCHERE.
Una maschera è una interfaccia personalizzata o personalizzabile per accedere al database ed alle sue funzionalità. In particolare ogni maschera consente di accedere ad una o più tabelle o query.
NB Al fine del discorso sulle maschere può essere utile sapere che è possibile definire relazioni anche includendo query e non solo tabelle.
5.1 Costruzione di maschere semplici (su una sola tabella/query).
Per costruire una maschera relativa ad una sola tabella/query si può procedere come segue:
- Selezionare la voce Maschere.
- Selezionare il bottone Nuovo.
- Selezionare Creazione guidata Maschera nella successiva finestra di dialogo; selezionare la tabella/query di riferimento; confermare con Ok.
- Nella successiva finestra di dialogo selezionare i campi da inserire nella maschera (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo indicare il layout scelto per la maschera tra quelli proposti: a colonne (viene mostrato un solo record per pagina); tabulare (vengono mostrate le varie righe della tabella/query in forma tabulare); foglio dati (simile alla modalità precedente ma con uno schema di tipo foglio elettronico); giustificato;ecc.. Selezionare Avanti.
- Nella successiva finestra di dialogo scegliere lo stile di visualizzazione tra quelli proposti: standard, tessuto, spedizione, ecc.. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) alla maschera e selezionare il radio button “Modifica la struttura della maschera” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione/modifica delle maschere. Selezionare Fine.
Nella finestra di creazione/modifica delle maschere si possono eseguire varie operazioni, tra cui le seguenti:
- Selezionare un oggetto della maschera. Sono possibili, con le usuali modalità (uso del tasto SHIFT durante la selezione), selezioni e quindi poi manipolazioni di più oggetti.
- Trascinare gli oggetti o i relativi marker per spostare/ridimensionare gli oggetti. Lo spostamento si ottiene con il marker in alto a sinistra.
- Eseguire operazioni tipo taglia/copia/incolla con il menù Modifica.
- Visualizzare le proprietà dello/degli oggetto/i selezionato/i ed eventualmente modificarle attraverso una finestra a linguette (comando Visualizza | Proprietà). La possibilità di accedere alle proprietà di un oggetto sarà fondamentale per la programmazione in VBA (vedi sotto). Le proprietà sono differenti da oggetto ad oggetto e sono molto numerose: quando si vuole modificare qualche caratteristica di un oggetto conviene provare a controllare se c’è qualche proprietà che si riferisce a quella caratteristica in modo da poterla modificare. Una proprietà interessante dell’oggetto maschera nel suo complesso è la proprietà Tipo recordset (linguetta Dati): se si sceglie dynaset si potranno (in generale) eseguire modifiche, mentre se si sceglie snapshot si potranno solo visualizzare i dati.
- Visualizzare l’elenco dei campi (comando Visualizza | Elenco Campi) per aggiungere altri elementi (dalle tabella/query selezionate all’inizio) alla maschera con una operazione di trascinamento.
- Inserire oggetti nella maschera (ad esempio immagini con il comando Inserisci | Immagine; l’immagine può poi essere portata in primo o secondo piano, come ogni altro oggetto, con i comandi Formato | Porta in primo piano o Formato | Porta in secondo piano).
5.2 Costruzione di maschere su più tabelle/query.
Per costruire una maschera relativa a più tabelle/query si può procedere come segue:
- Selezionare la linguetta Maschere.
- Selezionare il bottone Nuovo.
- Selezionare Creazione guidata Maschera nella successiva finestra di dialogo; confermare con Ok.
- Nella successiva finestra di dialogo selezionare le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nella maschera (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo selezionare la modalità di visualizzazione e poi selezionare Avanti. Occorre in pratica selezionare:
- Il criterio di priorità: scegliere, in ordine, le tabelle/query che guidano la visualizzazione.
- Il tipo di visualizzazione a maschera: le voci tra cui scegliere dipendono dalla scelta precedente ma tipicamente si possono avere le seguenti:
- Maschera singola: in tal caso tutti i campi vengono piazzati su di un’unica maschera: questa voce non è molto comune per più tabelle/query ma potrebbe talvolta essere quella desiderata.
- Maschera con sottomaschere: in tal caso la struttura delle relazioni tra le tabelle determina come andranno disposti i dati all’interno di due (o più) livelli: i dati della maschera principale ed i dati della sottomaschera che saranno quelli correlati a quelli della maschera principale.
- Maschere collegate: in tal caso la struttura delle relazioni tra le tabelle determina come andranno disposti i dati all’interno di due (o più) livelli: i dati della maschera principale ed i dati della maschera collegata, richiamata tramite un bottone, che saranno quelli correlati a quelli della maschera principale.
Ogni scelta nella finestra di dialogo viene rappresentata con un esempio che mostra la struttura che verrà generata.
- Nella successiva finestra di dialogo (se viene proposta) indicare il layout scelto per la maschera tra quelli proposti, tipicamente: a colonne (viene mostrato un solo record per pagina); tabulare (vengono mostrate le varie righe della tabella/query in forma tabulare); foglio dati (simile alla modalità precedente ma con uno schema del tipo foglio elettronico). Selezionare Avanti.
- Nella successiva finestra di dialogo scegliere lo stile di visualizzazione tra quelli proposti: standard, tessuto, spedizione, ecc.. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) per le maschere e sottomaschere (che possibilmente non contengano spazi) e selezionare il radio button “Modifica la struttura della maschera” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica delle maschere. Selezionare Fine.
A questo punto si può modificare la maschera (principale), come già descritto nel precedente paragrafo 5.1, all’interno della finestra di creazione/modifica delle maschere. Per modificare una sottomaschera è sufficiente selezionarla nella finestra (voce) Maschere, premere il bottone Struttura, ed accedere così alla finestra di creazione /modifica delle maschere per le modifiche (vedi paragrafo 5.1).
5.3 Modifica e cancellazione di maschere e sottomaschere.
Per modificare una maschera o una sottomaschera è sufficiente selezionarla nella finestra (voce) Maschere, premere il bottone Struttura, ed accedere così alla finestra di creazione / modifica delle maschere per le modifiche (vedi paragrafo 5.1).
Per cancellare una maschera o una sottomaschera è sufficiente selezionarla nella finestra (voce) Maschere e premere il bottone CANC. Verrà chiesta conferma.
5.4 Utilizzo di maschere.
Le maschere forniscono una interfaccia personalizzabile che consente di visualizzare, modificare (se permesso - vedi paragrafo 3.4 sulle query) ed in generale di manipolare i dati di tabelle e query.
NB Per creare maschere su cui siano eseguibili inserimenti potrebbero essere richieste una serie di condizioni tra cui quella di includere il campo chiave del lato “molti” di una relazione uno-a-molti.
Per operare con una maschera occorre:
- Selezionare la voce Maschere del database corrente.
- Selezionare una maschera dall’elenco delle maschere.
- Fare click sul bottone Apri per accedere alla maschera che consente, in maniera del tutto intuitiva, la visualizzazione e la manipolazione dei dati.
All’interno della maschera sono disponibili (se non sono stati disabilitati) i controlli per passare alla prima, alla successiva, alla precedente, all’ultima, ad una specificata riga della tabella/query corrente. E’ pure possibile passare alla riga successiva all’ultima per nuovi inserimenti (se permessi). Esistono inoltre i pulsanti per selezionare direttamente le righe (record).
In più è possibile eseguire un numero enorme di altre operazioni sui dati della maschera: queste operazioni si ottengono tramite menù e sono le stesse che sono state descritte (almeno per quanto riguarda le più interessanti) nel paragrafo 1.3 relativo al caricamento/modifica di tabelle. Si osservi però che, per quanto riguarda le operazioni di filtro e ordinamento, alcune volte potrebbe essere necessario impostare e modificare (quindi applicare) i filtri/ordinamenti a livello di sottomaschere e maschere collegate affinché essi poi possano essere usati ed agiscano anche sulle maschere principali. Altre volte, per evitare problemi si potrebbero creare i filtri all’interno di opportune Query (vedi sotto).
5.5 Considerazioni su alcuni aspetti emersi durante le prove.
L’utilizzo pratico delle maschere ha messo in evidenza i seguenti punti che costituiscono un elenco di: strumenti da usare, regole che è meglio seguire, problemi emersi:
- I Filtri/Ordinamenti (che non sono definiti all’interno di query) vanno di solito applicati ogni volta che si rientra sull’oggetto a cui sono riferiti.
- E’ stato verificato che quando si costruiscano maschere con sottomaschere a tre livelli, si verifica, in certe condizioni, un “baco” che termina l’applicativo Access. Si consiglia quindi di procedere con cautela e possibilmente di evitare maschere con sottomaschere a 3 livelli magari ricorrendo a maschere collegate a tre livelli che non hanno problemi (salvo forse la necessità di definire filtri passando attraverso opportune query di appoggio – vedi sotto).
- E’ stata scoperta una correlazione tra il “baco” di cui sopra (relativo a maschere con sottomaschere a tre livelli) e l’uso dei filtri/ordinamenti nelle maschere: eliminando tutti i filtri/ordinamenti il problema pare scomparire totalmente anche se possono permanere problemi di efficienza. Se si presentano comunque problemi (usando o non usando ordinamenti e filtri) si consiglia di usare maschere collegate a tre livelli o un altro espediente (anziché usare le sottomaschere a tre livelli).
- Per eliminare gli impedimenti precedenti (problemi di efficienza o di bachi) si può creare un “duplicato” query delle tabelle necessarie (eventualmente con filtri/ordinamenti) e quindi si può basare la Maschera su queste query invece che sui dati originari così risolvendo il problema di efficienza e della necessità di filtri/ordinamenti.
- E’ possibile inserire una sottomaschera in una maschera usando la Toolbox (vedi sotto). Una volta inserita una sottomaschera ed assegnata ad essa una maschera (voce Oggetto origine delle proprietà) è possibile vederne e modificarne le proprietà selezionando con il pulsante destro del mouse l’area della sottomaschera individuata dal righello.
- In fase di modifica di una maschera è possibile fare uso delle proprietà Collega Campi Secondari e Collega Campi Master (linguetta Dati) di un oggetto sottomaschera. Questo serve per correlare i record di una sottomaschera, in base ad uno o più campi della sottomaschera stessa (campi secondari), con il record attuale della maschera principale, in base ad uno o più campi della stessa (campi master). Se i campi sono più di uno vanno separati da punto e virgola.
- Con lo stesso principio del punto precedente è possibile correlare i record di una sottomaschera con quelli di un’altra sottomaschera entrambe “figlie” della stessa maschera principale. In tal caso nei campi master della maschera di terzo livello occorrerà usare la sintassi [nome sottomaschera di secondo livello]![Nome campo]. Così operando potrebbe però succedere che la sottomaschera di terzo livello mostri sempre i record correlati alla prima riga della maschera di secondo livello. Per ovviare a questo problema è possibile agire come segue: attraverso la Toolbox (vedi sotto) inserire una casella di testo nella maschera principale; richiamarne le proprietà e impostare la proprietà Visibile a No e la proprietà Origine controllo a “=[nome sottomaschera di secondo livello]![Nome campo]”; impostare infine nei campi master della maschera di terzo livello il nome della casella di testo al posto dell’espressione suggerita in precedenza.
- E’ possibile, in fase di modifica di una maschera (principale), includere una o più altre maschere come sottomaschere. Questo si ottiene disponendo in maniera opportuna le diverse finestre e trascinando la maschera che dovrà diventare sottomaschera dalla finestra “Maschere” all’opportuna area all’interno della finestra di creazione/modifica della maschera principale. Se si inseriscono due sottomaschere (da correlare tra loro e con la maschera principale) occorre lavorare come indicato al punto precedente affinché ci sia coerenza tra i dati presenti nella maschera principale e nelle sottomaschere.
- E’ stato osservato che può essere utile modificare il tipo di maschera all’interno della finestra di creazione/modifica delle maschere con la seguente procedura: si fa in modo che non sia selezionato nessun oggetto della maschera (perché sia selezionata la maschera nel suo complesso); si da il comando Visualizza | Proprietà; si controlla/modifica la proprietà Formato | Visualizzazione predefinita (maschere continue = rappresentazione tabulare; foglio dati; maschera singola).
- Se si verificano problemi durante l’uso di un database, si consiglia di procedere ad una compattazione del database medesimo. Per compattare un database: dare il comando Strumenti | Utilità database | Compatta e ripristina database. Può essere conveniente compattare periodicamente il database per eliminare “sprechi” di memoria. E’ anche possibile compattare un database quando non è aperto nessun database richiamando sempre la voce di menù Strumenti | Utilità database | Compatta e ripristina database e seguendo le indicazioni.
- Se i dati non si presentano nell’ordine previsto dal Filtro/Ordina creato in precedenza è sufficiente dare il comando Record | Applica filtro/Ordina.
5.6 Costruzione di maschere contenenti oggetti (bottoni, ...).
Gli oggetti all’interno delle maschere si usano principalmente in concomitanza della programmazione in VBA e per tale ragione rimandiamo più oltre una discussione più approfondita su tali aspetti. In questo paragrafo vogliamo solo mostrare, per linee generali, l’uso degli oggetti più significativi quali elementi per mostrare/manipolare i dati di un database attraverso una maschera.
Per disporre oggetti su di una maschera occorre passare in visualizzazione struttura (si seleziona una maschera e si preme il bottone Struttura oppure si preme il bottone Nuovo e si seleziona visualizzazione struttura nella successiva dialog box) e quindi attivare la ToolBox con il comando Visualizza | Casella degli strumenti. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli (il bottone a destra del puntatore).
Quando si devono modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie Proprietà dal menù Visualizza o dal menù di scelta rapida.
Di seguito, per ogni controllo significativo, vengono date alcune indicazioni su come gestirlo (a livello di proprietà) per le più comuni esigenze. Per esigenze più sofisticate è sufficiente controllare/gestire anche altre proprietà oltre a quelle che elencherò.
Il primo oggetto di cui conviene occuparsi è sicuramente la maschera nel suo complesso. Per selezionare la maschera basta non selezionare alcun oggetto (occorre selezionare una zona al di fuori anche della zona dei “dettagli” per selezionare la maschera nel suo complesso). Nella finestra delle proprietà risultano interessanti i seguenti elementi:
- Origine Record: si può specificare un tabella, una query o una query SQL che descrivono i record (le righe) che verranno visualizzati nei controlli della maschera. Si può scegliere il pulsante a destra (quello con “...”) per generare automaticamente la query per l’origine dei record: l’ambiente richiamato è quello per la costruzione e la modifica di query.
- Visualizzazione Predefinita: si può scegliere il tipo di maschera: maschere continue ossia rappresentazione tabulare; foglio dati; maschera singola. Se necessario è poi possibile visualizzare l’intestazione/piè pagina di maschera o di pagina con i relativi comandi dal menù Visualizza.
Un altro tipo di oggetto interessante è la sezione (corpo, piè pagina maschera, intestazione maschera, ...). Basta selezionare la barra relativa alla sezione desiderata per potere accedere alle sue proprietà (tramite il menù visualizza o il menù di scelta rapida). Le caratteristiche principali sono:
- Visibile: che consente di stabilire se la sezione in questione sarà visibile o meno.
- Colore dello sfondo.
- Aspetto (effetti speciali): piatto, in rilievo, incassato.
L’oggetto di sicuro più interessante è il Text Box (detto anche edit control o casella di testo). Le proprietà più interessanti da gestire (una volta selezionato l’oggetto) sono:
- Nome elemento: il nome dell’oggetto.
- Origine controllo: tipicamente si può scegliere uno dei campi appartenenti al recordset selezionato come origine controllo della maschera (il combo box a destra consente appunto questa selezione). E’ anche possibile costruire espressioni (che tipicamente combinano i valori dei campi appartenenti al recordset della maschera); ad esempio: =Str([NumFatt]) & " del " & Str([DataFatt]). E’ pure possibile costruire espressioni per aggregare (es. sommare) valori (di solito appartenenti al recordset associato alla maschera); ad esempio: =Somma([SommaImpo]); di solito le formule di aggregazione sono poste nella sezione di piè di pagina della maschera. La costruzione di espressioni può essere facilitata dall’uso del generatore di espressioni (pulsante a destra: “...”). Si noti che le espressioni devono iniziare con il simbolo “=”.
- Formato: stabilisce il formato dell’oggetto (numero generico, standard, fisso, valuta, data generica, ...).
- Abilitato: stabilisce se l’oggetto può diventare l’oggetto corrente di una maschera.
- Bloccato: stabilisce se è possibile modificare i dati contenuti nell’oggetto.
- Visibile: dice se il controllo è o meno visibile.
Per inserire elementi descrittivi conviene usare l’oggetto etichetta (label). Proprietà significative:
- Nome elemento: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà sulla maschera.
- Visibile: dice se il controllo è o meno visibile.
Per raggruppare controlli è possibile usare l’oggetto cornice (group box). Proprietà significative (selezionare il bordo per richiamare le proprietà):
- Nome elemento: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà nell’intestazione della cornice (selezionare l’etichetta per accedere a questa proprietà).
- Visibile: dice se il controllo è o meno visibile.
Un elemento molto comune è il Pulsante di comando (Command Button) che spesso è usato in concomitanza della programmazione in VBA. Qui vogliamo solo analizzare un utilizzo caratteristico che è quello che consente, in autocomposizione, di generare il richiamo di una maschera collegata. Per ottenere ciò:
- Selezionare il pulsante di comando dalla ToolBox;
- Trascinare il controllo sulla maschera per disporlo come si vuole;
- Compare la prima finestra di dialogo: scegliere Operazioni su maschere (nella lista categorie) e Apri Maschera (nella lista azioni);
- Nella successiva dialog box selezionare la maschera da aprire dalla list box;
- Nella successiva dialog box selezionare Apri la maschera e trova dati specifici da visualizzare;
- Nella successiva dialog selezionare (in maniera intuitiva) i campi delle due maschere da correlare: quando si apre la maschera premendo il bottone, in tale maschera verranno mostrati solo i record (o il record) correlati;
- Nella successiva dialog selezionare un testo o un immagine per il bottone;
- Nella maschera successiva selezionare un nome per il pulsante di comando e selezionare Fine.
In ogni caso è possibile accedere alle proprietà del bottone di comando di cui le più significative sono le seguenti:
- Visibile: dice se il controllo è o meno visibile.
- Nome elemento: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà sul pulsante di comando.
Un altro oggetto è la casella combinata (ComboBox). Qui vogliamo analizzare un utilizzo caratteristico che è quello che consente, in autocomposizione, di generare una casella combinata per la ricerca di record attraverso l’elenco a discesa. Questo è possibile solo in alcuni contesti dove la macchina è in grado di reperire i dati della maschera a partire dal valore selezionato nella casella combinata (tipicamente in presenza di sole tabelle). Per ottenere ciò:
- Selezionare la casella combinata dalla ToolBox;
- Trascinare il controllo sulla maschera per disporlo come si vuole;
- Compare la prima finestra di dialogo: scegliere Trova un record nella maschera ...;
- Nella successiva dialog box selezionare il campo di ricerca che entrerà a far parte dei dati della casella combinata (in realtà è possibile scegliere più di un campo);
- Nella successiva dialog regolare le dimensioni della/e colonna/e di dati e decidere (se presente) se lasciare o meno barrato il check box per la presenza/assenza del campo chiave;
- Se si sono scelti più campi potrebbero comparire altre finestre di dialogo:
- Nella prima scegliere un campo (di solito il campo chiave)
- Nella seconda scegliere memorizza il valore temporaneamente ...;
- Nella maschera successiva selezionare un nome per la casella combinata e selezionare Fine.
Durante l’utilizzo della casella combinata precedentemente costruita potrà essere utile usare il comando Record | Aggiorna per aggiornare il contenuto della casella combinata stessa se si sono effettuati aggiornamenti al recordset sottostante.
Un altro utilizzo caratteristico della la casella combinata (ComboBox) che è quello che consente, in autocomposizione, di generare una casella combinata per la assegnazione di un valore ad un campo della maschera prelevandolo dall’elenco a discesa. Per ottenere ciò:
- Selezionare la casella combinata dalla ToolBox;
- Trascinare il controllo sulla maschera per disporlo come si vuole;
- Compare la prima finestra di dialogo: scegliere Ricerca valori in una tabella o query da parte …;
- Nella successiva dialog box selezionare la tabella/query da cui prelevare i dati;
- Nella successiva dialog box selezionare il/i campo/i che entreranno a far parte dei dati della casella combinata;
- Nella successiva dialog specificare eventualmente l’ordine dei dati nella casella combinata;
- Nella successiva dialog regolare le dimensioni della/e colonna/e di dati e decidere (se presente) se lasciare o meno barrato il check box per la presenza/assenza del campo chiave;
- Nella successiva dialog (che può non comparire) selezionare il campo della tabella/query da associare al campo della maschera attuale;
- Nella successiva dialog selezionare memorizza il valore permanentemente in questo campo e selezionare il campo (della maschera) in cui inserire il valore;
- Nella maschera successiva selezionare un nome per la casella combinata e selezionare Fine.
In ogni caso è possibile accedere alle proprietà della Casella Combinata di cui le più significative sono le seguenti:
- Nome elemento: il nome dell’oggetto.
- Origine controllo: consente di stabilire da dove attingere o dove mettere il valore selezionato nella casella combinata: di solito si tratta del valore di un campo del recordset associato alla maschera corrente. Non conviene impostare tale proprietà nel caso di uso di una casella combinata per la ricerca (vedi sopra).
- Tipo origine Riga: che di solito è tabella/query se i dati dell’elenco devono arrivare da una tabella/query.
- Origine Riga: contiene l’indicazione della tabella/query o più spesso della query SQL per selezionare i valori che finiranno nella lista della casella combinata.
- Visibile: dice se il controllo è o meno visibile.
- Abilitato: stabilisce se l’oggetto può diventare l’oggetto corrente di una maschera.
- Bloccato: stabilisce se è possibile modificare i dati contenuti nell’oggetto.
- Colonna Associata: stabilisce quale è il numero della colonna da cui prelevare il valore da associare al campo Origine Controllo.
Discorso analogo alle Caselle Combinate si fa per l’oggetto Casella di riepilogo (list box).
6. I REPORT (LE STAMPE).
Un report rappresenta uno stampato (di solito nella forma di un tabulato più o meno elaborato) che consente di evidenziare i dati del database selezionati e raggruppati in maniera opportuna.
6.1 Costruzione di report semplici (su una sola tabella/query).
Per costruire un report relativo ad una sola tabella/query si può procedere come segue:
- Selezionare la voce Report.
- Selezionare il bottone Nuovo.
- Selezionare Creazione guidata Report nella successiva finestra di dialogo; selezionare la tabella/query di riferimento; confermare con Ok.
- Nella successiva finestra di dialogo selezionare i campi da inserire nel report (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo viene chiesto se si desidera aggiungere livelli di gruppo: per un tabulato semplice non selezionare nulla ma premere il bottone Avanti.
- Nella successiva finestra di dialogo si può scegliere il criterio di ordinamento in base ad un massimo di 4 campi (in ordine crescente o decrescente); selezionare gli ordinamenti. Selezionare Avanti.
- Nella successiva finestra di dialogo occorre selezionare il layout di stampa: tabulare, verticale (i campi vengono mostrati in verticale e viene posta una separazione tra ogni record ed il successivo) o giustificato; foglio orizzontale o verticale. Selezionare Avanti.
- Nella successiva finestra di dialogo scegliere lo stile di stampa tra quelli proposti: Formale, Generico, Società, ecc.. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) al report e selezionare il radio button “Modifica la struttura del report” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica dei report. Selezionare Fine.
Nella finestra di creazione/modifica del report si possono eseguire varie operazioni, tra cui le seguenti:
- Selezionare un oggetto del report. Sono possibili, con le usuali modalità (uso del tasto SHIFT durante la selezione), selezioni e quindi poi manipolazioni di più oggetti.
- Trascinare gli oggetti o i relativi marker per spostare/ridimensionare gli oggetti. Il trascinamento si ottiene con il marker in alto a sinistra.
- Eseguire operazioni tipo taglia/copia/incolla con il menù Modifica.
- Visualizzare le proprietà dello/degli oggetto/i selezionato/i ed eventualmente modificarle attraverso una finestra a linguette (comando Visualizza | Proprietà). La possibilità di accedere alle proprietà di un oggetto sarà fondamentale per la programmazione in VBA (vedi sotto). Le proprietà sono differenti da oggetto ad oggetto e sono molto numerose: quando si vuole modificare qualche caratteristica di un oggetto conviene provare a controllare se c’è qualche proprietà che si riferisce a quella caratteristica in modo da poterla modificare.
- Visualizzare l’elenco dei campi (comando Visualizza | Elenco campi) per aggiungere altri elementi (dalle tabelle/query selezionate all’inizio) al report con una operazione di trascinamento.
- Inserire oggetti nel report (ad esempio immagini con il comando Inserisci | Immagine; l’immagine può poi essere portata in primo o secondo piano, come ogni altro oggetto, con i comandi Formato | Porta in primo piano o Formato | Porta in secondo piano).
6.2 Costruzione di report su più tabelle/query (o comunque con raggruppamenti).
Per costruire un report relativo a più tabelle/query si può procedere come segue:
- Selezionare la voce Report.
- Selezionare il bottone Nuovo.
- Selezionare Creazione guidata Report nella successiva finestra di dialogo; confermare con Ok senza selezionare la tabella/query.
- Nella successiva finestra di dialogo selezionare le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nel report (non è necessario selezionarli tutti). Selezionare Avanti.
- Nella successiva finestra di dialogo (che può anche non comparire) selezionare il criterio di priorità: visualizzazione in base a ... (scegliere la tabella/query che guida la visualizzazione): il resto della struttura del report è guidato dalla struttura delle relazioni tra le tabelle/query. Ogni scelta nella finestra di dialogo viene rappresentata con un esempio che mostra la struttura che verrà generata.
- Nella finestra di dialogo successiva viene richiesto se si vogliono aggiungere livelli di gruppo (cioè raggruppamenti). Per scegliere un nuovo raggruppamento è sufficiente fornire il campo in base a cui eseguire il raggruppamento. E’ poi possibile cambiare la priorità di raggruppamento manovrando sulle frecce apposite. E’ altresì possibile cambiare la modalità di raggruppamento all’interno della relativa finestra di dialogo (richiamata con il bottone Opzioni raggruppamento): conviene di solito lasciare la modalità di raggruppamento normale (i record si raggruppano a parità di valore del campo selezionato). Premere il bottone Avanti.
- Nella successiva finestra di dialogo si può scegliere il criterio di ordinamento in base ad un massimo di 4 campi (in ordine crescente o decrescente). Nella stessa finestra di dialogo è presente il bottone Opzioni di riepilogo che consente di accedere ad una finestra di dialogo nella quale vengono richiesti, per i campi numerici, se si vogliono riepiloghi (rispettivamente somma, media, minimo, massimo) e se si vuole solo il riepilogo o anche il dettaglio; è pure possibile specificare se si vuole ottenere la percentuale delle somme di dettaglio sul totale. Uscire dalle opzioni di riepilogo e selezionare Avanti.
- Nella successiva finestra di dialogo occorre selezionare il layout di stampa: con rientri, a blocchi, bordato 1, bordato 2, allineato a sinistra 1, allineato a sinistra 2; foglio orizzontale o verticale. A sinistra si ha sempre una immagine di come verrà prodotto l’output. Selezionare Avanti.
- Nella successiva finestra di dialogo scegliere lo stile di stampa tra quelli proposti: Società, Formale, Generico, ecc.. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) al report e selezionare il radio button “Modifica la struttura del report” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica dei report. Selezionare Fine.
A questo punto si può modificare il report, come già descritto nel precedente paragrafo 6.1, all’interno della finestra di creazione/modifica dei report.
6.3 Modifica e cancellazione di report.
Per modificare un report è sufficiente selezionarlo nella finestra Report, premere il bottone Struttura, ed accedere così alla finestra di creazione /modifica dei report per le modifiche (vedi paragrafo 6.1).
Per cancellare un report è sufficiente selezionarlo nella finestra Report e premere il bottone CANC. Verrà chiesta conferma.
6.4 Utilizzo dei report.
Per operare con un report occorre:
- Selezionare la voce Report del database corrente.
- Selezionare un report dall’elenco.
- Fare click sul bottone Anteprima per accedere all’anteprima del report selezionato che consente, in maniera del tutto intuitiva, la visualizzazione del report stesso sullo schermo.
- Oppure è possibile dare il comando File | Stampa per stampare il report correntemente selezionato.
E’ stato osservato che quando si aprono alcuni report generati con la Creazione guidata si possono verificare alcuni problemi dovuti ad una cattiva composizione del report da parte di Access (“baco”). E’ usualmente possibile sistemare questi problemi entrando in modifica sul report e cambiando gli elementi scorretti. A titolo di esempio indichiamo di seguito due problemi emersi e le loro soluzioni:
- Si verifica un problema sulle intestazioni dei raggruppamenti (messaggio di richiesta parametro all’atto dell’apertura). Per risolvere tale problema è sufficiente entrare in modalità modifica e dare il comando Visualizza | Ordinamento e raggruppamento, quindi scegliere nella colonna Campo o espressione il valore opportuno (dall’elenco a discesa) in modo da sostituire il valore sballato. Può essere sufficiente, per correggere il valore, aggiungere le parentesi quadre attorno ai nomi di campo nelle espressioni. E’ possibile, inoltre, anche fare altre operazioni di adattamento nella finestra Ordinamento e raggruppamento.
- Nel piè pagina di alcuni raggruppamenti non viene inserita correttamente l’espressione per il conteggio degli elementi (come risultato si vedono messaggi di errore nel report). Per risolvere questo problema è sufficiente entrare in modalità modifica, cercare una espressione analoga a quella errata ma funzionante (nell’esempio provato con un raggruppamento a tre livelli una tale espressione funzionante si trova), entrare nelle proprietà e copiare la formula dell’Origine controllo per poi incollarla nelle proprietà (Origine controllo) dell’elemento errato e quindi riadattarla alla nuova situazione. Se non si trova una espressione analoga a quella scorretta (ma che sia funzionante) si ricordi che l’errore avviene di solito su una espressione di “Conteggio(*)” che può essere costruita ex-novo usando le funzioni opportune all’interno della proprietà Origine controllo dell’elemento errato (esempio di espressione da costruire: ="Riepilogo per Codice=" & [Codice] & " (" & Conteggio(*) & " record di dettaglio)").
6.5 Costruzione di report contenenti oggetti (Text Box, separazione di pagine, ...).
Gli oggetti all’interno dei report si usano principalmente per creare ulteriori elementi di stampa. In questo paragrafo vogliamo solo mostrare, per linee generali, l’uso degli oggetti più significativi quali elementi per stampare i dati di un database.
Per disporre oggetti su di un report occorre passare in visualizzazione struttura (si seleziona un report e si preme il bottone Struttura) e quindi attivare la ToolBox con il comando Visualizza | Casella degli strumenti. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli.
Quando si devono modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie Proprietà dal menù Visualizza o dal menù di scelta rapida.
Un report avrà in generale un corpo (che rappresenta la parte più “interna” del report) “incapsulato” in una serie di coppie intestazione/piè di sezione (o raggruppamenti). In più in un report ci sono di solito intestazioni e piè di pagina (di pagina e report). Tenendo conto di questo fatto, di seguito, per ogni controllo significativo, vengono date alcune indicazioni su come gestirlo (a livello di proprietà) per le più comuni esigenze. Per esigenze più sofisticate è sufficiente controllare/gestire anche altre proprietà oltre a quelle che elencherò.
NB All’interno della finestra di creazione/modifica del report è possibile visualizzare/modificare i raggruppamenti e gli ordinamenti richiamando la finestra relativa con il comando Visualizza | Ordinamento e Raggruppamento. All’interno di questa finestra è anche possibile fare comparire e scomparire le intestazioni ed i piè pagina dei vari raggruppamenti.
Il primo oggetto di cui conviene occuparsi è sicuramente il report nel suo complesso. Per selezionare il report basta non selezionare alcun oggetto. Nella finestra delle proprietà risultano interessanti i seguenti elementi:
- Origine Record: si può specificare un tabella, una query o una query SQL che descrivono i record (le righe) che verranno visualizzati nei controlli del report. Si può scegliere il pulsante a destra (quello con “...”) per generare automaticamente la query per l’origine dei record: l’ambiente richiamato è quello per la costruzione e la modifica di query. Estendendo la query SQL che definisce l’origine dei record con la clausola WHERE è possibile porre delle condizioni di “filtro” sui record che andranno a far parte del report (es. ... WHERE [Fatture].[NumFatt] = [RigheFatt].[NumRiga]).
- Filtro e Applica Filtro: Con la prima proprietà si può specificare un filtro per i record che andranno a far parte del report (es. [NumFatt] = [NumRiga]). In tal caso la seconda proprietà deve essere impostata a si.
- Intestazione (pagina) e Piè pagina (pagina): Queste due proprietà consentono di specificare se e quando non stampare le eventuali intestazioni di pagina e piè pagina rispettivamente.
Un altro tipo di oggetto interessante è la sezione (corpo, piè pagina, intestazione, ...). Basta selezionare la barra relativa alla sezione desiderata per potere accedere alle sue proprietà (tramite il menù visualizza o il menù di scelta rapida). Le caratteristiche principali sono:
- Interruzione Pagina: che consente di stabilire se piazzare interruzioni di pagina prima e/o dopo la sezione corrente del report.
- Stampa sezione unita: consente (se impostata a si) di fare in modo che una sezione non venga spezzata su due pagine diverse.
- Visibile: che consente di stabilire se la sezione in questione sarà visibile o meno.
- Aspetto (effetti speciali): piatto, in rilievo, incassato.
L’oggetto di sicuro più interessante è il Text Box (detto anche edit control o casella di testo). Le proprietà più interessanti da gestire (una volta selezionato l’oggetto) sono:
- Nome elemento: il nome dell’oggetto.
- Origine controllo: tipicamente si può scegliere uno dei campi appartenenti al recordset selezionato come origine controllo del report (il combo box a destra consente appunto questa selezione). E’ anche possibile costruire espressioni (che tipicamente combinano i valori dei campi appartenenti al recordset del report); ad esempio: =Str([NumFatt]) & " del " & Str([DataFatt]). E’ pure possibile costruire espressioni per aggregare (es. sommare) valori (di solito nella sezione di piè di pagina o intestazione di un raggruppamento, della pagina o del report); ad esempio: =Somma([PrezzoUn]*[Quantità]) oppure: =conteggio(*). La costruzione di espressioni può essere facilitata dall’uso del generatore di espressioni (pulsante a destra: “...”). Si noti che le espressioni devono iniziare con il simbolo “=”. Sono particolarmente interessanti, nella finestra del generatore di espressioni, le funzioni “Built-In” appartenenti alla categoria delle “funzioni di aggregazione SQL”.
- Formato: stabilisce il formato dell’oggetto (numero generico, standard, fisso, valuta, data generica, ...).
- Visibile: dice se il controllo è o meno visibile.
Per inserire elementi descrittivi conviene usare l’oggetto etichetta (label). Proprietà significative:
- Nome elemento: il nome dell’oggetto.
- Etichetta: una stringa descrittiva che comparirà sul report.
6.6 Costruzione di report a più colonne - cenni.
Vediamo attraverso un esempio come costruire report a più colonne, cioè report che possono disporre i dati anche in colonna oltre che per righe successive. Il caso tipico è quello che consente di riservare una colonna per ogni nuovo raggruppamento: nelle righe sottostanti ogni colonna (che rappresenta il gruppo) ci saranno gli elementi di dettaglio di quel raggruppamento.
Per costruire un report a più colonne si può procedere come segue:
- Costruire un report normale (che abbia almeno un raggruppamento) con le procedure viste in precedenza.
- Entrare nella finestra di creazione/modifica dei report.
- Dare il comando File | Imposta Pagina. Selezionare la linguetta Colonne.
- Nel campo Numero di Colonne selezionare il numero (massimo) di colonne per pagina per il report multicolonna. Nel campo Larghezza impostare la larghezza della colonna (eliminare il check dal box Come Corpo). Scegliere la priorità (di solito Priorità Verticale). Confermare con Ok.
- Selezionare una intestazione/piè pagina di raggruppamento (se non è visibile farla comparire all’interno della finestra di Ordinamento e Raggruppamento - vedi paragrafo precedente). Di solito si sceglie un piè di pagina.
- Fare comparire l’elenco delle proprietà (Visualizza | Proprietà).
- Nella proprietà Nuova Riga o Colonna selezionare un valore opportuno: di solito Dopo sezione (se si è scelto un “oggetto” piè di pagina).
7. LA PROGRAMMAZIONE IN ACCESS - VBA (CENNI).
Di solito il codice viene associato agli eventi che si possono verificare (nel modello previsto da Access) sugli oggetti che solitamente appartengono ad una maschera (più raramente sugli oggetti di un report). Attraverso i seguenti paragrafi vedremo come scrivere il codice e quali particolarità sono da osservare per codificare in VBA rispetto al Visual Basic “normale”.
7.1 Come scrivere il codice.
Il modo più semplice per scrivere/modificare il codice VBA associato agli eventi sugli oggetti è il seguente:
- Aprire la finestra di creazione/modifica di maschere o report (pulsante Struttura associato alle maschere o ai report).
- Selezionare un oggetto (l’intera maschera, un text box, un bottone, l’intestazione di un report, ecc.).
- Richiamare il comando Visualizza | Proprietà (o usare il menù di scelta rapida scegliendo sempre Proprietà).
- Selezionare la “linguetta” Evento. Scorrere e quindi selezionare l’evento di interesse.
- Se non è stato ancora scritto codice per quel dato evento selezionare Routine Evento dal combo box che compare a lato dell’evento.
- Fare click sul bottone con i tre puntini (...) a destra dell’evento per accedere alla finestra di codice per potere scrivere/modificare il codice associato all’evento. All’interno della finestra di codice è possibile muoversi selezionando altri oggetti e/o altri eventi. Si ricordi che è pure possibile selezionare la sezione “generale”.
- Per salvare le modifiche si può usare il comando File | Salva … oppure attendere i messaggi di richiesta di salvataggio che compaiono automaticamente chiudendo la finestra di creazione/modifica della maschera/report.
7.2 La struttura degli oggetti di Access.
Gli oggetti di Access sono strutturati in maniera gerarchica e possono essere acceduti usando la solita notazione “punto” del tipo:
- Oggetto1.Oggetto11.Oggettto111.Metodo oppure
- Oggetto1.Oggetto11.Oggettto111.Proprietà.
In realtà si dovrebbero distinguere, nella gerarchia gli oggetti semplici dalle collezioni (insiemi) di oggetti. Per quanto riguarda le collezioni, nella notazione punto, occorre evidenziare sia il nome della collezione che l’oggetto particolare con una espressione del tipo: Collezione(“Nome_Oggetto”) oppure Collezione!Nome_Oggetto.
Per i nostri scopi sono di interesse l’oggetto principale Application che fa parte degli “oggetti Access” e l’oggetto Database che fa parte degli “Oggetti DAO”.
Per quanto riguarda l’oggetto Application, per i nostri scopi, la sua struttura gerarchica comprende i seguenti elementi:
- La collezione delle Form ossia delle maschere (Forms) che contiene:
- La collezione dei controlli (Controls) che contiene:
- Oggetti sezioni; Oggetti sottomaschere; Oggetti text box; Oggetti bottoni; Oggetti label; Oggetti listbox; ecc., ecc.
- La collezione dei Report (Reports) che contiene:
- La collezione dei controlli (Controls) che contiene:
- Oggetti sezioni; Oggetti label; ecc., ecc.
- L’oggetto DoCmd che consente di impartire comandi ad Access.
Per quanto riguarda l’oggetto Database, per i nostri scopi, la sua struttura gerarchica comprende i seguenti elementi:
- La collezione TableDefs che contiene la descrizione delle tabelle del database.
- La collezione QueryDefs che contiene la descrizione delle query del database.
- La collezione Recordsets che contiene i recordset (Tabelle, query, query SQL,...) sulle quali si può agire con metodi e proprietà. L’unica collezione contenuta in ogni recordset è:
- La collezione Fields dei campi del recordset.
7.3 Caratteristiche relative all’uso dei “controlli” in VBA.
L’uso dei controlli in VBA è in generale governato dalle stesse regole del Visual Basic con, però, alcune notevoli eccezioni che vogliamo in qualche modo evidenziare. In generale, come in Visual Basic, i controlli si “usano” operando sulle loro proprietà e sui loro metodi e rispondendo agli eventi che si generano su di essi.
Per conoscere le proprietà, i metodi e gli eventi associati ad un controllo si può accedere ad una finestra di codice e dare il comando Visualizza | Visualizzatore oggetti; a questo punto occorre scegliere Access o DAO dal combo-box delle librerie ed individuare nell’elenco l’oggetto; sarà quindi disponibile sulla destra l’elenco alfabetico di proprietà, metodi ed eventi dell’oggetto selezionato; basterà scegliere l’oggetto che interessa e accedere alla guida premendo il tasto F1.
Alternativamente, per conoscere le proprietà e gli eventi associati ad un controllo si può accedere alla finestra proprietà associata al controllo in questione e accedere alla guida premendo il tasto F1 mentre si è posizionati su una certa proprietà o proprietà di evento.
Per accedere alla guida sui controlli (e quindi sui loro metodi, proprietà ed eventi) è possibile scorrere l’albero degli oggetti a partire dalla Guida in Linea.
Vediamo ora i tratti distintivi dei principali controlli del VBA (rispetto al Visual Basic). Per ogni controllo verrà fornito, alla fine, un breve elenco delle principali proprietà (e metodi) del controllo stesso; per conoscere i dettagli si interroghi la guida in linea in proposito.
NB Si osservi che, in VBA, può essere inserita l’istruzione Option Explicit che obbliga a definire ogni variabile usata fosse anche solo del tipo Variant.
7.3.1 Le Form (Maschere) ed il Corpo.
Occorre innanzi tutto distinguere (distinzione non presente in Visual Basic) la maschera (Form) nel suo complesso dal corpo (che non comprende eventuali intestazioni/piè pagina). Inoltre la struttura degli eventi in VBA è in qualche misura diversa da quella in Visual Basic: ad esempio, poiché in Access una maschera è in genere associata ad un recordset (tabella, query, ...), esiste l’evento Current (Su Corrente) che “si verifica quando lo stato attivo si sposta su un (nuovo) record che quindi diventa il record corrente, oppure quando una maschera viene aggiornata o viene rieseguita una query su di essa”.
Elenco principali proprietà e metodi (maschera): RecordSource, Tag, Parent, Name, TimerInterval, Requery, Controls.
7.3.2 I Text Box (Caselle di Testo - Edit Control).
Riguardo ai Text Box, così come per altri controlli (ma non per tutti), un tratto distintivo fondamentale è il fatto che per leggere/scrivere il contenuto dell’oggetto occorre che il medesimo abbia il “focus”. Occorrerà quindi in generale usare il metodo SetFocus sul Text Box prima di potere operare con esso.
NB Se l’oggetto non è abilitato occorre abilitarlo (proprietà Enabled), spostare il focus su di esso (SetFocus), operare sull’oggetto, spostare il focus da esso, disabilitarlo (per tornare alla condizione iniziale).
NB Il metodo SetFocus può essere usato anche per rendere attivo un controllo associato ad un campo di un database sui cui si vuole operare (ad esempio con il metodo DoCmd.FindRecord).
Elenco principali proprietà e metodi: SetFocus, Enabled, Text.
7.3.3 I Label (Etichette - Static Control).
Non ci sono particolari avvertenze per gli oggetti label, solo si ricordi che i Group Box (vedi sotto) sono costituiti dall’unione di un oggetto Cornice e di un oggetto Etichetta.
Elenco principali proprietà e metodi: Caption.
7.3.4 I Button (Bottoni - Command Button).
Nessuna avvertenza particolare.
Elenco principali proprietà e metodi: Enabled, Caption.
7.3.5 I Combo Box (Caselle Combinate) e le List Box (Caselle di Riepilogo).
Come per i Text Box, per leggere/scrivere il contenuto dell’oggetto occorre che il medesimo abbia il “focus” (almeno per l’oggetto Combo Box).
Elenco principali proprietà e metodi: SetFocus, Text (solo combo box), Value, RowSourceType, RowSource, ItemData, Requery (se associato a tabelle/query). Se la proprietà RowSourceType indica “Elenco valori”, la proprietà RowSource contiene l’elenco dei valori del combo box separati da punto e virgola; i valori alfanumerici vanno indicati tra virgolette (è possibile usare Chr(34)).
7.3.6 I Group Box (Gruppo di opzioni – Option Group - Cornice + Etichetta).
In VBA le cornici hanno lo scopo principale di accorpare Radio Button (opzioni - vedi sotto) e la struttura delle proprietà delle cornici riflette questo fatto: esiste infatti la proprietà Value che rappresenta il valore dell’opzione attualmente selezionata nella cornice. Per sapere quale nuova opzione viene selezionata basta testare la proprietà Value in corrispondenza dell’evento Click sulla cornice. Esiste anche la proprietà DefaultValue che consente di fissare l’opzione di default selezionata.
Usi delle cornici diversi dall’accorpamento di opzioni sono possibili ma non creano problemi per la nostra descrizione (non ci sono, cioè, avvertenze particolari da osservare in questi casi).
NB Sono stati riscontrati, in taluni casi, dei problemi nel caso si tentasse di rinominare le cornici. Si consiglia perciò, in caso di problemi, di lasciare il nome di default per le cornici.
Elenco principali proprietà e metodi: Value, DefaultValue.
7.3.7 I Radio Button (Option Button - Pulsanti di Opzione).
I Pulsanti di opzione sono di solito inclusi in cornici le quali, in genere, contengono anche il codice per gestire le opzioni (vedi sopra). In tal modo, perché tutto funzioni correttamente, occorre settare la proprietà OptionValue di ciascun Pulsante di opzione in modo che ognuno di essi possa essere identificato distintamente come valore della proprietà Value della cornice in cui è inserito (vedi sopra).
Elenco principali proprietà e metodi: OptionValue.
7.3.8 I Check Box (Caselle di Controllo).
Nessuna avvertenza particolare. La proprietà Value dice se l’opzione è selezionata o meno.
Elenco principali proprietà e metodi: Value.
7.3.9 Le sottomaschere (Sub Form).
Le sottomaschere sono oggetti particolari di Access e quindi metodi, proprietà ed eventi sono caratteristici di questo ambiente. Ricordiamo in particolare che per accedere agli oggetti di una sottomaschera di una data maschera si può usare una delle seguenti sintassi:
Form_Maschera(“Sottomaschera”).Form oppure
Forms!Maschera!Sottomaschera.Form
La proprietà Form restituisce cioè un riferimento alla maschera incorporata come sottomaschera in quella corrente.
Elenco principali proprietà e metodi: Form, LinkChildFields, LinkMasterFields.
7.4 Caratteristiche di un programma che non usa altre maschere/report.
Con programmi di questo tipo, si tratta sostanzialmente di usare l’ambiente di Access come un framework che consente di comporre form (maschere) per la gestione di dati (tabelle, query, ...) e per altre gestioni, ignorando la presenza di maschere già associate a insiemi di dati (tabelle, query, ...), ignorando la presenza di report, e ignorando la presenza di ogni altro elemento specifico di Access.
Programmi di questo tipo richiedono la creazione di maschere (vedi paragrafi precedenti) contenenti oggetti, e per il resto richiedono una programmazione Visual Basic del tutto simile a quella della versione “Stand-alone” con le precisazioni già fatte in precedenza e con le particolarità descritte nel seguito. Per avere maggiori informazioni potrà essere utile anche consultare la guida in linea ai relativi argomenti: in questo caso il modo più semplice per cercare informazioni è quello di accedere ad una finestra di codice e dare il comando Visualizza | Visualizzatore oggetti; a questo punto occorre scegliere DAO dal combo-box delle librerie ed individuare nell’elenco l’oggetto di interesse; sarà quindi disponibile sulla destra l’elenco alfabetico di proprietà, metodi ed eventi dell’oggetto selezionato; basterà scegliere l’elemento che interessa e accedere alla guida premendo il tasto F1.
- Quando si gestiscono insiemi di dati (appartenenti di solito al database corrente) occorre definire variabili opportune. I tipi più comuni di variabile sono Database (per fare riferimento ad un oggetto database) e Recordset (per fare riferimento ad un qualsiasi recordset: tabella, query, ...). Si può usare al loro posto il più generico tipo Object senza nessuna perdita di generalità (al limite una leggera perdita di efficienza).
- Per ottenere un riferimento al database corrente occorre usare la funzione CurrentDb. Si userà quindi una istruzione del tipo Set DatabaseCorrente = CurrentDb().
- Per aprire un recordset (tabella, query, ..) si userà il metodo di database OpenRecordset. Si userà una istruzione del tipo Set InsiemeDati = VariabileDatabase.OpenRecordset(“NomeRecordset”).
- Si possono a questo punto usare tutte le proprietà, le collezioni ed i metodi tipici del Visual Basic per operare sui recordset: MoveFirst, MoveNext, MoveLast, Seek, EOF, NoMatch, Bookmark, Fields, Index, AddNew, Edit, Update, Delete, Close, LastModified, ....
- Le variabili di tipo oggetto di cui sopra vanno impostate a Nothing prima di uscire dalla maschera che le definisce.
- Per chiudere una maschera si può usare l’istruzione DoCmd.Close A_FORM, “Nome Maschera”.
7.5 Caratteristiche di un programma che usa maschere e sottomaschere.
Quando si usano altre maschere o sottomaschere oltre a quella di “partenza” occorre tenere presente alcuni accorgimenti particolari tra i quali quelli riassunti nei seguenti punti:
- Conviene usare la parola chiave Me per fare riferimento alla maschera corrente (quella in cui è in esecuzione il codice).
- Si può usare la notazione “!” per fare riferimento agli elementi della collezione di default di un oggetto; esempi tipici di sono i seguenti: NomeForm!NomeCampo, NomeRecordSet!NomeCampo.
- Si può usare l’oggetto DoCmd per eseguire una serie di operazioni come ad esempio: DoCmd.Maximize (per massimizzare la maschera corrente); DoCmd.OpenForm (per aprire una maschera specificando una serie di parametri opzionali); DoCmd.Close (per chiudere un oggetto, ad esempio una maschera, specificando una serie di parametri opzionali).
- Per operare sulle proprietà e sui campi di una maschera aperta (diversa in generale da quella corrente) si può usare la collezione Forms con la seguente sintassi: Forms!Nome_maschera.Metodo/Proprietà oppure Forms!Nome_maschera!Nome_Campo. Sono, a questo proposito, particolarmente interessanti le seguenti proprietà delle maschere: Filter, FilterOn, OrderBy (nella stringa usare l’opzione DESC per ordinamenti decrescenti), OrderByOn.
- Si può usare la proprietà Tag di una maschera per memorizzare dati che così possono essere scambiati da una maschera all’altra. Ad esempio da una maschera mask2 si può scrivere l’istruzione Forms!mask1.Tag=valore; il codice di mask1 può ora accedere a questo valore con la notazione Me.Tag. E’ pure possibile scrivere istruzioni del tipo: Me.Tag = Forms!mask2!Campo1.Value (nel codice di mask1).
- Un oggetto Timer è automaticamente incluso in ogni maschera. Per non abilitarlo è sufficiente che la proprietà TimerInterval sia impostata a zero. Per rispondere agli eventi di timer è sufficiente gestire l’evento Timer della maschera.
- Per operare sulle proprietà/metodi (e sui campi) di una sottomaschera (cosa che non è tipicamente possibile in ogni contesto) si usa una notazione del tipo seguente:
- Forms!Nome_maschera!Nome_Sottomaschera.Form!NomeCampo oppure
- Forms!Nome_maschera!Nome_Sottomaschera.Proprietà oppure (per le proprietà)
- Me.Nome_Sottomaschera.Proprietà (se “sono” sulla maschera principale).
- Per le sottomaschere risultano particolarmente utili le proprietà LinkChildFields e LinkMasterFields che consentono di creare un collegamento tra i campi della maschera principale (Master) ed i campi della sottomaschera (Child). Ad esempio: Me!Nome_sottomaschera.LinkChildFields = "campo1;...;campoN" e di quindi: Me!Nome_sottomaschera.LinkMasterFields = "campo1;...;campoN".
- Dall’interno di una sottomaschera la maschera principale può essere individuata tramite la proprietà Parent. In tal modo si possono scrivere istruzioni del tipo: ParentDocName = Me.Parent.Name (per leggere il nome della maschera principale); Me.Parent.Tag = X (per assegnare il valore X al Tag della maschera principale); ecc.
- Nel contesto di maschere e sottomaschere gioca un ruolo importante l’evento Current su una maschera (vedi paragrafo 7.3.1).
- NB Per verificare la correttezza del programma ed individuare eventuali errori è sufficiente impartire il comando “Debug | Compila …” dalla finestra di codice.
- 7.6 Caratteristiche di un programma che usa report.
- Quando si usano report occorre tenere presente, oltre a quanto detto nei paragrafi precedenti, alcuni accorgimenti particolari tra i quali quelli riassunti nei seguenti punti:
- Si può usare l’oggetto DoCmd per eseguire una serie di operazioni come ad esempio: DoCmd.OpenReport (per aprire un report specificando una serie di parametri opzionali).
- Per operare sulle proprietà/metodi e sui campi di un report aperto si può usare la collezione Reports con la seguente sintassi: Reports!Nome_report.Proprietà oppure Reports!Nome_report!Nome_Campo. Sono, a questo proposito, particolarmente interessanti le seguenti proprietà dei report: Filter, FilterOn.
- Poiché un report può avere in generale una struttura complessa è possibile raggiungere i suoi elementi attraverso strutture sintattiche che ripercorrono la struttura del report. Ad esempio in un report a tre livelli di nesting (livello 0, 1, 2) si può abilitare l’ordinamento decrescente dei dati con una istruzione del tipo mostrato di seguito: Reports!Nome_report.GroupLevel(2).SortOrder = -1. Per ulteriori informazioni al riguardo si consulti la guida in linea di Access a partire dall’oggetto Report in (particolare le proprietà dell’oggetto report).
- 7.7 Come mandare in esecuzione una maschera all’apertura di un Database.
- Affinché all’atto dell’apertura di un database venga aperta una certa maschera (o vengano eseguite più in generale altre azioni) è necessario richiamare e compilare la finestra di dialogo Avvio. Per richiamare tale finestra di dialogo occorre dare il comando Strumenti | Avvio. Nella finestra di dialogo Avvio, se si vuole che all’inizio venga aperta una certa maschera, occorre selezionare la maschera desiderata dal combo box Visualizza maschera/pagina.
- 7.8 I menù.
- Tipicamente i menù in VBA possono essere usati solo come menù dell’applicativo Access (quando si entra nel contesto dell’oggetto che definisce un nuovo menù) o come menù di scelta rapida (shortcut).
- Per usare un menù il primo passo è quello di crearlo. Per creare un menù basta seguire la successiva procedura:
- Selezionare il menù Visualizza | Barre degli strumenti | Personalizza.
- A questo punto compare una finestra di dialogo a linguette.
- Selezionare la linguetta Barre degli strumenti.
- Usare il pulsante Nuova per creare una nuova barra dei menù (o più in generale una nuova barra degli strumenti) fornendone il Nome. A questo punto compare un barra vuota che si può riempire. Le volte successive basterà selezionare il check box a lato della barra desiderata nella lista per fare comparire la barra di menù per l’editing.
- Selezionare il pulsante Proprietà (mentre è selezionata la barra desiderata) per specificare le proprietà desiderate: in particolare, dal combo box tipo, scegliere Barra menù per creare un barra di menù per Access o PopUp per creare un menù di scelta rapida. Se si è scelto PopUp la successiva personalizzazione si farà scegliendo la voce Menu di scelta rapida dalla lista Barre degli strumenti.
- Scegliere la linguetta Comandi.
- Da qui è possibile aggiungere dei menù o delle voci di menù alla barra o ai menù e sottomenù della barra semplicemente trascinando le voci dalla lista comandi alla barra di menù, ai menù (aperti) o ai sottomenù (aperti); operando un trascinamento all’inverso è possibile eliminare voci di menù. Per quanto riguarda le scelte possibili nella linguetta Comandi ricordiamo in particolare le seguenti:
- Dalla categoria File scegliere Aggiuntivo per aggiungere una nuova voce di menù;
- Dalla categoria Nuovo menu scegliere Nuovo menu per aggiungere un menù alla barra;
- Dalla categoria Menu incorporati scegliere uno qualunque dei menù incorporati di Access.
- Da una delle restanti categorie (File, Modifica, Visualizza, ...) scegliere la voce di menù o lo strumento desiderato.
- A questo punto è possibile assegnare delle proprietà a ciascuna voce di menù (o menù) semplicemente selezionando la voce (o il menù), facendo click con il pulsante destro del mouse e scegliendo Proprietà oppure un’altra voce di personalizzazione. Se si è scelto Proprietà, tipicamente si vorranno modificare (nella successiva finestra di dialogo), accanto alle altre, le seguenti proprietà: Didascalia (per assegnare la voce di menù che comparirà); Azione (in cui scrivere la stringa “=NomeFunzione()” dove NomeFunzione è il nome della procedura Function di tipo Public da scrivere nella sezione generale di una maschera o in un modulo).
- Se si vuole si può usare la linguetta Opzioni per specificare ulteriori opzioni.
- Chiudere la finestra di dialogo di personalizzazione con il pulsante Chiudi.
- Il secondo passo necessario per potere usare un menù è quello di costruire tante Function Public quante sono le voci di menù e che hanno come nome quello specificato nella casella Azione di cui sopra. In pratica, per ogni funzione, occorre tipicamente:
- Entrare all’interno di una maschera di interesse o di un modulo in modifica struttura.
- Per le maschere, selezionare Visualizza | Codice e selezionare la sezione Generale.
- Costruire una riga del tipo Public Function NomeFunzione() dove NomeFunzione è il nome specificato nella casella Azione di cui sopra.
- Scrivere/modificare il codice di risposta all’evento di selezione della voce di menù.
- Infine per potere usare un menù occorre:
- Per rimpiazzare il menù di Access: indicare il nome della barra di menù di interesse nel campo della proprietà Barra menù della maschera di interesse (attraverso la finestra Proprietà) oppure assegnare, come stringa, tale nome della barra di menù, nel codice, alla proprietà MenuBar della maschera di interesse (per ripristinare la barra di default assegnare a tale proprietà la stringa vuota).
- Per settare/modificare il menù di scelta rapida di un oggetto con il menù personalizzato: indicare il nome della barra di menù di interesse nel campo della proprietà Barra menù scelta rapida dell’oggetto di interesse (attraverso la finestra Proprietà) oppure assegnare, come stringa, tale nome della barra di menù, nel codice, alla proprietà ShortcutMenuBar dell’oggetto di interesse (per ripristinare la barra di default assegnare a tale proprietà la stringa vuota).
- 7.9 I moduli.
- I moduli consentono tipicamente di poter disporre di procedure, funzioni e variabili globali e cioè visibili a tutti gli oggetti (in particolare maschere e report) del database. Per potere essere visibili ovunque funzioni e procedure conviene che siano definite con la parola chiave Public, mentre le variabili devono essere definite come Global. A parte quanto detto l’uso delle variabili, funzioni e procedure dei moduli non richiede avvertenze particolari rispetto all’uso dei corrispondenti oggetti locali.
- Per definire variabili, procedure e funzioni di modulo occorre:
- Selezionare la voce moduli.
- Selezionare un modulo esistente e premere il pulsante Struttura o creare un nuovo modulo con il pulsante Nuovo.
- In ogni caso compare la finestra di codice nella quale si possono scrivere/modificare righe di codice corrispondenti a variabili, procedure e funzioni.
- 8. LE PRINCIPALI VOCI DI MENU’ (CENNI).
- Elenchiamo qui di seguito alcune voci di menù che paiono significative e che non sono state evidenziate (almeno in maniera adeguata) nella trattazione precedente. L’elenco delle voci viene, per comodità, suddiviso in paragrafi corrispondenti alla categoria di menù di appartenenza.
- Premessa: in questa versione di Office è presente una caratteristica per la quale alcune voci di menù (le meno usate) non sono abilitate. Esse possono venire tuttavia richiamate selezionando la doppia freccia in basso che compare in ogni menù incompleto.
- 8.1 Il menù File.
- La voce File | Carica dati esterni | Importa consente l’inclusione di copie di tabelle e altri oggetti da database esterni (sia database Access che di altro tipo).
- La voce File | Carica dati esterni | Collega tabelle consente l’inclusione di collegamenti a tabelle di database esterni (sia database Access che di altro tipo). Una tabella collegata fornisce solo un riferimento ad una tabella che si trova in effetti in un altro database. La tabella viene a tutti gli effetti vista anche nel corrente database ma appartiene ad un altro database di cui segue le “regole” (es. regole di integrità referenziale).
- Le voci File | Esporta e File | Salva con nome consentono rispettivamente di esportare l’oggetto (tabella, query, maschera, report, ...) correntemente selezionato in un altro database/file specificato oppure di salvare l’elemento corrente come altro oggetto nello stesso database. Nel primo caso il database di destinazione può essere un database Access o di altro tipo.
- La voce File | Invia consente, nei sistemi dotati di posta elettronica, di inviare l’oggetto selezionato ad un altro utente sotto forma di messaggio di posta elettronica.
- 8.2 Il menù Modifica.
- Oltre alle funzionalità tipiche di questo menù (taglia, copia, incolla, elimina, rinomina, trova, sostituisci, ...) vi è la funzionalità Modifica | Crea collegamento che consente di creare (tipicamente sul desktop) un collegamento all’oggetto correntemente selezionato. Quando si attiverà tale collegamento, verrà mandato in esecuzione Access ed aperto l’oggetto “collegato”.
- 8.3 Il menù Visualizza.
- Il menù Visualizza | Barre degli strumenti | Personalizza consente di personalizzare le barre degli strumenti per il contesto in cui ci si trova attualmente con innumerevoli funzionalità che si ricavano analizzando la relativa dialog box.
- 8.4 Il menù Inserisci.
- Quando si crea o si modifica la struttura di una tabella, si trova, tra le altre, la voce Inserisci | Campo di ricerca che consente di inserire nella tabella corrente uno o più campi il cui valore viene scelto (tipicamente tramite combo box) da un elenco di valori di solito appartenente ad un’altra tabella/query. La creazione di tale campo è guidata tramite Wizard.
- 8.5 Il menù Strumenti.
- Il comando Strumenti | Controllo ortografia esegue un controllo ortografico “stile Word” sui campi alfabetici dell’oggetto (di solito una tabella) selezionato.
- Il comando Strumenti | Correzione automatica consente di abilitare/disabilitare la correzione automatica di determinati errori (vedi la relativa finestra di dialogo) durante la digitazione di valori nei campi.
- Probabilmente tra le funzioni più interessanti del menù strumenti vi è quella invocata dal comando Strumenti | Collegamenti office | Unisci a MS Word che consente di collegare dati ad un documento Word e di stampare lettere “tipo” o buste unendo in maniera appropriata testo Word e campi di database. Una tipica procedura di utilizzo percorre i seguenti passi:
- Selezionare un oggetto di database (tipicamente una tabella o una query)
- Dare il comando Strumenti | Collegamenti office | Unisci a MS Word.
- Selezionare dalla finestra di dialogo dell’autocomposizione relativa alla “stampa unione” se creare un nuovo documento per la stampa unione o aprirne uno esistente. Se si sceglie di aprire un documento esistente bisognerà poi specificare quale.
- A questo punto Access apre automaticamente Word. All’interno di Word si possono usare tutte le funzionalità usuali ma in più si possono utilizzare tipicamente le seguenti funzionalità:
- Dalla barra appositamente creata è possibile selezionare il pulsante Inserisci campo unione per includere i campi del database all’interno del documento Word.
- Selezionare il comando Word Strumenti | Lettere e posta | Stampa unione per produrre un documento costituito da una serie di “documenti” Word tutti uguali nella struttura ma che differiscono per il contenuto dei campi presi dal database. Compare una side bar sulla destra che attraverso una serie di passi guida alla composizione del documento desiderato. Conviene tornare al passo 1 (con gli appositi pulsanti in fondo) per selezionare dall’inizio tutte le opzioni di interesse. Nel passo 1 scegliere il tipo di documento da creare (di solito lettera o catalogo). Nel passo 2 scegliere di solito di usare il documento corrente come modello per la generazione della stampa unione. Il passo 3 consente di scegliere la sorgente dati da cui derivare il documento di stampa unione: di solito si seleziona la voce “usa una lista esistente” che fa riferimento all’oggetto Access da cui tutta la procedura ha avuto inizio (è possibile comunque cambiare sorgente dati). Il passo 4 consente, se non è ancora stato fatto, di compilare il modello di lettera desiderato inserendo diversi elementi tra cui anche i campi tratti dal database. Il passo 5 consente di vedere in anteprima il documento prodotto e di apportare modifiche ai dati sorgente. Il passo 6 (l’ultimo) consente di stampare il documento prodotto oppure di modificarlo e salvarlo: di solito si sceglie quest’ultima opzione (modifica le singole lettere). La differenza principale tra lettere e catalogo consiste nel fatto che con l’opzione “lettere” viene inserita una interruzione di pagina (e di sezione) dopo ogni singola lettera (generata con i dati di una riga di tabella/query del database) mentre questo non avviene con l’opzione “catalogo”.
- Il comando Strumenti | Collegamenti office | Analizza con MS Excel consente di importare l’oggetto (tipicamente tabella o query) selezionato all’interno di Excel per successive elaborazioni. Ogni riga della tabella/query verrà inserita in una riga di Excel; la prima riga conterrà i nomi di campo. In Excel si potranno applicare varie operazioni interessanti: filtro (menù dati), tabella Pivot (menù dati), ecc. ecc.
- Il comando Strumenti | Collegamenti office | Pubblica con MS Word consente di importare l’oggetto (tipicamente tabella o query) selezionato all’interno di Word per successive elaborazioni. Ogni riga della tabella/query verrà inserita in una riga di una tabella Word; la prima riga della tabella Word conterrà i nomi di campo.
- Il comando Strumenti | Analizza | Tabella consente di eseguire un’analisi automatica della struttura e dei dati delle tabelle per proporre azioni migliorative. L’analisi delle tabelle è tipicamente fondata sul concetto di forme normali dei database relazionali.
- Il comando Strumenti | Analizza | Prestazioni, dopo avere richiesto di selezionare gli oggetti (tabelle, query, maschere, report, ...) di interesse, consente di eseguire un’analisi automatica delle prestazioni per proporre azioni migliorative.
- Il comando Strumenti | Analizza | Analizzatore, dopo avere chiesto l’elenco degli oggetti di interesse attraverso opportuna finestra di dialogo, produce un rapporto dettagliato (che può essere poi stampato) delle caratteristiche degli oggetti selezionati. Usando il bottone opzioni della finestra di dialogo di selezione degli oggetti è possibile specificare più in dettaglio quali caratteristiche evidenziare per gli oggetti.
- Per quanto riguarda la protezione si può operare secondo il seguente schema esemplificativo ma tipico:
- Creare un nuovo file di informazioni (per un nuovo gruppo di lavoro) o aderire ad un file di informazioni di un gruppo di lavoro diverso da quello standard di sistema (system.mdw). L’opzione che consente di fare ciò è Strumenti | Sicurezza | Amministratore ......
- Scegliere il menù Strumenti | Sicurezza | Account utenti e gruppi. Si può scegliere questa voce con o senza un database aperto (noi supponiamo di non avere un database aperto). Nella linguetta Cambia password di accesso è possibile cambiare la password per l’utente corrente (che la prima volta sarà l’Amministratore - Admin); perché il sistema di protezione funzioni occorre dare una password almeno all’amministratore. Uscire da Access e rientrare come Amministratore o Admin con la password appena scelta. Nella linguetta Gruppi (di Strumenti | Sicurezza | Account utenti e gruppi) è possibile creare nuovi gruppi di utenti o eliminare gruppi di utenti (ad eccezione di Amministratori e Utenti). Nella linguetta Utenti è possibile creare utenti, cancellare utenti (tranne Amministratore - Admin), assegnare gli utenti ai gruppi. Nel nostro caso conviene: creare un utente che sarà inserito nel gruppo amministratori e che sarà costituito proprietario dei vari elementi del database (vedi più oltre); rimuovere l’utente Amministratore (Admin) dal gruppo Amministratori; uscire da Access e rientrarvi come l’utente appena creato (senza specificare password); inserire la password per il nuovo utente-amministratore; uscire e rientrare come nuovo utente-amministratore (con la nuova password); creare il database di interesse e tornare in Strumenti | Sicurezza | Account Gruppi e utenti (linguetta Utenti) ed infine creare altri utenti che avranno privilegi diversi sul database (vedi oltre).
- Richiamando il comando Strumenti | Sicurezza | Autorizzazioni utenti e gruppi è possibile lavorare con due linguette. Con la linguetta Cambia proprietario è possibile cambiare il proprietario degli oggetti del database corrente; nel nostro caso conviene che il proprietario sia fissato al primo utente creato in precedenza (che è anche amministratore) alternativamente è possibile assegnare la proprietà al gruppo amministratori. Con la linguetta Autorizzazioni è possibile specificare le autorizzazioni concesse, per ogni singolo oggetto del database, ad ogni utente/gruppo. Si osservi che l’abilitazione di una autorizzazione a livello di gruppo ha priorità (nel senso che si estende a tutti gli utenti del gruppo anche se quell’autorizzazione non è esplicitamente richiamata per lo specifico utente); si osservi anche che il nuovo utente-amministratore ed il suo gruppo (Amministratori) dovrebbero avere tutte le autorizzazioni possibili.
- Ogni successivo ingresso in Access con il file di informazioni in cui sono state inserite le protezioni richiederà che venga inserito l’identificativo dell’utente e (se specificata in precedenza) la password. Per tornare ad una versione di Access che non richieda l’inserimento dei dati utente (in pratica assume per default l’utente amministratore) occorre ripristinare il file di informazioni di default (system.mdw) usando la voce di menù Strumenti | Sicurezza | Amministratore ..... (e scegliendo il bottone aderisci). Allo stesso modo si userà la voce Strumenti | Sicurezza | Amministratore ..... (scegliendo il bottone aderisci) per specificare in futuro un diverso file di informazioni con cui lavorare in Access.
- Una replica di un database è una copia di alcuni (o tutti) gli oggetti (solitamente tabelle) di un database che è sincronizzabile con gli oggetti originali. Si distingue un database che prende il nome di replica master (è il database originale da cui è stata tratta la replica) ed una serie di database replica. La sincronizzazione consiste nell’adeguamento dei dati di una replica (o della replica master) alle modifiche (inserimenti, cancellazioni, variazioni) apportate ad un altro set di dati (replica o replica master) e viceversa. La sincronizzazione può essere invocata sia sulla replica master che sui vari database replica. Le operazioni principali sulle replica sono configurabili come segue:
- Creazione di replica: occorre innanzi tutto creare una replica master partendo da un database (che non sia già una replica) e dare il comando Strumenti | Replica | Crea replica quindi seguire le indicazioni. Il database di partenza verrà convertito nella replica master mentre verrà creata una nuova replica. Per aggiungere un oggetto (tabella) alla replica, nella replica master deve essere barrata la casella Replicabile nelle proprietà dell’oggetto (tabella) in questione. Per creare una nuova replica dare il comando Strumenti | Replica | Crea replica dal database replica master e seguire le indicazioni.
- Sincronizzazione di replica: per ottenere la sincronizzazione aprire un database (replica o replica master) e dare il comando Strumenti | Replica | Sincronizza. Selezionare il database (replica o replica master) con cui eseguire la sincronizzazione e confermare con Ok. La sincronizzazione avviene sempre tra due database (replica o replica master). L’esecuzione della sincronizzazione può causare errori e/o conflitti di sincronizzazione che vengono segnalati alla riapertura del database. Gli errori possono essere visualizzati e corretti in base alle indicazioni fornite (dopo ogni singola correzione può essere necessario risincronizzare i database). Per i conflitti di sincronizzazione vedi sotto.
- Risoluzione di conflitti di replica: Se gli utenti di due repliche diverse apportano ognuno una modifica allo stesso record del database, le modifiche apportate da uno degli utenti non verranno applicate all'altra replica. Occorre quindi risolvere il problema con un procedimento denominato "risoluzione del conflitto". I “conflitti” vengono memorizzati in apposite tabelle di conflitto (denominate tabella_conflict e inserite come oggetti nascosti). I conflitti possono essere risolti dando il comando Strumenti | Replica | Risolvi conflitti e seguendo le successive indicazioni oppure rispondendo di si alla domanda di risoluzione di conflitti (che compare automaticamente quando si entra in una replica su cui ci siano dei conflitti) e seguendo anche qui le successive indicazioni. Si tenga presente, in generale, che: l’inserimento non genera conflitti con altre operazioni perché crea un record nuovo (si possono avere problemi con altri inserimenti in caso di chiave duplicata o problemi in caso di violazione di vincoli di database); la cancellazione non fa conflitto con l’inserimento (ciò che si cancella già esisteva), ma può fare conflitto con le modifiche (anche se la cancellazione ha priorità sulle modifiche), mentre non si può parlare di conflitto tra due cancellazioni dello stesso record; la modifica non fa conflitto con l’inserimento (ciò che si modifica esisteva già), può fare conflitto con la cancellazione (anche se la cancellazione ha la priorità) e può fare conflitto con altre modifiche se queste avvengono sullo stesso record.
- Il comando Strumenti | Macro | Esegui Macro consente di mandare in esecuzione una macro di cui si specifica il nome.
- Con il comando Strumenti | Controlli ActiveX è possibile aggiungere e rimuovere (rispettivamente bottoni Registra e Rimuovi dal registro della successiva finestra di dialogo) controlli (files .OCX) all’insieme dei controlli disponibili nella voce Inserisci | Controllo ActiveX del menù della finestra di creazione/modifica (tipicamente delle maschere). Con l’inserimento di opportuni controlli attraverso il precedente comando si possono avere a disposizione praticamente tutti i controlli standard del Visual Basic.
- Il comando Strumenti | Componenti aggiuntivi | Gestore componenti aggiuntivi consente di aggiungere (o rimuovere) i file di aggiunta di Access (MDA) che contengono di solito dei Wizard per consentire di eseguire in maniera “guidata” diverse operazioni.
- Il comando Strumenti | Utilità database | Gestore pannelli comandi consente di creare e manipolare pannelli di comando (switchboard) che sono in pratica particolari maschere che contengono bottoni ed oggetti simili che consentono di invocare funzionalità (aprire maschere, aprire report, ecc.). Dato il comando seguire le relative indicazioni.
- Il menù Strumenti | Opzioni consente di specificare attraverso una “tabbed dialog” tutte le opzioni significative relative ad Access.
- Sia in presenza di un database aperto che in assenza di esso si trovano le seguenti voci di menù che hanno un utilizzo automatico (basta seguire le indicazioni una volta dato il comando):
- Strumenti | Sicurezza | Crittografa/Decrittografa database consente di cifrare (criptare) un database per proteggerlo da usi/manipolazioni improprie: un database cifrato non può essere analizzato (in maniera semplice) attraverso strumenti appositi. Con lo stesso comando è possibile decifrare un database che sia cifrato.
- Strumenti | Utilità database | Converti database consente di convertire un database di una precedente versione di Access in un database Access della versione corrente o viceversa.
- Strumenti | Utilità database | Compatta e ripristina database consente di compattare un database eliminando lo spazio sprecato e così aumentando le prestazioni. Consente altresì di ripristinare un database “corrotto” in maniera non irrimediabile.
- Strumenti | Utilità database | Crea copia di file MDE consente di costruire una copia del database attuale con codice Visual Basic e struttura di form e report non modificabili che può essere eseguito tramite un doppio click sull’icona del relativo file.
8.6 Il menù Finestra.
Questo menù contiene gli usuali comandi di Windows per consentire di gestire le finestre figlie dell’applicativo Access.
8.7 Il menù di Help (?).
Questo menù contiene il punto di partenza per l’accesso alle pagine della guida in linea di Access. Spesso si può invocare l’help con il tasto F1 o usando, in opportuni contesti, il menù di scelta rapida.
9. GENERAZIONE DI PAGINE ASP PER LA VISUALIZZAZIONE DI DATI.
In questo paragrafo si forniscono indicazioni su come generare (automaticamente) pagine ASP (Active Server Pages) che esportino su Internet/Intranet i dati associati a tabelle, query e maschere per visualizzare le informazioni di un database.
Affinché quanto specificato successivamente funzioni occorre che siano garantite le seguenti condizioni:
- Sia installato su ogni sistema client Internet Explorer (possibilmente 4.0 o successiva);
- Sia installato sul server Internet Information Server (IIS – versione 3.0 o successiva) o Personal Web Server (PWS - versione1.0 o successiva);
- Sia installato sul server il software ASP come complemento a IIS o PWS;
- Il direttorio in cui verranno memorizzate le pagine ASP generate dovrà essere abilitato anche all’esecuzione (all’interno dell’amministrazione di IIS o PWS).
A questo punto è possibile iniziare a svolgere le operazioni descritte nei successivi sottoparagrafi.
9.1 Operazioni all’interno dell’applicativo Access.
Per potere creare pagine ASP (Internet/Intranet) che consentano di “esportare” dati di tabelle, query e maschere per visualizzare le informazioni di un database è possibile svolgere i seguenti punti:
- Creare il database comprensivo degli usuali oggetti. Si ricordi che l’eventuale codice scritto nelle maschere non verrà esportato.
- Selezionare la tabella, query o maschera da esportare.
- Dare il comando File | Esporta.
- Nella successiva finestra di dialogo (Esporta …) selezionare Microsoft Active Server Pages nel campo Tipo File, selezionare poi il nome del file ed il direttorio in cui memorizzare il file ASP generato. Il direttorio dovrebbe essere uno di quelli “visibile” da IIS o PWS. Fare click sul bottone Salva.
- Compilare la successiva finestra di dialogo (Opzioni di Output per Microsoft Active Server Pages) inserendo almeno: il Nome origine dati (specificando il nome DNS del database che verrà creato più avanti – vedi paragrafo 9.2), il campo URL Server (specificando l’URL del server che conterrà la pagina ASP – es. http://PC1) e il campo Timeout Sessione (min.) (es. 10 per un timeout di 10 minuti). Confermare con OK.
Dopo le precedenti operazioni il sistema crea in automatico i file ASP necessari alla generazione runtime dei dati in un browser internet.
9.2 Operazioni necessarie a creare una sorgente DNS.
Affinché tutto funzioni correttamente è necessario creare una sorgente dati DNS con il nome specificato nel campo Nome origine dati del precedente paragrafo. Per fare ciò si possono svolgere i seguenti passi:
- Dalla barra d’avvio aprire il pannello di controllo (Start | Impostazioni | Pannello di Controllo), aprire gli Strumenti di Amministrazione ed infine aprire l’applicativo Origine dati (ODBC) che consente di configurare le sorgenti dati ODBC.
- Scegliere la linguetta System DNS e premere il bottone Add.
- Scegliere la voce Microsoft Access Driver dall’elenco e premere il bottone Fine.
- Nelle finestra di dialogo successiva compilare il campo Nome origine dati con il nome della sorgente DNS specificata nel precedente paragrafo 9.1, quindi usare il bottone Seleziona per selezionare il file di database contenente i dati da esportare (nel momento in cui si esegue questa operazione il database deve essere chiuso). Confermare il tutto con OK.
9.3 Operazioni necessarie per visualizzare i dati da Internet Explorer.
Per potere utilizzare quanto predisposto in precedenza è possibile porsi su una postazione client (possibilmente ma non necessariamente diversa dalla postazione del server) e mandare in esecuzione Internet Explorer. A questo punto occorre digitare, nel campo di indirizzo URL, la stringa http://NomeServer/pathname/file.asp dove NomeServer è il nome del server specificato nel precedente paragrafo 9.1 mentre pathname/file.asp rappresenta il percorso ed il nome del file ASP generato al paragrafo 9.1 (il percorso viene dato a partire dalla radice virtuale di IIS o PWS).
A questo punto dovrebbe comparire una tabella con i dati relativi alla tabella, alla query o alla tabella associata alla maschera (principale) in questione.
NB Può darsi che per recepire le ultime modifiche apportate al database dopo che si è entrati in visualizzazione sia necessario uscire da Internet Explorer e rientrarvi.
NB Quando si deve effettuare la manutenzione del database può essere desiderabile fermare l’esecuzione del server internet (IIS o PWS). L’icona del PWS si trova nella barra d’avvio. Terminata la manutenzione occorre ripristinare l’esecuzione del server internet (magari facendo ripartire la macchina server).
10. GENERAZIONE DI PAGINE HTML PER LA VISUALIZZAZIONE DI DATI TRAMITE REPORT.
In questo paragrafo si forniscono indicazioni su come generare (automaticamente) pagine HTML che esportino su Internet/Intranet i report di Access per visualizzare dati di un database.
Affinché quanto specificato successivamente funzioni occorre che siano garantite le stesse condizioni enunciate all’inizio del paragrafo 9.1 precedente.
A questo punto è possibile iniziare a svolgere le operazioni descritte nei successivi sottoparagrafi.
NB Quando si deve effettuare la manutenzione del database può essere desiderabile fermare l’esecuzione del server internet (IIS o PWS). L’icona del PWS si trova nella barra d’avvio. Terminata la manutenzione occorre ripristinare l’esecuzione del server internet (magari facendo ripartire la macchina server).
10.1 Operazioni all’interno dell’applicativo Access.
Per potere creare pagine HTML (Internet/Intranet) che consentano di “esportare” report al fine di visualizzare in formato opportuno dati di un database è possibile svolgere i seguenti punti:
- Creare il database comprensivo degli usuali oggetti tra cui almeno un report. Si ricordi che il codice scritto nel report non verrà esportato.
- Selezionare il report da esportare.
- Dare il comando File | Esporta.
- Nella successiva finestra di dialogo (Esporta Report …) selezionare Documenti HTML nel campo Tipo File, selezionare poi il nome del file ed il direttorio in cui memorizzare il file HTML generato. Il direttorio dovrebbe essere uno di quelli “visibile” da IIS o PWS. Fare click sul bottone Esporta.
- Lasciare tipicamente vuota la successiva finestra di dialogo (Opzioni di Output per HTML). Confermare con OK.
Dopo le precedenti operazioni il sistema crea in automatico i file HTML contenti l’immagine statica del report nell’istante del salvataggio. Questo vuol dire che aggiornando i dati del database non si aggiornano automaticamente i file HTML: l’aggiornamento dovrà avvenire a cura dell’utente di Access che dovrà in questo caso rieseguire la precedente procedura.
10.2 Operazioni necessarie per visualizzare il report da Internet Explorer.
Per potere utilizzare quanto predisposto in precedenza è possibile porsi su una postazione client (possibilmente ma non necessariamente diversa dalla postazione del server) e mandare in esecuzione Internet Explorer. A questo punto occorre digitare, nel campo di indirizzo URL, la stringa http://NomeServer/pathname/file.html dove NomeServer è il nome del server su cui è stata posta la pagina html generata al precedente paragrafo 10.1 mentre pathname/file.html rappresenta il percorso ed il nome del file HTML generato al paragrafo 10.1 (il percorso viene dato a partire dalla radice virtuale di IIS o PWS). A questo punto dovrebbe comparire il report con i dati in precedenza salvati.
11. LE DATA ACCESS PAGES.
Le Data Access Pages rappresentano la novità introdotta a partire da Access 2000 per la generazione di pagine HTML che consentano l’interazione (inserimenti, modifiche, cancellazioni e visualizzazioni) con un database Access attraverso Internet.
11.1 Creazione di data Access Pages.
Per costruire una Data Access Page (Pagina) si può procedere come segue:
- Selezionare la voce Pagine.
- Selezionare il bottone Nuovo.
- Selezionare Creazione guidata pagina nella successiva finestra di dialogo; confermare con Ok.
- Nella successiva finestra di dialogo selezionare le tabelle/query (una alla volta) e poi, sotto, i campi da inserire nella pagina (non è necessario selezionarli tutti). Si tenga conto che se si scelgono come elementi tabelle/query tali da generare sottolivellamenti (es. clienti e per ogni cliente le relative fatture) la pagina risultante sarà di sola lettura e non saranno possibili aggiornamenti. Alla fine selezionare Avanti.
- Nella successiva finestra di dialogo occorre specificare eventuali ulteriori raggruppamenti oltre a quelli già dedotti dal programma a partire dalla struttura del database. Si consideri che l’aggiunta di raggruppamenti rende la pagina di sola lettura. Selezionare Avanti.
- Nella successiva finestra di dialogo scegliere fino ad un massimo di 4 criteri gerarchici di ordinamento. Selezionare Avanti.
- Nella successiva finestra di dialogo fornire un nome (titolo) per la pagina (che possibilmente non contenga spazi) e selezionare il radio button “Modifica la struttura della pagina” in modo da potere apportare modifiche alla struttura fin qui definita nella finestra di creazione /modifica delle pagine. Selezionare Fine.
A questo punto si può modificare la pagina nella finestra di creazione/modifica delle pagine che compare. Le operazioni principali sono le seguenti:
- Chiudere la finestra e specificare (su richiesta della macchina) il nome e la posizione in cui salvare la pagina html che verrà generata in automatico. Le volte successive le operazioni di salvataggio avverranno automaticamente sulla pagina html individuata in precedenza.
- Selezionare un oggetto della pagina.
- Trascinare gli oggetti o i relativi marker per spostare/ridimensionare gli oggetti.
- Eseguire operazioni tipo taglia/copia/incolla con il menù Modifica.
- Visualizzare le proprietà dell’oggetto selezionato ed eventualmente modificarle attraverso una finestra a linguette (comando Visualizza | Proprietà). Le proprietà sono differenti da oggetto ad oggetto e sono molto numerose: quando si vuole modificare qualche caratteristica di un oggetto conviene provare a controllare se c’è qualche proprietà che si riferisce a quella caratteristica in modo da poterla modificare.
- Visualizzare l’elenco dei campi (comando Visualizza | Elenco Campi) per aggiungere altri elementi (dalle tabelle/query selezionate all’inizio) alla pagina con una operazione di trascinamento.
- Inserire oggetti nella pagina (ad esempio immagini con il comando Inserisci | Immagine; l’immagine può poi essere portata in primo o secondo piano, come ogni altro oggetto, con i comandi Formato | Porta in primo piano o Formato | Porta in secondo piano).
11.2 Modifica e cancellazione di Data Access Pages.
Per modificare una pagina è sufficiente selezionarla nella finestra (voce) Pagine, premere il bottone Struttura, ed accedere così alla finestra di creazione /modifica delle pagine per le modifiche (vedi paragrafo 11.1).
Per cancellare una pagina o una sottopagina è sufficiente selezionarla nella finestra (voce) Pagine e premere il bottone CANC. Verrà chiesta conferma.
11.3 Utilizzo di Data Access Pages (da Access).
Le pagine forniscono una interfaccia personalizzabile che consente di visualizzare, modificare (se permesso) ed in generale di manipolare i dati di tabelle e query.
Per operare con una pagina occorre:
- Selezionare la voce Pagine del database corrente.
- Selezionare una pagina dall’elenco delle pagine.
- Fare click sul bottone Apri per accedere alla pagina che consente, in maniera del tutto intuitiva, la visualizzazione e la manipolazione dei dati.
All’interno di ciascuna pagina saranno di solito ben evidenti nell’ordine: i 4 bottoni per lo spostamento, il bottone per l’aggiunta di un nuovo record, il bottone per la cancellazione, il bottone per il salvataggio delle modifiche, il bottone per l’annullamento delle modifiche ed altri ancora. Nel caso di pagine sottolivellate sarà presente anche un bottone con il simbolo “+” per consentire di vedere i dati associati ai livelli inferiori.
11.4 Utilizzo di Data Access Pages (da Internet Explorer).
Per potere utilizzare quanto predisposto in precedenza all’interno di Internet Explorer è possibile porsi su una postazione client (possibilmente ma non necessariamente diversa dalla postazione del server) e mandare in esecuzione Internet Explorer. A questo punto occorre digitare, nel campo di indirizzo URL, la stringa http://NomeServer/pathname/file.htm dove NomeServer è il nome del server mentre pathname/file.htm rappresenta il percorso ed il nome del file html il tutto relativo alle pagine html citate in precedenza al paragrafo 11.1 (il percorso viene dato a partire dalla radice virtuale di IIS o PWS).
A questo punto dovrebbe comparire una situazione identica a quella descritta nel precedente paragrafo 11.3 (per quanto riguarda l’uso delle pagine all’interno di Access).
La concorrenza di diversi utenti viene gestita in maniera automatica dal sistema eventualmente fornendo informazioni o ponendo domande opportune all’utente.
Quando si deve effettuare la manutenzione del database può essere desiderabile fermare l’esecuzione del server internet (IIS o PWS). L’icona del PWS si trova nella barra d’avvio. Terminata la manutenzione occorre ripristinare l’esecuzione del server internet (magari facendo ripartire la macchina server).
Per evitare problemi o la comparsa di messaggi conviene registrare il sito internet su cui sono memorizzati i dati (http://NomeServer) come sito attendibile. Per farlo occorre andare (in Internet Explorer) alla voce Strumenti | Opzioni Internet | Protezione | Siti attendibili e premere il bottone Siti per accedere alla finestra di dialogo in cui si può aggiungere il sito citato in precedenza.
11.5 Costruzione di Data Access Pages contenenti oggetti.
In questo paragrafo vogliamo mostrare, per linee generali, l’uso degli oggetti quali elementi per mostrare/manipolare i dati di un database attraverso una pagina.
Per disporre oggetti su di una pagina occorre passare in visualizzazione struttura (si seleziona una pagina e si preme il bottone Struttura oppure si preme il bottone Nuovo e si seleziona visualizzazione struttura nella successiva dialog box) e quindi attivare la ToolBox con il comando Visualizza | Casella degli strumenti. Nella ToolBox potrà convenire lasciare sempre abilitato il bottone per l’autocomposizione dei controlli.
Quando si devono modificare o visualizzare le proprietà di un oggetto lo si seleziona e si sceglie Proprietà dal menù Visualizza o dal menù di scelta rapida.
12. NOVITA’.
12.1 Particolarità sulla voce Strumenti | Riferimenti della finestra di codice.
Si può usare questa voce per consentire di inserire il riferimento alla libreria “Microsoft DAO …” anziché la libreria di default “Microsoft ActiveX Data Objects …” per mantenere la compatibilità con il tipo di progetti VBA descritti in precedenza (paragrafo 7.4).
12.2 Il tipo di campo “collegamento ipertestuale”.
Con il tipo di campo “collegamento ipertestuale” si chiede di inserire un campo (nella tabella corrente aperta in modalità struttura) che consenta l’inserimento e l’aggiornamento di stringhe di testo che rappresentano collegamenti ipertestuali (indirizzi URL). Un click su un valore di questo tipo (anche all’interno di una query o di una maschera derivata dalla tabella contenente tale campo) consente di aprire automaticamente Internet Explorer e di visualizzare la pagina (il documento) a cui il collegamento stesso fa riferimento.
12.3 Esportazione / Importazione di dati (tabelle) in formato XML.
Usando il comando File | Esporta è possibile esportare l’oggetto selezionato (di solito una tabella) in formato XML. Dopo avere dato il comando e scelto nome di file e direttorio in cui salvare i dati in formato XML viene fornita la possibilità di scegliere i parametri di salvataggio: in particolare sarà possibile decidere di salvare o meno lo schema (XSD) oltre ai dati e sarà anche possibile decidere di salvare un foglio di “presentazione” (HTML/XSL). In maniera simmetrica è possibile importare dati in formato XML (sempre che questi dati abbiano la struttura di una tabella Access) usando il comando File | Importa e scegliendo il tipo di file XML.
12.4 Conversione (upsizing) di un database Access in un database SQL Server.
Tramite opportuna opzione del menù Strumenti | Utilità database è possibile fare in modo che il corrente database Access venga esportato in un database SQL Server (nuovo o già esistente).
Fonte: www.digilander.libero.it/ballardinig
-
Fine articolo Corso Access tutto di tutto
Corso Access tutto di tutto
MICROSOFT ACCESS 97
Conoscenze di base
INDICE
Microsoft Access: un database relazionale
Creazione di un database: progettazione, definizione in Access, verifica del progetto
Oggetti base del database: tabelle, query, maschere, report
Relazioni
Cenni su macro e moduli
Manutenzione e gestione del database, impostare la sicurezza per l'accesso di più utenti
Bibliografia consigliata
Dispense a cura di Roberta Cantaroni, Enrico Cazzato, Paolo Davoli e Livio Laurora
Tutti i nomi dei prodotti citati nel libro sono marchi registrati appartenenti alle rispettive società.
Microsoft Access: un database relazionale
Un database è semplicemente un insieme di record (registrazioni) e di file (archivi) organizzati in base a uno scopo particolare.
Quando è necessario definire i dati, manipolarli e controllare l’integrita` dei dati e gli accessi contenporanei si utilizza un Database management system di tipo relazionale (RDBMS).
I dati sono conservati sotto forma di tabelle ciascuna relativa ad un argomento (es. i clienti): le colonne rappresentano un certo tipo di informazione (es. un indirizzo), le righe gli attributi di un singolo rappresentante di quell’argomento (es. un certo cliente). Una tabella rappresenta quindi una classe di informazione.
Tabella CLIENTI
Nome |
Cognome |
Indirizzo |
Numero |
Città |
CAP |
Mario |
Rossi |
Campi |
213 |
Modena |
41100 |
Paolo |
Verdi |
Vignolese |
12 |
Modena |
41100 |
....... |
|
|
|
|
|
Anche quando si usano le funzionalità di un RDBMS per estrarre informazioni da più tabelle (query o interrogazione) si ottiene qualcosa di simile ad una tabella.
Il termine relazionale nasce dal fatto che ogni record contiene informazioni in relazione ad un solo argomento e i dati su due classi di informazioni (2 tabelle) possono essere manipolato in una unica entità basata su valori di dati correlati mediante legami (relazioni).
Esistono 3 tipi di relazioni tra le tabelle: uno a molti (la piu` comune), uno a uno, molti a uno.
Inoltre Access ha un potente sistema di sviluppo di applicazioniche non obbliga la conoscenza di un linguaggio di programmazione. Mediante una semplice interfaccia grafica (autocomposizione) è possibile costruire una applicazione completa generando maschere, report e macro.
Per soddisfare richieste particolari e produrre applicazioni veramente personalizzate, gli sviluppatori hanno poi a disposizione un intero linguaggio di programmazione Microsoft Access Basic, simile a Visual Basic ma con il beneficio di un sistema completo di gestione di database relazionali.
L'architettura di MICROSOFT ACCESS

CREAZIONE DI UN DATABASE
- PROGETTAZIONE
- DEFINIZIONE IN MICROSOFT ACCESS
- MODIFICA DEL PROGETTO DEL DATABASE
PASSO 1. PROGETTAZIONE
Utilizziamo entrambi i metodi di progettazione più importanti:
p1. Progettazione top-down (guidata dai processi)
si concentra sulle funzioni e sulle operazioni che devono essere svolte
p2. Progettazione bottom-up (guidata dai dati)
Innanzitutto, un database deve essere progettato attorno ad insieme specifico di operazioni e funzioni correlate, quindi (p1) pensiamo a quello che dovrà fare per capire se ci basta un database o se ce ne occorrono due o più.
Per ogni operazione che abbiamo individuato raccogliamo tutti i dati correlati e organizziamoli in argomenti che diventeranno la base per le tabelle successive (p2)
Un esempio può essere la gestione dei noleggi di videocassette in una videoteca.
Individuiamo le operazioni che si vogliono ottenere (p1)
- Gestire l’anagrafica dei clienti
- Gestire l’elenco dei film
- Gestire le transazioni di noleggio
- Gestire le condizioni di noleggio
- Produrre un listino dei film
- Produrre un elenco delle copie di videocassette per ogni film
Il database conterrà quindi informazioni :
sui clienti
sui film
sulle videocassette
sulle transazioni di noleggio
sulle condizioni di noleggio
Come organizzare al meglio le informazioni evitando sprechi e inefficenza?
Come primo passo si può pensare di raccogliere tutte le informazioni sulle operazioni da svolgere in una unica tabella TRANSAZIONI
Per ogni richiesta di noleggio memorizziamo le informazioni seguenti in un record:
Data
Nome cliente
Indirizzo
Film
Prezzo di vendita
Genere
Costo Noleggio
PROBLEMI:
- troppi dati nella tabella – ricerche difficoltose
- informazioni ripetute (ridondanza)
- eliminando un record (eliminazione del cliente) si possono perdere informazioni su alcuni film (anomalia di aggiornamento)
- se il cliente cambia indirizzo bisogna modificare tutti i suoi record relativi (anomalia di aggiornamento)
In caso di spreco la soluzione è la NORMALIZZAZIONE dei dati che porta all' organizzazione dei dati in un gruppo di tabelle correlate con legami efficenti.
regola n.1 univocità dei campi
ogni campo in una tabella dovrebbe contenere un unico tipo di informazioni
campo Nome Rossi Aldo
campo Cognome Rossi
campo Nome Aldo
regola n. 2 Definire chiavi primarie
Ogni record di una tabella deve avere un identificatore unico o CHIAVE PRIMARIA composta da uno o più campi della tabella.
I campi candidati per diventare chiave primaria di una tabella sono detti determinanti.
Un campo X e’ determinante di un altro Y se la domanda:
“Se si conosce il valore del campo X si puo’ determinare il valore del campo Y? “
ha risposta positiva (esempio, Nome Film e Data Rilascio nella tabella Film).
Nel caso della tabella Clienti i candidati sono Cognome e Nome ma per prevedere casi di omonimia si puo’ lasciare la chiave ID scelta da Access.
regola n. 3 Dipendenza funzionale
Per ogni valore unico della chiave primaria, ci deve essere uno ed uno solo valore in ogni colonna dei dati e quel valore deve essere relativo all' argomento della tabella.
La videoteca possiede 20 copie di un film, come gestire quante copie sono state noleggiate e quante ne sono rimaste?
Aggiungiamo un ID Videocassetta alla tabella Film, ma otteniamo delle dipendenze parziali:
Inserimento 20 volte delle informazioni sul film
Errori nell’inserimento delle informazioni se fatte in tempi successivi
- Campi come Giudizio e Genere dipendono da Nome Film e Data rilascio e non da ID Videocassetta.
La regola dice quindi che i campi parzialmente dipendenti devono andare in una tabella a parte collegata alla prima da una chiave esterna.
Si crea quindi una tabella Videocassette che contenga i campi funzionalmente dipendenti e stabiliamo la relazione tra Film e Videocassette.
Una relazione è una corrispondenza tra il campo chiave primaria di una tabella A e il campo chiave esterna di una altra tabella B.
Uno a molti
Un record univoco in una tabella puo’ avere piu’ record correlati in una altra tabella.
Uno a Uno (raro)
Un record univoco in una tabella e’ unico anche nell’altra.
Molti a molti
Un record univoco in una tabella puo’ avere piu’ corrispondenze in un’altra tabella e viceversa (Clienti-Videocassette)
Per realizzare una relazione molti a molti occorre creare una nuova tabella detta tabella di congiunzione che includa dei campi con le stesse definizioni dei campi chiave primaria delle due tabelle ed impostare le relazioni Uno a molti tra ciascuna delle due tabelle e la tabella di congiunzione.
Access applica il meccanismo dell’integrità referenziale per assicurare che le relazioni trai i record delle tabelle correlate siano valide e che non vengano eliminati o modificati per errore dei dati correlati.
- Non è possibile immettere un valore nel campo chiave esterna della tabella correlata che non esiste nella chiave primaria della tabella primaria.
- Non è possibile eliminare un record da una tabella primaria, se esistono record corrispondenti in una tabella correlata.
- Non è possibile modificare un valore chiave primaria nella tabella primaria, se quel record dispone di record correlati.
PASSO 2. DEFINIZIONE IN MICROSOFT ACCESS
definire le TABELLE
interrogare il database con QUERY
definire MASCHERE per facilitare l' immissione e la visualizzazione dei dati
creare REPORT per creare una copia stampata di informazioni estratte o calcolate dai dati del database
PASSO 3. VERIFICA DEL PROGETTO DEL DATABASE
Verificare il flusso dei dati e le operazioni che svolge il database. Durante lo sviluppo ci si può accorgere che:
alcune tabelle non sono più necessarie
alcuni campi hanno un tipo di dato sbagliato
si vogliono aggiungere altre tabelle
una tabella potrebbe essere divisa in due
le chiavi non rappresentare record univoci
occorre indicizzare alcune tabelle perchè le query sono lente
si vogliono aggiungere alcune operazioni
alcune operazioni pensate all' origine non sono più considerate utili
.............
per cui occorre rivedere parte del progetto di database iniziale.
OGGETTI DI UN DATABASE ACCESS
Un database relazionale è quindi un sistema in grado di archiviare dati in formato tabellare, di definire collegamenti tra essi, di estrarre informazioni secondo modalità standard e flessibili, di fissare vincoli di integrità sui dati, di evitare ridondanze (ripetizioni) nelle archiviazioni, di definire sistemi di sicurezza nell’aggiornamento dei dati e di protezione negli accessi. Oltre alla memorizzazione dei dati, sono incluse le attività di ricerca, consultazione e modifica del materiale conservato sul supporto di memoria.
Un database non è semplicemente un Word Processor o un foglio elettronico; questi strumenti permettono infatti di memorizzare dati, di modificarli e di consultarli, ma non di correlarli tra loro in modo complesso, o di stabilire vincoli di integrità e procedure di sicurezza sui dati.
Un database relazionale fornisce gli strumenti per gestire in modo efficace grosse moli di dati che possono essere organizzate anche in modo complesso. La struttura tipica all’interno della quale vengono memorizzati i dati è la tabella: un database è in grado di gestire contemporaneamente più tabelle di dati.
All’interno di ogni database possono essere identificati sei tipi di oggetti diversi fra loro aventi, ognuno una ben precisa funzione. E’ possibile accedere a tutti gli oggetti che costituiscono il database mediante l’omonima finestra che si presenta all’utente ogni qualvolta viene aperto un file di database.

1. TABELLE : Le Tabelle sono un insieme di dati relativi ad un argomento specifico. Una tabella può ad esempio contenere dati relativi a dipendenti o progetti. I dati delle tabelle sono suddivisi in colonne (campi) e righe (record).
Ciascun campo contiene un’informazione relativa all’argomento della tabella. Ad esempio può contenere un’informazione relativa ad un dipendente, come il suo nome, o ad un progetto quale ad esempio la descrizione dello stesso.
Ciascun record contiene tutte le informazioni relative ad un dato dipendente o progetto.
E’ possibile visualizzare una tabella in due modalità: Struttura o Foglio dati.
Visualizzando una tabella con la prima modalità è possibile creare o modificare la struttura della tabella stessa. E’ possibile specificare inoltre il tipo di dati che conterrà la tabella; infatti è possibile archiviare i campi che costituiscono i record come testo, numeri e date.
Visualizzando la tabella in modalità foglio dati è invece possibile modificare o aggiungere dati alla tabella stessa.
2. QUERY : Le Query rappresentano richieste di informazioni relative ai dati.
I dati che soddisfano le richieste delle query vengono raccolti in una tabella. I dati che costituiscono la risposta alla query formano il DYNASET. Ad ogni esecuzione della query, sul dynaset saranno disponibili le informazioni aggiornate.
Microsoft Access visualizza il dynaset oppure esegue delle operazioni su di esso, quali l’eliminazione o l’aggiornamento di dati.
E’ possibile visualizzare una query in tre modalità: Struttura, Foglio dati, SQL.
La prima modalità di visualizzazione viene utilizzata per creare o modificare la struttura di una query. E’ con questo tipo di visualizzazione che è possibile effettuare una ricerca sui dati, specificando il tipo di dati desiderato ed il loro ordinamento.
La seconda modalità di visualizzazione consente invece di aggiungere, modificare o analizzare i dati (il dynaset che soddisfa la richiesta).
La terza modalità è il formato di memorizzazione interna di Access per la query, corrispondente al linguaggio SQL standard con alcune integrazioni.
3. MASCHERE : Le Maschere (Schede nelle versioni precedenti alla v.97) servono per visualizzare il contenuto di una tabella un record alla volta. Una maschera presenta i seguenti vantaggi funzionali:
EFFICIENZA: una maschera visualizza solo determinate informazioni nel modo desiderato.
SEMPLICITÀ: In una maschera di Microsoft Access si utilizzano controlli quali le caselle di testo e le caselle di controllo che sono famigliari agli utenti di Windows.
Ciò semplifica la visualizzazione e l’immissione dei dati.
VESTE GRAFICA: Una maschera può essere colorata e personalizzata modificando le dimensioni e l’aspetto di tutti i suoi componenti.
Anche le maschere possono essere visualizzate in due modalità che prendono il nome di Struttura e Maschera.
La visualizzazione struttura delle maschere consente di creare o modificare la struttura di una maschera, come si può facilmente intuire dal nome stesso.
E’ possibile aggiungere dei controlli legati ad un campo di una tabella o di una query oppure controlli quali caselle di controllo, grafici e immagini.
La visualizzazione maschera consente invece di aggiungere, modificare o analizzare i dati, accedendo alla tabella ad un record alla volta.
Le maschere possono anche essere visualizzate come Foglio dati; in questo caso i dati vengono rappresentati su righe e colonne.
Le maschere infine sono anche dotate di un’Anteprima di stampa che permette di analizzare il loro aspetto prima di eseguire la stampa su carta.
4. REPORT : I Report vengono utilizzati stampare le informazioni del data base.
Un report consente di visualizzare solo le informazioni desiderate nel modo più appropriato e raggruppare dei record su più livelli per calcolare delle medie e dei totali, esaminando contemporaneamente i valori di diversi record.
Infine i report consentono di rappresentare i dati con un accurato profilo estetico grazie alla possibilità di controllare le dimensioni e l’aspetto di tutti gli elementi del report.
Un report lo si può visualizzare come Struttura o come Anteprima di stampa. La visualizzazione della struttura consente di creare o modificare dei report. E’ possibile, con questa modalità di visualizzazione, aggiungere dei controlli legati ai campi di una tabella o di una query oppure controlli che calcolano totali o percentuali.
5. MACRO : Una Macro di Microsoft Access è un insieme di azioni, scelte tra azioni predefinite dal sistema, composte in modo da formare una sorta di semplice programma. Contrariamente al concetto di macro in altri pacchetti (es. Excel) non può essere registrato. Ciascuna azione esegue un’operazione quale l’apertura di una maschera o la stampa di un report.
Le macro vengono scritte per automatizzare operazioni comuni in modo da semplificare e velocizzare il lavoro.
Se determinate operazioni vengono eseguite con una certa frequenza, è preferibile scrivere delle macro che le eseguono automaticamente.
6. MODULI : I Moduli sono unioni di procedure e funzioni scritte in linguaggio Visual Basic per Applicazioni.
E’ possibile scrivere ed utilizzare moduli per automatizzare e personalizzare il data base in maniera molto sofisticata.
Per utilizzare i moduli di Miscrosoft Access, è necessario avere familiarità con la programmazione in linguaggio Basic o possedere le nozioni fondamentali per iniziare ad impararlo.
I moduli sono molto più efficaci delle macro anche se risultano più complessi da scrivere.
TABELLE
Di seguito è mostrata l’interfaccia grafica della finestra che permette di impostare le caratteristiche di una tabella e sono elencati i punti fondamentali da conoscere dell’oggetto tabella di Microsoft Access.

- Struttura: Serve per definirsi una tabella personalizzata; questo avviene attraverso l’impostazione di: Nome campo, Tipo dati, Descrizione.
- Tipi di campi: Ad ogni campo è possibile assegnare diversi tipi di dati, ovvero: Testo, Memo, Numerico, Data/Ora, Valuta, Contatore, Sì/No, Oggetto OLE, Autocomposizione ricerca.... Importante è ricordare che i campi dichiarati come Memo o Oggetto OLE non possono essere associati a indice. Un Oggetto OLE può essere un’immagine, un documento realizzato con Word, un foglio di elettronico realizzato con Excel o un suono; per inserire un Oggetto OLE in un campo della tabella bisogna utilizzare il comando Inserisci oggetto... contenuto nel menu Modifica presente nella visualizzazione Foglio dati della tabella. L’Autocomposizione ricerca... è una novità di Access 7.0, e consente di specificare l’elenco dei valori ammessi per quel determinato campo.
- Concetto di campo chiave e indice: Rendere un campo di una tabella chiave significa impedire che al suo interno appaiano elementi uguali; ricordare che in una relazione di tipo “1 a 1” o “1 a n” il campo coinvolto della tabella primaria deve obbligatoriamente essere definito come chiave. Se una tabella ha come chiave un solo campo questo è obbligatoriamente associato ad un indice e non è possibile assegnare valori duplicati; se un campo è associato a indice, aumenta notevolmente la velocità di ricerca ma cala la velocità di aggiornamento della tabella in caso di modifiche.
- Valore predefinito: Il valore predefinito di un campo è quel valore che appare automaticamente all’interno del campo stesso ogni qual volta viene creato un nuovo record; ovviamente l’utente può modificare questo valore se non è corretto.
- Regole di convalida di un campo: Inserimento di regole che limitano il set di valori che si possono inserire in un campo (Valido se) ed impostazione del messaggio di errore che appare se non vengono rispettata le condizioni impostate (Messaggio errore).
- Impostazione della caratteristica Richiesto: Permette di stabilire se è obbligatorio o meno inserire qualcosa nel campo trattato.
- Creazione di una maschera di input per l’inserimento di dati particolari: Tramite la caratteristica Maschera di input è possibile impostare uno schema che agevola l’utente nell’immissione di dati aventi formattazioni particolari quali le date o le ore.
- Assegnazione del titolo ad un campo: La caratteristica Etichetta permette di assegnare al campo in questione un nome che permetterà di identificarlo in modo preciso nel caso in cui si sia scelto di assegnare ai campi nomi particolarmente sintetici.
- Relazioni fra tabelle: Vedi la trattazione eseguita all’inizio.
- Importazione ed esportazione di tabelle: E’ possibile eseguire l’importazione di tabelle da un altro database realizzato con Microsoft Access, da un file di testo o da un foglio di Microsoft Excel; E’ anche possibile importare tabelle realizzate con altri database o con altri fogli elettronici. Per eseguire l’importazione di dati esterni, utilizzare la voce Carica dati esterni...àImporta... presente all’interno del menu File.
RELAZIONI TRA TABELLE
Un database relazionale fornisce all’utente la possibilità di creare delle relazioni, o collegamenti, fra le varie tabelle.
Supponiamo di avere una tabella che contiene i dati relativi ai dipendenti di una azienda:
TABELLA DIPENDENTI
Codice |
Nome |
Cognome |
Età |
Ro Ma 34 |
Mario |
Rossi |
34 |
Ve Gi 30 |
Giuseppe |
Verdi |
30 |
Ne Lu 24 |
Luisa |
Neri |
24 |
Fe Ma 27 |
Marco |
Ferrari |
27 |
Supponiamo che l’azienda si dedichi alla realizzazione di progetti; solitamente in un’azienda di questo tipo si portano avanti contemporaneamente più progetti.
Nella tabella mostrata di seguito sono memorizzati i dati sui progetti portati avanti attualmente dall’azienda; fra i dati compaiono anche i codici dei dipendenti che seguono i progetti:
TABELLA PROGETTI
Nome Progetto |
Risorse Umane |
K2 |
Ne Lu 24 |
K2 |
Ro Ma 34 |
K2 |
Ve Gi 30 |
Everest |
Ro Ma 34 |
Everest |
Ve Gi 30 |
Everest |
Ne Lu 24 |
Everest |
Fe Ma 27 |
Cimone |
Ro Ma 34 |
Cimone |
Ne Lu 24 |
Urali |
Fe Ma 34 |
Urali |
Ne Lu 24 |
Urali |
Ve Gi 30 |
Se si desidera conoscere, oltre ai dati relativi al progetto, anche quelli degli impiegati che vi lavorano, sarà necessario costruire un collegamento fra le due tabelle; il collegamento o relazione fra le tabelle Impiegati e Progetti sarà basato sui campi che contengono i codici.
|
|
|
|
|
Risorse Umane |
Nome Progetto |
|
|
|
|
|
Ne Lu 24 |
K2 |
|
|
|
|
|
Ro Ma 34 |
K2 |
|
|
|
|
|
Ve Gi 30 |
K2 |
|
|
|
|
|
Ro Ma 34 |
Everest |
|
Nome |
Cognome |
Codice |
|
Ve Gi 30 |
Everest |
|
Mario |
Rossi |
Ro Ma 34 |
|
Ne Lu 24 |
Everest |
|
Giuseppe |
Verdi |
Ve Gi 30 |
|
Fe Ma 27 |
Everest |
|
Luisa |
Neri |
Ne Lu 24 |
|
Ro Ma 34 |
Cimone |
|
Marco |
Ferrari |
Fe Ma 27 |
|
Ne Lu 24 |
Cimone |
|
|
|
|
|
Fe Ma 34 |
Urali |
|
|
|
|
|
Ne Lu 24 |
Urali |
|
|
|
|
|
Ve Gi 30 |
Urali |
Le frecce mostrano la relazione esistente fra le due tabelle; siccome ad ogni elemento della tabella Dipendenti possono corrispondere uno o più elementi della tabella Progetti, si dice che la relazione che lega le due tabelle è di tipo 1 ad N (o uno-a-molti).
Questo è il tipo di relazione che solitamente viene impiegato nella maggior parte dei casi, ma non bisogna dimenticare che esistono anche relazioni di tipo “1 a 1”, “N a 1” ed “N a M”.
Mettendo in relazione fra loro le tabelle che lo permettono si è certi di mantenere l’integrità referenziale dei dati. Vediamo un esempio.
Supponiamo che nella ditta esaminata in precedenza non lavori più il signor “Giuseppe Verdi”: il suoi dati saranno tolti pertanto dalla tabella Dipendenti. Se il signor “Giuseppe Verdi” non lavora più nella ditta, non potrà partecipare ad alcun progetto, pertanto devono essere eliminati dalla tabella Progetti tutti i record che contengono il codice del dipendente non più presente.
Se non si compie questa operazione, il nostro database non rispetterà più l’integrità referenziale in quanto la tabella Progetti assegna dei progetti ad una persona non più presente; in questo caso si dice anche che la base di dati non è più consistente.
Se le due tabelle sono poste in relazione fra loro invece, l’eliminazione del signor “Giuseppe Verdi” dalla tabella Dipendenti, provocherà l’automatica eliminazione di tutti i record della tabella Progetti, in cui il codice del signor “Verdi” appare.
Per mantenere l’integrità referenziale, alcuni database impediscono semplicemente di eliminare o modificare i record collegati ad altre tabelle.
Così facendo si è certi di mantenere la consistenza della base di dati.
Per stabilire una relazione fra due tabelle è possibile utilizzare le voce Relazioni del menu Strumenti oppure premere il pulsante che si trova sulla toolbar:
.
Scelto il modo con cui creare la relazione, appare all’utente una finestra che permette di indicare le tabelle coinvolte nella relazione che si vuole impostare:

Selezioniamo in sequenza le due tabelle, premendo il pulsante Aggiungi.
Lo schema delle due tabelle viene riportato all’interno di una nuova finestra nella quale noi possiamo creare le relazioni che desideriamo esistano fra i due oggetti selezionati:

Per creare una relazione fra i campi delle due tabelle sarà sufficiente trascinare un campo della prima tabella all’interno della seconda, in corrispondenza del campo che si vuole mettere in relazione.
L’avvenuta creazione della relazione fra i due campi sarà testimoniata dalla presenza di una linea che collega i campi interessati.

Al momento della creazione del collegamento (detto anche Join) appare una finestra che permette di specificare alcune caratteristiche della collegamento stesso.
Di seguito è mostrato l’aspetto della finestra che si mostra all’utente:
Nella parte alta della finestra sono messi in evidenza i campi delle due tabelle coinvolti nella relazione che è stata creata.
Il check box denominato Applica integrità referenziale, consente di mantenere la consistenza dei dati memorizzati nelle due tabelle collegate.
Per poter applicare l’integrità referenziale è necessario che il campo della prima tabella usato per creare la relazione sia definito come chiave primaria; pertanto il Codice deve essere la chiave primaria della tabella Dipendente.
Ora grazie all’integrità referenziale non sarà più possibile immettere, all’interno della tabella progetti un individuo che non sia stato registrato nella tabella Dipendenti. Se ciò fosse possibile verrebbe violata l’integrità referenziale e la base di dati non sarebbe più consistente.
Se si abilita l’integrità referenziale, diventano attive altre due opzioni chiamate rispettivamente:
- Aggiorna campi correlati a catena
- Elimina record correlati a catena
L’abilitazione della prima opzione consente di riportare nella tabella correlata (nel nostro caso Progetti) eventuali modifiche eseguite sui dati contenuti nel campo utilizzato per la relazione della tabella primaria (Dipendenti).
L’abilitazione della seconda opzione consente di cancellare tutti i record della tabella correlata (Progetti) che contengono lo stesso codice memorizzato nel record che è stato eliminato nella tabella primaria (Dipendenti).
Se le due opzioni sono disabilitate non è possibile modificare il campo utilizzato nella relazione dalla tabella primaria (nel caso del nostro esempio Codice) e non è neppure possibile eliminare un record da tale tabella se è collegato a qualche record della tabella correlata.
Sempre nella finestra che stiamo esaminando è possibile vedere quale tipo di relazione è stata applicata fra le due tabelle; nel nostro specifico caso la relazione è di tipo Uno a molti in quanto il campo della tabella correlata coinvolto nella relazione non è chiave: potendo esistere più elementi uguali all’interno di questo campo, ad un record della tabella primaria si potranno fare corrispondere N o molti record della tabella secondaria.
Se i campi coinvolti nella relazione fossero entrambi chiave, la relazione sarebbe stata di tipo Uno a Uno.
Il pulsante Tipo join... consente di specificare quale dei tre tipi di Join si vuole utilizzare quando le due tabelle vengono impiegate all’interno di una query (interrogazione della base di dati).
- Equijoin: Collegando con un equijoin due tabelle, verranno restituiti, dalla query che coinvolge le due tabelle stesse, solamente quei record aventi il contenuto del campo collegato perfettamente uguale. Se nella tabella Progetti sono presenti codici che non esistono nella tabella Dipendenti, i record contenenti tali informazioni non saranno mostrati.
- Join Esterno (1): Tramite il primo tipo di join esterno dalla query che utilizzerà le tabelle Dipendenti e Progetti così collegate, saranno restituiti tutti i record della tabella Dipendenti, e quei record della tabella Progetti aventi il contenuto del campo collegato perfettamente uguale (per fare una prova è sufficiente aggiungere alla tabella Dipendenti un individuo a cui non è affidato alcun progetto).
- Join Esterno (2): Tramite il secondo tipo di join esterno dalla query che utilizzerà le tabelle Dipendenti e Progetti così collegate, saranno restiruiti tutti i record della tabella Progetti, e quei record della tabella Dipendenti aventi il contenuto del campo collegato perfettamente uguale (per fare una prova è sufficiente aggiungere alla tabella Progetti un lavoro eseguito da un individuo non memorizzato nella tabella Dipendenti).
QUERY
Strumento per ‘ porre una domanda’ sui dati memorizzati nelle tabelle.
I dati richiesti vengono visualizzati in un dynaset (insieme dinamico di dati).
- creazione tramite QBE – uso della griglia di struttura
- scrittura di istruzioni SQL (Structured Query Language)
- Query di selezione: è una interrogazione al database che può essere considerata come una “tabella virtuale”. Maschere e report possono agire sulle tabelle, ma anche sulle queries. Query di selezione, Query di selezione parametriche, Query di selezione che utilizzano la riga formula della griglia QBE.
Query di comando: consentono di modificare con una unica azione interi gruppi di dati delle tabelle (qui il termine query, cioè interrogazione, è usato in modo improprio). Query di creazione tabella, di accodamento, di eliminazione, di aggiornamento.
Query a campi incrociati
SQL specifico
A COSA SERVONO LE QUERY?
- Visualizzare solo alcuni campi
- Visualizzare solo alcuni record
- Ordinare i record
- Porre domande su dati memorizzati in piu’ tabelle
- Eseguire calcoli
- Creare un dynaset come fonte dati per maschere, report e altre query
- Apportare modifiche ai dati nelle tabelle
Le query si possono creare tramite
- l’Autocomposizione : consente di creare query del tipo Semplice, a Campi Incrociati, per la Ricerca di dati duplicati e per la Ricerca di dati non corrispondenti.
- Nuovo/Visualizzazione struttura: consente di creare una query personalizzata.
QUERY DI SELEZIONE
- Operatori nei Criteri: Query di selezione utilizzanti operatori logici OR, AND, NOT (NULL)
AND V F OR V F
V V F V V V
F F F F V F
Supponiamo che, data la tabella che contiene i nomi dei dipendenti, vogliamo conoscere tutti i dati degli individui che si chiamano “Marco”.
Di seguito è mostrata la struttura della query che ci consente di ottenere i dati desiderati:

Se non si vuole visualizzare il nome del dipendente, essendo questo il parametro di ricerca, sarà sufficiente eliminare il segno di spunta nella colonna Nome della griglia QBE.
Se si vogliono visualizzare i record risultanti dall’interrogazione ordinati in modo crescente o decrescente in base al contenuto di un campo, sarà sufficiente agire sulla voce Ordinamento che appare all’interno della griglia QBE.
Se si ordina il risultato della query su più campi il funzionamento sarà il seguente: la tabella viene ordinata sul primo campo, utilizzato per l’ordinamento, che si incontra leggendo la sinistra a destra la griglia QBE.
L’ordinamento su un secondo campo ha valore solamente se alcuni elementi che compaiono nel primo campo ordinato sono uguali (cioè se il primo ordinamento è fatto su campi a valori ripetuti).
Se, oltre ai dati relativi ai dipendenti che si chiamano “Marco”, si vogliono conoscere anche quelli degli individui che si chiamano Giuseppe, possiamo agire in due modi:
- Digitare nella cella Criteri della griglia QBE l’istruzione:
“Marco” OR “Giuseppe”
2. Digitare nella cella Criteri della griglia QBE la stringa “Marco”, e nella cella Oppure “Giuseppe”. Tutte le righe disponibili nella griglia QBE al di sotto della voce Oppure servono per inserire parametri aggiuntivi di ricerca.
Consideriamo ora la struttura della seguente query:

La query mostrata sopra consente di estrarre dalla tabella Dipendenti tutti gli individui che si chiamano “Marco” o “Giuseppe”; l’ulteriore criterio applicato al campo Età permette di selezionare solo quegli individui che, oltre a chiamarsi “Giuseppe”, hanno più di 12 anni.
Questo criterio va applicato solo agli individui che si chiamano “Giuseppe”, in quanto è posto sulla stessa riga in cui vi è la condizione che consente di estrarre dalla tabella Dipendenti quelli che si chiamano “Giuseppe”.
Se, oltre ai dipendenti che si chiamano “Giuseppe” ed hanno più di 12 anni, si desiderasse estrarre quelli che si chiamano “Marco” che hanno meno di 25 anni, la struttura della query assumerebbe la seguente forma:

Come nel caso precedente, la condizione relativa all’età <27, essendo sulla stessa riga di quella che permette di selezionare i dipendenti che si chiamano “Marco”, sarà relativa solamente a questi ultimi.
Riassumendo, sulla base di quanto detto sino ad ora, è possibile affermare che:
- Inserendo un’espressione nella riga Criteri della griglia QBE ed altre espressioni nelle righe Oppure vengono selezionati tutti i record che rispettano almeno una delle condizioni immesse (la griglia QBE così utilizzata simula pertanto l’operatore logico OR).
- Inserendo più espressioni nella riga Criteri (ogni espressione ovviamente relativa ad un campo) vengono selezionati solo quei record che rispettano tutte le condizioni immesse (la griglia QBE così utilizzata simula pertanto l’operatore logico AND).
- Il terzo operatore logico, ovvero il NOT, lo si può utilizzare digitando il nome dell’operatore stesso all’interno delle righe Criteri o Oppure della griglia QBE. Se nella riga Criteri del campo Nome si digitasse l’istruzione NOT “Marco”, il risultato della query sarebbe costituito dai record che contengono le informazioni di tutti i dipendenti che non si chiamano “Marco”.
- Query di selezione parametriche
BETWEEN between 10 and 20
IN in (“aa” ; “nn”) aa or nn
LIKE
Con query di selezione parametriche si intendono quelle interrogazioni che richiedono di volta in volta all’utente il valore da ricercare nel campo specificato.
La richiesta del valore da ricercare avviene attraverso l’uso della finestra mostrata nella figura mostrata nella pagina successiva:

Il modo più semplice per creare una query di questo tipo è quello di inserire nella riga Criteri della griglia QBE, in corrispondenza del campo su cui si vuole effettuare la ricerca, la stringa che richiede all’utente il valore da trovare, inserita fra parentesi quadre.
La query che richiede il nome del dipendente si può costruire inserendo della riga Criteri del campo Nome, la stringa: [Inserisci il nome del dipendente].
La medesima query la si poteva ottenere anche con l’istruzione:
LIKE [Inserisci il nome del dipendente]
Importante è notare che l’uso dell’istruzione LIKE deve essere limitata alle query parametriche eseguite su campi di testo.
Questo tipo di query consente di fare delle ricerca abbastanza limitate, in quanto costringe l’utente ad inserire esattamente il valore che si desidera trovare (non sono pertanto ammesse digitazioni sbagliate o ricerche parziali).
Una query parametrica più elastica la si potrebbe ottenere inserendo nella riga Criteri del campo nome la seguente espressione:
LIKE [Inserisci il nome del dipendente] & “*”
La modifica dell’espressione precedente, eseguita con il parametro aggiuntivo & “*”, permette di eseguire delle ricerche di tipo parziale, ovvero offre la possibilità all’utente di digitare solamente le lettere iniziali di un nome; le ricerche di tipo parziale possono avvenire solamente con campi di tipo testo.
- Query di selezione che utilizzano la riga FORMULA della griglia QBE
Cliccando sulla voce Formule del menu Visualizza, è possibile inserire una nuova linea nella griglia QBE.
Questa nuova linea contraddistinta dal nome Formula, permette di realizzare delle query di selezione che eseguono dei calcoli sui dati presenti all’interno di ogni singolo campo della tabella.
Selezionare per trovare
Somma totale dei valori contenuti in un campo(numerico, valuta)
Media Media dei valori in un campo (numerico, valuta)
Min Il minimo valore in un campo (meno OLE e memo)
Max Il massimo valore in un campo (meno OLE e memo)
Conteggio Numero di valori in un campo (diversi da Null)
DevST Deviazione standard dei valori del campo (numerico, valuta)
Var Varianza dei valori contenuti in un campo (numerico, valuta)
Primo Primo record contenente il valore
Ultimo Ultimo record contenente il valore
Selezionare per
Raggruppamento Definire i gruppi per i quali si desidera eseguire i calcoli (raggruppa per valori uguali del campo)
Espressione Utilizzare un’espressione come criterio in un calcolo
Dove Specificare dei criteri per un campo che si sta utilizzando per definire dei raggruppamenti
Consideriamo la struttura della query mostrata nella pagina seguente:

La voce Conteggio inserita nella griglia QBE in corrispondenza della riga Formula e del campo “Codice”, consente di determinare il numero di codici inseriti nella tabella.
Siccome appare obbligatoriamente un codice per ogni dipendente, il risultato ottenuto con l’applicazione della formula sarà il numero di record contenuti nella tabella.
I tipi di calcoli che si possono eseguire sui valori di un campo mediante le formule sono molteplici; ecco di seguito riassunte le operazioni che si possono eseguire, accompagnate dai tipi di dati che richiedono:
Somma, Media :Applicabili solo a campi di tipo Numerico, Data/Ora, Valuta, Contatore, Sì/No.
Val. massimo, Val. minimo :Applicabili a tutti i tipi di campi esclusi l’Oggetto OLE, e il Memo.
Il numero di valori in un campo : Applicabile a tutti i tipi di campo.
Deviazione standard, Varianza : Applicabili solo a campi di tipo Numerico, Data/Ora, Valuta, Contatore, Sì/No. La varianza è il quadrato della deviazione standard.
Il primo valore di un campo : Applicabile a tutti i tipi di campo.
L’ultimo valore di un campo : Applicabile a tutti i tipi di campo.
Nella cella Formula appaiono anche le voci: Raggruppamento, Dove e Espressione.
Il Raggruppamento, serve per riunire tutti i valori uguali presenti all’interno di uno stesso campo; per comprendere maglio come funziona il raggruppamento consideriamo la tabella Vendite.
Tabella VENDITE
Nome prodotto |
Quantità |
Prodotto A |
23 |
Prodotto B |
1 |
Prodotto D |
15 |
Prodotto B |
16 |
Prodotto C |
87 |
Prodotto E |
13 |
Prodotto B |
3 |
Prodotto D |
9 |
Prodotto D |
14 |
Prodotto A |
9 |
Prodotto A |
12 |
Prodotto C |
11 |
Prodotto D |
77 |
Eseguendo una query che raggruppa i valori uguali del campo “Nome prodotto”, si otterrà come risultato la tabella mostrata di seguito:
Tabella risultato Query
Nome prodotto |
Prodotto A |
Prodotto B |
Prodotto D |
Prodotto C |
Prodotto E |
Il risultato ottenuto raggruppando tutti i valori uguali presenti all’interno del campo “Nome prodotto” ci ha permesso di avere solo l’elenco dei prodotti che sono stati venduti.
Osserviamo ora quest’altro esempio di query:

La query mostrata nella pagina precedente agisce sulla tabella Vendite, considerata in prima; per determinare la quantità di ogni prodotto che è stata complessivamente venduta è necessario con il comando Raggruppamento, riunire tutti quei record contraddistinti dallo stesso nome del prodotto.
Inserendo poi il comando Somma in corrispondenza della colonna Quantità della griglia QBE si indicherà di calcolare la somma dei record che sono stati raggruppati in base al campo “Nome prodotto”.
Sui gruppi di record che si ottengono con il comando Raggruppamento, è possibile eseguire tutte le operazioni viste in precedenza, ovvero:
Somma e Media calcolate sui valori, del campo selezionato, presenti all’interno di ogni gruppo di record.
Valore massimo, Valore minimo calcolate sui valori, del campo selezionato, presenti all’interno di ogni gruppo di record.
Il numero di valori in un campo : Rappresenta il numero di valori, del campo selezionato, di ogni gruppo di record.
Deviazione standard, Varianza calcolate sui valori, del campo selezionato, presenti all’interno di ogni gruppo di record.
Il primo valore di un campo : E’ il primo valore, del campo selezionato, che si trova in ogni gruppo di record.
L’ultimo valore di un campo : E’ l’ultimo valore, del campo selezionato, che si trova in ogni gruppo di record.
La voce Dove, presente sempre all’interno della cella Formula della griglia QBE, permette di limitare i record prima di applicare la formula; consideriamo il seguente esempio:

Il comando Dove presente nella griglia QBE in corrispondenza della riga Formula e del campo Quantità, consente di limitare i record della tabella Vendite solamente a quelli in cui compare una quantità di merce venduta superiore a 10.
Non è mai possibile visualizzare un campo in cui appare il comando Dove.
Solamente dopo che il numero dei record della tabella è stato limitato dal comando Dove, viene applicato il raggruppamento sul campo “Nome prodotto”, e viene calcolata la somma dei valori del campo “Quantità” raggruppati.
Infine la voce “Espressione” consente all’utente di creare un’espressione non presente tra quelle che compaiono nella list box della riga Formula.
Per crearsi un’espressione personalizzata, basta inserire nella riga Formula della griglia QBE la voce Espressione e digitare la nuova formula nella riga Campo sempre contenuta all’interno della griglia QBE; nell’esempio mostrato sotto, la nuova espressione creata, consente di determinare il doppio della somma dei valori del campo “Quantità” raggruppati in base al valore del campo “Nome prodotto”

QUERY DI COMANDO
A differenza della query di selezione, le query di comando consentono di apportare delle modifiche ai dati contenuti nel nostro database:
Query di creazione tabella: inserisce il risultato della query in una nuova tabella.
Query di aggiornamento: aggiorna il valore dei campi della tabella di partenza in base alle istruzioni della query
Query di accodamento: accoda i campi dei record risultanti dall’elaborazione della query ai campi di una tabella già esistente; i campi dovranno essere dichiarati allo stesso modo.
Query di eliminazione: elimina dalla tabella i record selezionati mediante le istruzioni della query.
QUERY A CAMPI INCROCIATI
Query a campi incrociati: la query a campi incrociati non è altro che una query di selezione che consente di rappresentare i record con un differente lay-out.
Per comprendere esattamente come funzionano le query a campi incrociati, consideriamo il seguente esempio:

Il valori contenuti nel campo “Nome progetto” saranno utilizzati per nominare le righe della struttura a tabella che si ottiene con la query a campi incrociati.
In modo del tutto analogo i valori del campo “Risorse umane” saranno utilizzati per nominare le colonne della tabella che si ottiene con la query a campi incrociati.
La terza colonna inserita nella griglia QBE indica cosa deve essere rappresentato nella tabella che si viene a creare dall’incrocio dei valori del campo “Nome Progetto” e “Risorse Umane”. Nel nostro caso viene conteggiato quante volte un dipendente partecipa ad un progetto; questo è il risultato che si ottiene:
Risultato query a campi incrociati
Nome progetto |
Fe Marco 27 |
Ne Lu 24 |
Ro Ma 34 |
Ve Gi 30 |
Cimone |
|
1 |
1 |
|
Everest |
1 |
1 |
1 |
1 |
K2 |
|
1 |
1 |
1 |
Urali |
1 |
1 |
|
1 |
SQL SPECIFICO
La vista SQL che offre all’utente la possibilità di creare una query con il linguaggio creato per la gestione dei database; è inoltre possibile vedere la traduzione SQL dell’interrogazione creata mediante gli strumenti della griglia QBE.
MASCHERE
Le maschere non sono altro che schede che agevolano l’utente nell’accesso ai dati del data base. Infatti tramite questo oggetto, la struttura della base di dati diventa completamente trasparente all’utente, il quale dovrà solamente “dialogare” con una finestra spesso molto intuitiva.
Inoltre la possibilità di inserire all’interno delle maschere, pulsanti, listbox e check box permette di automatizzare le operazioni che l’utente deve svolgere più di frequente.
Come per gli altri oggetti di Access, per creare una maschera si può ricorrere all’autocomposizione, oppure è possibile costruirsi personalmente la maschra desiderata.
Solitamente, si utilizza sempre l’autocomposizione, in quanto fornisce idee di base che con poche modifiche si adattano alle necessità del caso; partire da una maschera completamente vuota comporta al programmatore, oltre allo sforzo necessario per impostare i vari comandi, la necessità di pensare uno stile sul quale sviluppare la maschera.
- Utilizzo dell’ Autocomposizione maschera
La prima autocomposizione che consideriamo è quella chiamata semplicemente: Autocomposizione Maschera.
Il primo passo dell’autocomposizione che porta alla creazione di una maschera richiede quali campi della tabella o query di origine si vogliono visualizzare nella maschera; infatti è a discrezione del programmatore fare apparire sulla maschera tutti o solo determinati i campi della tabella o query di origine.
Se, ad esempio, si realizza una maschera per l’immissione dati associata ad una tabella che contiene un campo calcolato, sarà perfettamente inutile visualizzare tale campo.
La nuova versione di Microsoft Access consente di inserire campi provenienti da tabelle o query differenti: pertanto ad una maschera è possibile associare più tabelle o query, cosa questa non possibile in precedenza.
Nota: Per poter inserire in una stessa maschera campi provenienti da tabelle o query diverse è necessario che quest’ultime siano messe in relazione fra di loro.
La scelta delle tabelle, delle query e dei relativi campi da inserire nella maschera la si effettua mediante la finestra mostrata di seguito.

Effettuata questa prima scelta viene richiesto quale lay-out dare alla maschera: la scelta è limitata alle voci A colonne, Tabellare, Foglio dati; grazie all’anteprima presente sulla finestra che permette di effettuare questa scelta si può facilmente vedere quale sarà l’aspetto che la nostra maschera assumerà.
Successivamente viene richiesto quale stile si desidera utilizzare per le Caselle di testo presenti all’interno della maschera; con Caselle di testo si indicano quegli spazi sulla maschera riservati per l’immissione, la visualizzazione e l’aggiornamento dei valori contenuti nei campi della tabella associata alla maschera stessa.
Di seguito è mostrata la finestra che permette di indicare lo stile da applicare alla maschera:
Anche per quanto riguarda gli stili delle caselle di testo è possibile vederne un’accurata anteprima nella finestra che permette di eseguirne le scelta.
Operata questa scelta, la pressione del tasto Successivo permette di accedere alla finestra che richiede le ultime informazioni all’utente riguardanti la maschera che sta creando.
Ecco come si presenta quest’ultima finestra:

La prima informazione richiesta riguarda il Titolo della maschera; con titolo della maschera si intende il nome che sarà visualizzato nella parte alta della maschera. Il titolo della maschera non è pertanto il nome della maschera all’interno della base di dati.
Altra informazione che viene richiesta riguarda la modalità di apertura della maschera; infatti, è possibile visualizzare direttamente la maschera, oppure consultare la struttura della maschera stessa per apportare alcune modifiche.
L’ultima possibilità che viene offerta all’interno di questa finestra è quella di aprire, assieme alla maschera, o alla struttura della stessa, le schede guida che assistono l’utente nel lavoro che sta svolgendo.
Esistono schede guide specifiche per la gestione dei dati (visibili se la maschera viene direttamente aperta), e per la modifica della struttura (visibili se la maschera viene aperta in modalità struttura).
- Cos’è l’autocomposizione “A colonna”
Tramite l’autocomposizione A colonna si crea una maschera nella quale, i campi della tabella o della query associata, sono rappresentati da caselle di testo poste l’una sotto all’altra; questa autocomposizione non richiede alcuna informazione all’utente, al di fuori della tabelle o query da associare alla maschera.
- Cos’è l’autocomposizione “Tabulare”
La maschera di tipo Tabulare prevede che le caselle di testo che rappresentano i campi della tabella o della query associata alla maschera siano poste l’una a fianco dell’altra.
Praticamente ogni riga contiene tutti i dati relativi ad un record della tabella.
Il numero di righe corrisponde al numero di record della tabella associata, pertanto la struttura tabellare non fa altro che riproporre con una grafica diversa il contenuto della tabella associata stessa; questa autocomposizione non richiede alcuna informazione all’utente, al di fuori della tabelle o query da associare alla maschera.
- Cos’è l’autocomposizione “Foglio dati”
- Tramite l’autocomposizione Foglio dati è possibile creare una maschera che ripropone il medesimo layout delle tabelle; questa autocomposizione non richiede alcuna informazione all’utente, al di fuori della tabelle o query da associare alla maschera.
- Cos’è l’autocomposizione “Grafico”
Tramite l’autocomposizione Grafico è possibile creare un grafico basato sui dati contenuti nella tabella o query associata alla maschera.
L’unico problema riscontrabile nella creazione di un grafico basato sui dati di una tabella potrebbe derivare dalla dichiarazione dei campi che si vogliono utilizzare per il grafico stesso.
All’utente viene infatti richiesto di inserire i “campi che contengono i dati”; con “campi che contengono i dati”, si intendono tutti i campi che si vogliono rappresentare su grafico, indipendentemente da quello che sarà il loro posizionamento sul grafico stesso (asse X o Y).
Di seguito è mostrata la finestra che richiede all’utente i dati sopra citati:

- Cos’è l’autocomposizione “Tabella pivot”
Le spiegazioni riguardanti la Tabella pivot si trovano sulla prima finestra che si presenta avviando l’autocomposizione:

- Le proprietà delle maschere
Ogni oggetto inserito all’interno delle maschere è dotato di proprietà che devono essere correttamente impostate per far sì che tale elemento si comporti secondo le nostre aspettative.
Anche le maschere hanno delle proprietà che devono essere impostate dall’utente; per accedere alle proprietà delle maschere esistono 3 metodi diversi:
A) cliccando due volte in una zona vuota della finestra “Struttura maschera” (la zona in cui non compare la griglia).
B) cliccando con il tasto destro del mouse in una zona vuota della finestra e selezionando dal menu a tendina che appare la voce Proprietà.
C) cliccando in una zona vuota della finestra e premendo successivamente il pulsante Proprietà presente sulla toolbar
.
Di seguito sono elencate le principali proprietà dell’oggetto maschera.
- Origine record: nome della tabella o query associata alla maschera
- Filtro: Filtro caricato in contemporanea con la maschera, che permette di selezionare i record da visualizzare
- Ordina per: Elenco dei campi su cui viene eseguito l’ordinamento; questo è fatto in modo automatico ogni qualvolta una maschera viene aperta
- Consenti filtri: Permette o meno l’utilizzo dei filtri sui record che vengono visualizzati dalla maschera
- Etichetta: nome della finestra che conterrà la maschera
- Visualizzazione predefinita: i tipi di visualizzazioni possibili per una maschera sono 3: Maschera singola fa sì che venga visualizzato un record alla volta; Maschera continue consente di associare un corpo maschera ad ogni record della tabella o query associata; Foglio dati mostra i record che sono associati alla maschera.
- Visualizzazione consentita: le visualizzazioni possibili di una maschera sono 2: Maschera o Foglio dati. Questa proprietà permette di scegliere una delle due modalità di visualizzazione, oppure, grazie alla voce Entrambe consente all’utente di passare dall’una all’altra durante l’utilizzo della maschera stessa.
- Consenti modifiche: Permette di modificare o meno i campi visualizzati sulla maschera
- Consenti eliminazioni: Permette di eliminare record della tabella o query associata alla maschera.
- Consenti aggiute: Consente di aggiungere record alla tabella o query associata alla maschera.
- Immissione dati: Se impostata a Sì questa proprietà visualizza sulla maschera solamente un record vuoto; in questo modo all’utente viene inibita la modifica dei dati già registrati, mentre è possibile inserire dei nuovi record.
- Tipo RecordSet: se impostato a Dynaset viene inibita la modifica dei campi visualizzati nella maschera collegati ad altre tabelle mediante relazioni di tipo 1 ad n. Questo serve per mantenere la considenza dei dati del database. Se la proprietà considerata viene impostata come Dynaset (Aggiornamenti non coerenti) sarà consentita la modifica di qualsiasi campo della maschera. Infine l’impostazione Snapshot impedisce la modifica di qualsiasi campo della tabella o query di origine.
- Blocco record: impostando questa proprietà con Nessun blocco più utenti possono modificare i record della tabella associata alla maschera; all’utente che apporterà l’ultima modifica apparirà un messaggio in cui viene richiesto se aggiornare i dati con le variazioni apportate. Se si utilizza invece l’impostazione Tutti i record, il blocco riguarderà ogni record della tabella associata alla maschera, pertanto gli utenti non potranno fare altro che leggere i dati. Infine con Record modificati, è possibile bloccare un record non appena un utente decide di fare una modifica su si esso: questo impedirà ad altri utenti la modifica contemporanea di tale record.
- Barra menu: questa proprietà mette a disposizione una strumento per creare una barra dei menu per la finestra che contiene la maschera.
- Barre scorrimento: permette di scegliere se visualizzare o meno le barre di scorrimento all’interno della finestra che contiene la maschera.
- Selettori record: abilita o meno la visualizzazione dei selettori record. I selettori record non sono altro che rettangoli, posti alla sinistra della maschera, che indicano, tramite una freccia qual è il record attivo; i selettori record servono solamente se la Visualizzazione predefinita è impostata con Maschere continue.
- Pulsanti spostamento: permette di abilitare o meno la visualizzazione dei pulsanti di trasferimento. I pulsanti di trasferimento sono 4 tasti posti alla base della finestra che contiene la maschera e consentono di passare di record in record o raggiungere il primo e l’ultimo record della tabella associata alla maschera.
- Linee di divisione: questa proprietà consente di stabilire se visualizzare o meno le linee nere che suddividono le diverse sezioni di una maschera.
- Dimensioni automatiche: se impostata a Sì, questa proprietà fa consente il ridimensionamento automatico della finestra che contiene la maschera, al fine di visualizzare tutti gli oggetti presenti sulla stessa. Se il settaggio è No, bisogna salvare la dimensione della maschera mentre la si costruisce.
- Centratura automatica: assegnando Sì a questa proprietà, la finestra che contiene la maschera sarà visualizzata esattamente al centro dello schermo.
- Popup: con popup si indica una maschera che rimane sempre in primo piano.
- A scelta obbligatoria: se una maschera è a scelta obbligatoria, rimane attiva finche non è chiusa; Questo impedisce di lavorare con altre maschera.
- Stile bordo: permette di scegliere lo stile del bordo della finestra che conterrà la maschera; la scelta è fra i seguenti stili: Nessuno, Sottile, Dimensionabile, Dialogo.
- Casella menu di controllo, Pulsante di riduz. a icona, Pulsante di ingrandimento: queste proprietà consentono di indicare quali pulsanti delle finestre standard di Windows si vogliono visualizzare.
- Larghezza: indica la larghezza della maschera.
- Immagine: Nome del file da utilizzare come sfondo della maschera
- Tipo Immagine: permette di scegliere se l’immagine di sfondo della maschera deve essere Incorporata nel database o semplicemente deve essere costruito un Collegamento alla stessa.
- Modalità Ridimens. Immagine: mediante questa proprietà è possibile stabilirew come visualizzare l’immagine di sfondo della maschera quando queste sono di dimensioni diverse: Ritaglia, fa sì che solo una porzione dell’immagine venga visualizzata sulla maschera (questo avviene se l’immagine è più grande della maschera). Ridimensiona e Zoom adattano invece l’immagine alla maschera.
- Allineamento immagine: consente di stabilire dove sistemare l’immagine sulla maschera se la prima è più piccola delle seconda:
- Espansione immagine: permette di ricopiare l’immagine di base sulla maschera tante volte quante sono quelle necessarie per riempire l’intera superficie della maschera stessa.
- Sequenza: questa proprietà permette di stabilire la sequenza di tabulazione di una maschera, ovvero la sequenza con cui vengono abilitati i comandi presenti sulla maschera alla pressione del tasto TAB; le possibili impostazioni sono 3: Tutti i record, Record corrente e Pagina corrente. La prima opzione fa sì che, quando è abilitato l’ultimo controllo della lista di tabulazione, TAB fa passare al primo campo del record successivo. Record corrente invece fa sì che TAB, premuto quando è abilitato l’ultimo controllo della lista di tabulazione, faccia accedere al primo controllo del record corrente che si presenta nella lista di tabulazione stessa. Infine Pagina corrente consente di passare dall’ultimo controllo della lista di tabulazione al il primo controllo che si presenta nella lista di tabulazione riferita alla pagina corrente.
- Barra menu: consente di inserire o meno una barra dei menu nella maschera.
- X griglia, Y griglia: sono il numero di suddivisioni orizzontali e verticali della griglia per ogni unità (quadrato); i valori devono essere compresi fra 1 e 6.
- Caratteri stampante: impedisce o meno l’utilizzo dei caratteri stampante all’interno delle maschere.
- Stampa laser rapida: abilita o meno un sistema che velocizza la stampa su dispositivi laser.
- File guida: rappresenta il nome del file in cui sono contenute le informazioni relative al funzionamento della maschera. Per poter scrivere un file guida è necessario disporre di un editor RTF e di un compilatore di guide per Windows.
- ID argomento guida: è il numero di identificazione dell’argomento relativo alla maschera, contenuto all’interno del file guida.
- Origine tavolozza: all’interno di questa proprietà è possibile dichiarare il percorso ed il nome del file contenete la tavolozza di colori personalizzata (file in formato PAL).
- Tag: informazione opzionale per la maschera che consente di identificare la stessa senza fare ricorso al nome. Il Tag non è altro che una stringa lunga al massimo 2048 caratteri.
- Su evento: in queste proprietà è possibile indicare macro o procedure che verranno avviate nell’istante in cui avviene l’evento specificato dal nome della proprietà.
- Su timer: macro o procedure che inizia ogni qualvolta viene inviato un messaggio di timer.
- Intervallo timer: indica il tempo che trascorre fra un segnale di timer ed il successivo; l’unità di misura utilizzata è il millisecondo.
- Le proprietà delle caselle di testo
Le caselle di testo sono probabilmente l’oggetto più importante delle maschere in quanto hanno il compito di visualizzare i dati contenuti nei campi della tabella associata.
Le proprietà delle caselle di testo si ottengono utilizzando gli stessi comandi visti per le proprietà della maschera: ovviamente dovrà essere selezionata una casella di testo.
Fra le proprietà meritano una nota le seguenti:
- Nome elemento: nome con cui viene identificata la casella di testo all’interno della maschera.
- Origine elemento: nome del campo della tabella associata visualizzato all’interno della casella di testo.
- Funzione tasto INVIO: permette di assegnare al tasto INVIO la funzione di conferma del valore immesso all’interno della casella (Predefinita), oppure la funzione di ritorno a capo all’interno della casella stessa (Nuova riga del campo).
- Correzione automatica: permette o meno la correzione automatica del testo immesso nella casella.
- Visibile: a seconda di come questa proprietà è impostata è possibile vedere o meno la casella di testo; questa proprietà può risultare comoda per fare apparire le caselle di testo solamente quando servono.
- Visualizza: permette di specificare quando rendere visibile la casella di testo; le alternative sono: Sempre, Su schermo o Su stampa.
- Abilitato: consente di abilitare o meno una casella di testo. La casella di testo disabilitata presenta un’etichetta grigia e non consente modifiche o immissione di dati
- Bloccato: una casella di testo bloccata non permette l’aggiornamento dei valori del campo ad essa associato. Impostando contemporaneamente Abilitato=No e Bloccato=Sì si ottiene un’ottima soluzione per visualizzare i dati di un campo impedendone la modifica.
- Tabulazione automatica: se questa proprietà viene imposta a Sì, terminata l’immissione dei dati in una casella di testo dotata di maschera di input, viene passato il controllo alla casella di testo successiva (senza perciò premere invio).
- Seleziona con tabulazione: permette di indicare se la casella di testo rappresenta un punto di tabulazione, ovvero se è raggiungibile premendo il tasto TAB.
- Ordine spostamento: indica la posizione della casella di testo nella lista dei controlli contenuti sulla maschera questa lista sarà quella seguita per passare con il tasto Tab da un controllo all’altro. E’ anche possibile definire l’ordine di tabulazione dei controlli delle maschere accedendo alla voce Ordine tabulazione... del menu Modifica.
- Ingrandibile, Riducibile: consentono di modificare la dimensione verticale della casella di testo per far sì che, in fase di stampa, la casella di testo stessa assuma un’altezza tale da contenere esattamente i dati (niente troncamenti o linee vuote).
- Colore sfondo, Colore bordo: sono i codici dei colore utilizzati come sfondo e bordo della casella di testo. E’ possibile assegnare i colori alla casella di testo anche i comandi che si trovano sulla toolbar:
. - Aspetto: permette di determinare l’aspetto della casella di testo; la scelta è fra le seguenti opzioni: Piatto, In rilievo, Incassato, Inciso, Ombreggiato, Sottolineato.
- Colore primo piano: è il codice del colore utilizzato per il testo presente all’interno della casella. E’ possibile assegnare un colore al testo anche utilizzando la tavolozza dei colori accessibile con il pulsante:
.
Importante è notare che ad ogni casella di testo è associata un etichetta con proprietà dedicate.
Per posizionare separatamente etichetta e casella di testo bisogna portare il cursore sul quadratino più grosso fra quelli che indicano la selezione dell’oggetto.
Quando il cursore avrà assunto la forma di indice puntato allora sarà possibile trascinare separatamente casella di testo o etichetta.
![]()
- Le proprietà delle caselle combinate
Con caselle combinate si intendono quelle caselle di testo che possono contenere dei valori preimpostati, al fine di agevolare l’utente nell’inserimento dei dati.
Per inserire con semplicità una casella di testo all’interno di una maschera è fortemente consigliato l’utilizzo dell’autocomposizione.
Per utilizzare l’autocomposizione è necessario premere, sulla barra degli strumenti, il pulsante Autocomposizione controllo visibile anche qui di seguito:
.
La pressione del tasto sopraccitato, consentirà di disporre dell’autocomposizione per quegli strumenti che ne sono dotati.
L’inserimento sulla maschera della Casella combinata lo si ottiene mediante la pressione del pulsante omonimo posto sulla barra degli strumenti:
.
Nella pagina che segue è mostrata la prima finestra che si presenta all’utente quando avvia l’autocomposizione relativa alle Caselle combinate.

La prima richiesta rivolta all’utente dall’autocomposizione riguarda l’origine dei dati da inserire nella Casella combinata; infatti è possibile scegliere se inserire all’interno della casella dei valori provenienti da una tabella o query, oppure se digitare direttamente tali valori.
L’ultima opzione, permette di inserire nella casella combinata i valori provenienti da uno o più campi della tabella o query associata alla maschera, ed inoltre consente di visualizzare sulla maschera stessa quel record che contiene il valore selezionato nella casella combinata.
Nel caso venga scelta la prima alternativa, all’utente si prospetta una finestra nella quale può scegliere la tabella o la query da associare alla Casella combinata.
Ecco di seguito come si presenta la finestra per scegliere l’origine dei dati:

Eseguita la scelta della tabella o query , una seconda finestra permette di indicare quali campi devono essere utilizzati all’interno della Casella combinata; se, come dati della casella si utilizzano valori provenienti da più campi, verrà richiesto di specificarne uno: il campo prescelto sarà quello che fornirà i dati per il campo della tabella legato alla Casella combinata.
Se i valori contenuti nella Casella combinata sono invariabili, l’utente può decidere di inserirli direttamente, senza pertanto legare la casella ad una tabella o ad una query.
L’inserimento dei valori nella casella avviene mediante la finestra mostrata di seguito.
Successivamente viene richiesto di specificare se il dato scelto all’interno della caselle dovrà essere memorizzato in qualche campo della tabella associata alla maschera, oppure se tale valore verrà utilizzato per qualche altra funzione; ecco la finestra che permette di impostare tale scelta.
Fra le proprietà delle Caselle combinate, sono di particolare interesse le seguenti:
- Origine controllo: campo della tabella associata alla maschera legato alla casella combinata.
- Tipo origine riga: consente di specificare se i valori contenuti nella casella combinata provengono da una tabella o da una query, oppure sono stati digitati dall’utente.
- Origine riga: provenienza dei valori della casella combinata; se questi sono stati immessi dall’utente, all’interno della proprietà compaiono i valori digitati dall’utente.
- Numero di colonne: indica il numero di colonne che contengono i dati all’interno della casella combinata.
- Intestazione colonne: inserisce come prima riga dell’elenco dei valori disponibili per la casella combinata, i nomi dei campi da cui vengono prelevati tali dati; come nome del campo viene assunto quello presente all’interno delle tabelle o query di origine dei dati.
- Larghezza colonne: vengono indicate le larghezze di ogni colonna che contiene i dati all’interno della casella di riepilogo.
- Colonna legata: è un valore numerico che indica quale delle N colonne presenti all’interno della casella combinata contiene i valori da inserire nel campo della tabella associata alla maschera.
- Righe elenco: è un valore numerico che indica il numero di righe di dati che vengono visualizzate alla pressione del pulsante associato alla casella combinata.
- Larghezza elenco: rappresenta la larghezza complessiva dell’elenco a discesa della casella combinata.
- Testo barra di stato: è il testo che compare nella barra di stato di Access quando viene selezionata la casella di riepilogo; può essere utile per spiegare all’utente cosa deve fare con questo oggetto della maschera.
- Solo in elenco: consente di specificare se il dato da immettere nella casella combinata deve obbligatoriamente essere uno di quelli contenuti nell’elenco o meno.
- Espansione automatica: se questa proprietà viene abiitata consente di selezionare le voci contenute nell’elenco della casella combinata digitando solamente le prime lettere delle stesse; se la proprietà è disabilitata l’elenco si sposta a seconda di quanto digitato dall’utente, ma non viene selezionata alcuna voce.
- Le proprietà delle caselle di riepilogo
Le Caselle di riepilogo hanno la stessa funzione delle Caselle combinate, ovvero permettono di scegliere il valore da assegnare ad un campo fra i dati che la casella stessa contiene. Anche per le Caselle di riepilogo è opportuno sfruttare l’autocomposizione che guida l’utente nell’impostazione dei dati e nel collegamento fra la casella di riepilogo ed il campo della tabella associata alla maschera.
Il pulsante, della barra degli strumenti, che permette di inserire nella maschera una Casella di riepilogo è il seguente:
.
Le procedure per l’autocomposizione di una Casella di riepilogo sono esattamente quelle viste per la Casella combinata.
Le uniche reali differenze che intercorrono fra Casella di riepilogo e Casella combinata riguardano l’aspetto grafico ed il fatto che nella seconda non è possibile inserire un valore diverso da quelli previsti nella lista.
A livello grafico le differenze consistono nel fatto che nella Casella combinata i dati disponibili sono visualizzabili soltanto dopo la pressione del pulsante associato alla casella mentre nella Casella di riepilogo sono sempre visibili; inoltre, mentre nella prima il dato prescelto viene riportato sulla prima riga della casella, nella seconda viene semplicemente evidenziato.
La Casella di riepilogo ha le medesime proprietà di quella Combinata ad esclusione di quella chiamata Solo in elenco; la mancanza di questa proprietà è dovuta al fatto che nelle Caselle di riepilogo non è offerta all’utente la possibilità di digitare nuovi valori.
- Gruppo di opzioni
Il Gruppo di opzioni è un oggetto della maschera che può contenere diverse Caselle di controllo
, Pulsanti di opzione
o Interruttori
.
L’inserimento di un certo numero di pulsanti, caselle o interruttori all’interno di un Gruppo di opzioni fa sì che sia consentita l’attivazione solo di un singolo comando.
Anche per creare un gruppo di opzioni correttamente funzionante è consigliabile l’utilizzo dell’autocomposizione.
Il pulsante della barra degli strumenti che consente di inserire un Gruppo di opzioni nella maschera si presenta con la seguente immagine:
.
Dopo aver posizionato l’oggetto sulla maschera, l’autocomposizione del Gruppo opzioni inizia mostrando all’utente la seguente finestra:
La prima richiesta rivolta dall’autocomposizione all’utente riguarda i nomi che dovranno avere gli interruttori o le caselle di controllo poste all’interno del gruppo.
Terminato l’inserimento delle etichette degli oggetti posti all’interno del gruppo, l’autocomposizione richiede all’utente se, fra le varie opzioni, ve ne deve essere una predefinita; rendere un’opzione predefinita significa che l’interruttore o la casella di controllo ad essa associata sono normalmente attivati.
A discrezione dell’utente è anche possibile non rendere alcuna opzione predefinita.
Il passo successivo dell’autocomposizione richiede all’utente di specificare il valore che sarà archiviato nel database o memorizzato ogni qualvolta si seleziona un’opzione.
Normalmente le opzioni del gruppo hanno valori numerici progressivi, ma l’utente è libero di variare tali valori a seconda delle proprie necessità; l’unico vincolo riguarda i tipi di dati che si possono assegnare: questi, infatti, possono essere solo interi.
Di seguito è, è mostrata la finestra che permette all’utente di assegnare il valore alle opzioni del gruppo.

Conclusa l’impostazione dei valori delle varie opzioni, come per le Caselle combinate, viene richiesto se i valori stessi devono essere archiviati nel database oppure devono memorizzati per futuri utilizzi.
La finestra dell’autocomposizione che permette di eseguire questa scelta è del tutto analoga a quella utilizzata per le Caselle combinate, pertanto per osservarne la struttura è sufficiente fare riferimento all’argomento citato.
L’autocomposizione prosegue richiedendo informazioni all’utente in merito allo stile del Gruppo di opzioni e alla forma dei pulsanti che verranno inseriti nel gruppo stesso.
Di seguito è mostrata la finestra che permette all’utente di eseguire le impostazioni grafiche relative al Gruppo di opzioni:

L’autocomposizione del Gruppo di opzioni si conclude richiedendo all’utente l’etichetta da assegnare al gruppo stesso, in modo da renderlo identificabile all’interno della scheda.
REPORT
I report sono documenti esclusivamente stampabili, che possono contenere, oltre a informazioni di varia natura, i dati delle tabelle e queries.
Come per le maschere, è opportuno iniziare la progettazione di un report utilizzando l’autocomposizione; in questo modo si eviteranno le grosse perdite di tempo dovute all’impostazione delle proprietà fondamentali del report, e alla ricerca di uno stile appropriato.
Quanto ottenuto con l’autocomposizione si potrà poi sempre modificare per adattare al 100% il report alle effettive necessità dell’utente.
- Utilizzo dell’ Autocomposizione report
La prima autocomposizione che consideriamo è quella chiamata semplicemente: Autocomposizione report.
Il primo passo dell’autocomposizione che porta alla creazione di report richiede quali campi della tabella o query di origine si vogliono visualizzare nel report; infatti è a discrezione del programmatore fare apparire sul report tutti o solo determinati i campi della tabella o query di origine.
Se, ad esempio, si realizza una report associato ad una tabella che contiene un campo calcolato, sarà perfettamente inutile visualizzare tale campo.
La nuova versione di Microsoft Access consente di inserire campi provenienti da tabelle o query differenti: pertanto ad un report è possibile associare più tabelle o query, cosa questa non possibile in precedenza.
Nota: Per poter inserire in uno stesso report campi provenienti da tabelle o query diverse è necessario che quest’ultime siano messe in relazione fra di loro.
La scelta delle tabelle, delle query e dei relativi campi da inserire nel report la si effettua mediante la scheda mostrata nella pagina successiva.
Nel caso venga scelto più di un campo da visualizzare nel report, viene richiesto all’utente, se si desidera raggruppare i dati per qualche campo particolare.
Questa scelta viene effettuata impostando la finestra mostrata di seguito:
Terminata la scelta e l’impostazione dei campi da rappresentare nel report, l’autocomposizione continua richiedendo all’utente in base a quali campi ordinare i record che verranno visualizzati.
La finestra che permette di impostare i campi in base ai quali i record vengono ordinati è visibile nella figura della pagina successiva:

Un ulteriore passo dell’autocomposizione riguarda la scelta del layout da applicare al report; i layout disponibili sono 6, chiamati rispettivamente Con rientri , A blocchi, Bordato 1, Bordato 2, Allineato a sinistra 1, Allineato a sinistra 2.
In questa fase è possibile scegliere anche l’orientamento della carta, ed inoltre si può abilitare un’opzione per far sì che i campi tutti i campi del report possano essere visualizzati in una sola pagina
Nella pagina seguente è mostrato come si presenta la finestra per l’impostazione del layout del report:

Stabilito il layout da assegnare al report, l’autocomposizione prosegue richiedendo all’utente lo stile da assegnare al report stesso; anche in questo caso la scelta si basa su 6 possibili opzioni chiamate rispettivamente: Aziendale, Casual, Compatto, Formale, Grassetto e Grigio chiaro.
Tutti questi stili sono ben mostrati nell’anteprima di cui è dotata la finestra di scelta degli stili stessi.
L’autocomposizione del report termina richiedendo come al solito il titolo; anche in questo caso con titolo si indica la scritta che verrà riportata nell’intestazione del report.
Vediamo infine come si presenta la finestra che conclude l’autocomposizione del report .

- Cos’è l’autocomposizione A colonne
L’autocomposizione report chiamata “A colonne”, crea automaticamente un report in cui i campi della tabella o query associata sono rappresentati uno sotto all’altro; quest’autocomposizione non richiede alcun intervento da parte dell’utente, se non quello di specificare la tabella o la query che si vuole assegnare al report.
- Cos’è l’autocomposizione Tabulare
L’autocomposizione report chiamata “Tabulare”, crea automaticamente un report in cui i campi della tabella o query associata sono rappresentati sotto forma di tabella; quest’autocomposizione non richiede alcun intervento da parte dell’utente, se non quello di specificare la tabella o la query che si vuole assegnare al report.
- Cos’è l’autocomposizione Grafico
Tramite l’autocomposizione “Grafico” è possibile tradurre in grafico i valori contenuti in una tabella o in una query. Come per l’autocomposizione grafico vista per le maschere, l’unico problema che l’utente dovrà affrontare sarà quello della scelta dei campi da utilizzare come fonte di dati per il grafico; di seguito è mostrata la finestra dell’autocomposizione che permette di fare questa scelta:

- Cos’è l’autocomposizione Etichette postali
Il report creato con l’autocomposizione Etichette postali permette di stampare su vere e proprie etichette i dati provenienti dalla tabella o query associata.
L’autocomposizione parte richiedendo il formato delle etichette da stampare:
Successivamente vengono richieste all’utente informazioni in merito al carattere da utilizzare per la stampa delle etichette; oltre al carattere è possibile scegliere anche lo stile ed i colori dello stesso.
Terminato l’inserimento di queste informazioni di carattere generico, l’autocomposizione termina richiedendo all’utente quali sono i campi delle tabella o query associata al report che si vogliono riportare sulle etichette.
L’impostazione dei dati che si desiderano su ogni singola etichetta avviene mediante la finestra mostrata di seguito:

Cenni su macro e moduli
Lo scopo di Macro e Moduli è quello di automatizzare le funzioni del nostro database. Per gli utenti non esperti di programmazione, le Macro sono uno strumento più semplice da utilizzare, in quanto permettono di costruire piccoli programmi in modo rapido ed assistito dall’elaboratore. Hanno però lo svantaggio di una minore flessibilità e generalità. Le azioni che si possono svolgere devono essere scelte all’interno di un insieme predefinito di azioni standard. Inoltre il loro tempo di esecuzione è maggiore di quello dei moduli, secondo le indicazioni della stessa Microsoft.
I Moduli invece, permettono agli utenti che dispongono delle necessarie conoscenze di programmazione di creare funzioni avanzate, e perciò non previste nella normale libreria di azioni delle macro di Access.
Il linguaggio utilizzato per la scrittura dei Moduli è chiamato Visual Basic per Applicazioni in quanto abbina ai normali comandi del Visual Basic istruzioni proprie di Access che consentono di intervenire sulla struttura e sui dati del nostro database. L’ambiente di sviluppo delle funzioni e procedure è integrato dentro Access, e non è autonomo come in Visual Basic.
LE MACRO
Le Macro rappresentano il modo più semplice per scrivere un programma che automatizzi le funzioni del database. Sono costituite da un semplice elenco di istruzioni, denominate Azioni, che vengono eseguite una di seguito all’altra, nell’ordine in cui il programmatore le ha scritte. Per ogni Azione si apre una area nella parte inferiore della finestra Macro dove inserire gli argomenti dell’azione.

Macro composte da 1 o più azioni (Sequenza di azioni)
Gruppo di macro (Pulsante Nome macro) Si richiamano con NomeGruppoMacro.NomeMacro
Azioni condizionali (Pulsante Condizioni)
Una macro consente di:
- Aprire/chiudere qualsiasi tabella, scheda, query o report
- Stampare i dati
- Eseguire una query di selezione o di comando
- Verificare condizioni e controllare flusso delle azioni
- Ricercare e filtrare record automaticamente
- Impostare valori nei controlli
- Visualizzare messaggi informativi sulle azioni dell’utente
- Garantire la precisione e la convalida dei dati
- Impostare le proprietà di schede, report e controlli
- Automatizzare import/export di dati
- Creare un ambiente di lavoro personalizzato
- Eseguire altre applicazioni per MSDOS o per Windows
I MODULI
I Moduli rappresentano il modo più completo ed avanzato per scrivere un programma che automatizzi le funzioni del database; come già anticipato, un modulo è un insieme di dichiarazioni e routine (Function o Sub) di Visual Basic, Applications Edition memorizzate come una singola unità. Un modulo non puo’ essere eseguito, sono le singole routine ad essere richiamate da espressioni, altre routine o macro.
Esistono 2 tipi di moduli contenenti delle routine (o Function o Sub):
- Moduli di classe
Moduli standard
Moduli di classe
Sono i moduli di maschera e di report associati ad una maschera o report contenenti delle routine evento che vengono eseguite in risposta ad un evento che si verifica sulla maschera o sul report (creati quando si crea la prima routine evento per una maschera o report).
Private Sub ApriOrdini_Clik()
DoCmd.OpenForm “Ordini”
End Sub
Moduli standard
Contengono routine generali che non sono associate ad alcun altro oggetto e routine utilizzate di frequente che è possibile eseguire da un punto qualsiasi del database.
Function PrimoDelMeseSuccessivo()
PrimoDelMeseSuccessivo = DateSerial(Year(Now),Month(Now)+1,1)
End Function
Uso : Ad esempio, Valore Predefinito =PrimoDelMeseSuccessivo()
Manutenzione e gestione del database
- Compattare il database per ottimizzarne le prestazioni: da Strumenti/Utilità database
- Analizzare il database: da Strumenti/Analizza/
Tabella - alla ricerca di informazioni duplicate
Prestazioni
Analizzatore
- Come trattare più utenti
1. Dividere il database (Strumenti/Aggiunte/Divisione database)
Separa un database in modo che le sue tabelle siano memorizzate in un unico file e le maschere, query, report in un altro. Gli utenti della rete possono creare le proprie maschere, query e report per estrarre informazioni dalle tabelle ma non possono modificarle.
2. Impostare una password
Aprire il database con accesso esclusivo: vengono sconnessi gli altri utenti del database
Selezionare Strumenti/Sicurezza/Imposta password database: viene richiesta 2 volte la password
Chiudere il database e riaprirlo: viene richiesta la password
3. Impostare la sicurezza
E' possibile definire un sistema di gruppi ai quali sono assegnati gli account utente protetti da password.
Per default Access crea due gruppi di utenti: Amministratori e Utenti
Quando si avvia Access, il programma identifica l'utente con l'Amministratore e lo collega senza richiedere password dando l'autorizzazione completa a tutti gli oggetti del database, rendendolo però poco sicuro. Per rendere il database accessibile da più utenti e sicuro i passi da seguire sono quindi:
- utilizzare Amministratore di gruppi di lavoro per creare un nuovo file di informazione sul gruppo di lavoro
Access memorizza le informazioni su gruppi e utenti in un file separato che risiede nella cartella Programmi/Microsoft Office
Icona collegamento Amministratore gruppi di lavoro (file wrkgadm.exe)
Avviare il programma e creare un nuovo file (esempio, newsys.mdw)
- aggiungere un nuovo utente (esempio Nuovoadmin) appartenente al gruppo Amministratori utilizzando Strumenti/Sicurezza/Account Utenti e gruppi
- rimuovere l'utente Amministratore dal gruppo Amministratori in modo che sia membro del gruppo Utenti e assegnargli una password
- riavviare Access come nuovo utente Nuovoadmin
- creare un nuovo database vuoto e rimuovere tutti i permessi del gruppo Utenti per ogni oggetto del database
- Importare gli oggetti dal vecchio database al nuovo
- Creare gruppi e utenti se necessario e assegnare i permessi di gruppo e utente ai controlli con cui l'utente può interagire
Nota: il file di dati del gruppo di lavoro, i gruppi, gli account utente operano a livello di programma e non di singolo database, per cui gli utenti identificano se stessi quando aprono il programma Access e non il database. Il vantaggio è che gli utenti inseriscono la password una volta sola, lo svantaggio è che si potrebbe non riuscire ad aprire i database creati al di fuori del sistema di sicurezza non avendo le autorizzazioni necessarie. In questo caso occorre rientrare nel gruppo di lavoro di default (c:\windows\system\system.mdw)
E se decidiamo di eliminare tutta la sicurezza ?
Basta rifare i passi all'indietro:
- collegarsi come Nuovoadmin
- cancellare gli utenti definiti
- aggiungere l'utente Amministratore del gruppo Amministratori e cancellare la sua password
- cancellare i gruppi
- cambiare proprietario ad Amministratore per ogni tipo di oggetto escluso Database
- uscire da Access e riaccedere come Amministratore
- cancellare l'utente Nuovoadmin
Bibliografia
Quick Course Microsoft Access 97
Online Press Inc.
Mondadori Informatica
Microsoft Press
Catapult
Microsoft Access 97 Passo per Passo
Mondadori Informatica
Microsoft Press
J. Habraken
Microsoft Office User Specialist
Microsoft Access 97
Exam Guide
QUE
T. M. O'Brien, S. J. Pogge, G. E. White
Microsoft Access 97
Manuale dello sviluppatore
Mondadori Informatica
Microsoft Press
F. Scott Barker
Access 97 Manuale di Programmazione
Jackson Libri
Fonte: www.psicologia.unito.it/sviluppo
-
Fine articolo Corso Access tutto di tutto
Corso Access 2007 e 2010 tutto di tutto
Corso Access tutto di tutto
Collegamenti utili gratuiti
Disclaimer : gli obiettivi di questo sito sono il progresso delle scienze e delle arti utili in quanto pensiamo che siano molto importanti per il nostro paese i benefici sociali e culturali della libera diffusione di informazioni utili. Tutte le informazioni e le immagini contenute in questo sito vengono qui utilizzate esclusivamente a scopi didattici, conoscitivi e divulgativi. Le informazioni di medicina e salute contenute nel sito sono di natura generale ed a scopo puramente divulgativo e per questo motivo non possono sostituire in alcun caso il consiglio di un medico (ovvero un soggetto abilitato legalmente alla professione). In questo sito abbiamo fatto ogni sforzo per garantire l'accuratezza dei tools, calcolatori e delle informazioni, non possiamo dare una garanzia o essere ritenuti responsabili per eventuali errori che sono stati fatti, i testi contenuti nel sito sono di proprietà dei rispettivi autori. Se trovate un errore su questo sito o se trovate un testo o tool che possa violare le leggi vigenti in materia di diritti di autore, comunicatecelo via e-mail e noi provvederemo tempestivamente a rimuoverlo.




Età
34
30