Sei sulla pagina 1di 32

MICROSOFT ACCESS 97

AVANZATO

INDICE

Introduzione a Macro e Moduli


Le Macro
Come creare una macro
Dove eseguire una macro
Esempi di eventi che lanciano una macro
Gruppi di macro
Condizioni nelle macro
Utilizzare una macro o Visual Basic
Convertire una macro in Visual Basic
I Moduli
Moduli di classe
Moduli standard

Il motore del database: Microsoft Jet 3.5

Le query avanzate: SQL specifico (Union, Pass-through, Definizione dati)

Oggetti ed insiemi del database. Oggetti DAO (Data Access Objects)

Access ed Internet

Bibliografia

Corso avanzato di Microsoft Access

INTRODUZIONE

PASSI PER LA CREAZIONE DI UNA APPLICAZIONE IN MICROSOFT ACCESS


Progettazione
Definizione tabelle, query, maschere, report
Impostazione propriet ed espressioni
Macro e Visual Basic
DLL, OLB

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 dallelaboratore. Hanno per lo svantaggio di una minore flessibilit e generalit.
Le azioni che si possono svolgere devono essere scelte allinterno 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. Lambiente di sviluppo delle funzioni e procedure integrato dentro Access, e non autonomo come in Visual
Basic.

Pagina 2

Corso avanzato di Microsoft Access

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 allaltra,
nellordine in cui il programmatore le ha scritte.
La stesura di una macro facilitata da unapposita struttura a tabella che raccoglie tutti i comandi che sono stati inseriti
nella macro stessa; allinterno di questa struttura inoltre possibile affiancare ad Azione una breve descrizione per
commentare la funzione svolta dalla Azione stessa.

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 dellutente

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

Pagina 3

Corso avanzato di Microsoft Access

COME CREARE UNA MACRO

1.

Selezionare Macro/Nuovo dalla Finestra del Database

2.

In Visualizzazione struttura di maschera o report aprire le propriet di un controllo e lanciare in generatore di


espressioni/generazione di macro accanto a un evento associato al controllo

Per ogni Azione si apre una area nella parte inferiore della finestra Macro dove inserire gli argomenti dellazione

Pulsanti associati alle macro:

Nomi macro
Condizioni
Esegui
Inserisci righe
Elimina righe
Passo a passo (CTRL+INTERR)
Annulla
Guida

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)

ATTENZIONE:
quando si copia un controllo sulla maschera/report non vengono copiate le routine evento associate al controllo stesso.

Pagina 4

Corso avanzato di Microsoft Access

DOVE ESEGUIRE UNA MACRO


1.

Direttamente

2.

In un gruppo di macro

3.

Da unaltra macro o da una routine evento in Visual Basic (DoCmd.RunMacro Mia macro)

4.

In risposta ad un evento che si verifica in una maschera/report/controllo

5.

Da un pulsante di comando

6.

Da un nuovo pulsante della barra degli strumenti personalizzata

7.

Quando si avvia il database (macro autoexec)

E possibile assegnare come nome ad una macro una combinazione di tasti (esempio ^p per stampare un
report)

Pagina 5

Corso avanzato di Microsoft Access

ESEMPI DI EVENTI CHE LANCIANO MACRO


(Propriet/Evento di maschere/report/controlli)

Apertura e chiusura di schede e report


Su apertura
Su chiusura

Modifica dei dati


Dopo aggiornamento
Prima di aggiornare
Su eliminazione
Prima di inserire
Dopo inserimento

Rilevamento delle modifiche di focus


Su cambio record
Su doppio clic
Su attivazione / Su attivato
Su disattivazione /Su disattivato
Su corrente

Controllo dei dati


Su report vuoto
Su pagina

Pagina 6

Corso avanzato di Microsoft Access

Di seguito vengono rapidamente analizzate le funzioni e le propriet di tutti i comandi che si possono utilizzare come
Azioni delle macro.

Apertura e chiusura di tabelle, query, schede, report


Chiudi
ApriMaschera
ApriQuery
ApriReport
ApriTabella
Stampa dei dati
ApriMaschera (in Anteprima di stampa)
ApriTabella (in Anteprima di stampa)
ApriQuery (in Anteprima di stampa)
ApriReport (in Anteprima di stampa)
Stampa
Esecuzione di una query
ApriQuery
EseguiSQL
Verifica delle condizioni e controllo del flusso di azioni
AnnullaEvento
EseguiComando
Esci
EseguiCodice
EseguiMacro
ArrestaOgniMacro
ArrestaMacro
Impostazione dei valori
ImpostaAvvisi
InviaTasti
ImpostaValore
Ricerca dei dati
ApplicaFiltro
TrovaSuccessivo
TrovaRecord
VaiARecord
Costruzione di un menu personalizzato e esecuzione dei comandi di menu
AggiungiMenu
ImpostaVoceMenu
Controllo della visualizzazione e del focus
EcoSchermo
VaiAControllo
VaiAPagina
Clessidra
Ingrandisci (finestra)
Riduci a icona (finestra)
SpostaDimensiona (finestra)
Ripristina ( le dimensioni di una finestra)
SelezionaOggetto
ImpostaAvvisi
MostraOgniRecord (rimuove i filtri applicati)
Informazioni sulle azioni allutente
SegnaleAcustico
FinestraMessaggio
ImpostaAvvisi
Ridenomina, copia, importazione ed esportazione di oggetti
CopiaOggetto (nel database o in un altro)
Rinomina (oggetto)
TrasferisciDatabase (import/export da/a database)
TrasferisciFoglioCalcolo (da/a Excel)
TrasferisciTesto (da/a file di testo)
Esecuzione di unaltra applicazione per DOS o Windows
EseguiApplicazione
AggiornaOggetto: si utilizza per aggiornare la visualizzazione di un oggetto di Access (solitamente viene impiegato per
le Maschere); normalmente Access non esegue laggiornamento dello schermo mentre un processo in esecuzione,
Pagina 7

Corso avanzato di Microsoft Access

pertanto quanto visualizzato potrebbe non corrispondere alla realt delle cose. lazione AggiornaOggetto forza
laggiornamento della visualizzazione delloggetto dichiarato con i parametri chiamati Tipo oggetto e Nome oggetto; se
questi parametri non vengono impostati verr eseguito laggiornamento delloggetto attivo.

AggiungiMenu: consente di inserire un menu nella barra dei menu personalizzata che possibile inserire in ogni
maschera.
Lazione richiede tre parametri identificati dal nome:Nome menu, Nome macro menu e Testo barra di stato. Nome
menu rappresenta il nome che si vuole assegnare al menu che si sta creando, mentre Nome macro menu rappresenta
il nome del gruppo di macro **che racchiude tutte le istruzioni da eseguire a seconda della voce di menu scelta.
Infine nel parametro Testo barra di stato possibile inserire il testo che si vuole visualizzare quando il menu da noi
creato viene selezionato.

AnnullaEvento: annulla levento che ha causato lavvio della macro; se la macro stata avviata dallevento
SuEliminazione, lazione AnnullaEvento fa s che loperazione di cancellazione non venga portata a termine.

ApplicaFiltro: consente di applicare un filtro per selezionare solamente i record desiderati.


Questa azione richiede due parametri; il primo denominato Nome filtro, richiede il nome della query o del filtro salvato
come query che si vuole applicare per selezionare i record delloggetto attivo. Il secondo parametro Condizione
WHERE, da immettere in mancanza del primo, consente di dichiarare direttamente una condizione SQL per filtrare i
record.

ApriMaschera: determina lapertura di una maschera; i parametri richiesti da questo comando sono: Nome Maschera,
per indicare la maschera che si vuole aprire e Visualizzazione per stabilire in quale modalit aprire la maschera.
Seguono a questi primi parametri altri chiamati Nome Filtro e Condizione WHERE, che, come nel caso dellazione vista
in precedenza, consentono di selezionare solamente alcuni record della tabella o query associata alla maschera. Infine
attraverso la Modalit immisione dati possibile stabilire se nella maschera che ci si appresta ad aprire possibile
aggiungere, modificare o solamente leggere i record, mentre con Modalit finestra si indica come la maschera stessa
deve essere aperta.

ApriModulo: apre un modulo di programma; i parametri richiesti sono 2, ovvero il nome del modulo da aprire ed il nome
della routine che si vuole visualizzare.

ApriQuery: esegue lapertura della query specificata nel parametro Nome query; il secondo parametro, ovvero quello
chiamato Visualizzazione, consente di stabilire come aprire la query stessa (Foglio dati, Struttura, Anteprima di stampa).
Come nel caso dellazione ApriMaschera, con il parametro Modalit immisione dati possibile stabilire se i risultati
della query si possono solo leggere, oppure se possibile eseguire anche aggiunte o modifiche.

ApriReport: apre il report specificato in Nome report; il parametro Visualizzazione serve per indicare la modalit di
apertura del report, mentre i due soliti parametri Nome Filtro e Condizione WHERE possono essere impiegati per
selezionare solo alcuni record della tabella o query associata al report stesso.
ApriTabella: apre la tabella specificata attraverso il parametro Nome tabella; il parametro Visualizzazione serve per
indicare la modalit di apertura della tabella, mentre il parametro Modalit immissione dati permette di dichiarare le
operazioni che si possono eseguire sulla tabella che ci si appresta ad aprire: Aggiungi, Modifica o Solo lettura.

ArrestaMacro: arresta istantaneamente lesecuzione della macro.

Pagina 8

Corso avanzato di Microsoft Access

ArrestaOgniMacro: arresta istantaneamente lesecuzione della macro che contiene il comando e di tutte le altre macro
che si stanno eventualmente eseguendo in contemporanea.

Chiudi: chiude un qualsiasi tipo di oggetto; il tipo ed il nome delloggetto da chiudere si possono specificare attraverso i
parametri Tipo oggetto e Nome oggetto: se questi non sono impostati viene chiuso loggetto attivo. Lultimo parametro
(Salva) consente di indicare se eseguire o meno le operazioni di salvataggio che taluni oggetti richiedono alla loro
chiusura. Impostando questultimo parametro come Prompt, prima di chiudere loggetto che necessita salvataggio, viene
chiesta la conferma delloperazione allutente mediante una finestra di messaggio.

Clessidra: abilita o meno la visualizzazione della clessidra al posto del normale cursore; bene utilizzare questa azione
prima di lanciare operazioni che richiedono un elevato tempo di esecuzione. In questo modo si avverte lutente che il
computer non si bloccato ma sta semplicemente elaborando.

CopiaOggetto: copia un oggetto del database corrente, nel medesimo database con un nuovo nome oppure in uno
esterno; il tipo di oggetto da copiare ed il suo nome viene dichiarato attraverso i parametri Tipo oggetto origine e Nome
oggetto origine; i primi due parametri invece, servono per indicare leventuale database esterno in cui copiare loggetto
(Database destinazione) ed il nuovo nome da assegnare alloggetto copiato (Nuovo nome); nel caso in cui non venga
indicato il database di destinazione, la copia viene eseguita nel database corrente, pertanto consigliabile assegnare un
nome diverso alloggetto che si intende duplicare.

EcoSchermo: disabilita o meno laggiornamento dello schermo mentre una macro in esecuzione; in questo modo si
evita di mostrare i diversi passaggi che la macro stessa esegue prima di giungere al risultato finale.
Per disabilitare laggiornamento dello schermo, il parametro Eco schermo deve essere impostato a No; il secondo
parametro, Testo barra di stato, consente di scrivere una frase da fare apparire sulla barra di stato nel periodo in cui
laggiornamento dello schermo disabilitato: anche questo contribuisce a rassicurare lutente del corretto funzionamento
del computer.

EliminaOggetto: elimina loggetto del database corrente specificato dai parametri Tipo oggetto e Nome oggetto;
questa operazione di cancellazione non richiede alcuna conferma.

Esci: esce da Microsoft Access; il parametro Opzioni permette di specificare se uscire senza salvare nulla (Esci), se
uscire salvando tutto (Salva tutto), oppure se chiedere la conferma per eventuali salvataggi da effettuare (Prompt).

EseguiApplicazione: avvia lapplicazione Windows o Dos specificata nel parametro Riga di comando; in questa sede
deve essere specificato anche il percorso dellapplicazione da eseguire.

EseguiCodice: esegue la funzione specificata dal parametro Nome funzione.

EseguiMacro: permette di lanciare lesecuzione di una nuova macro; i parametri richiesti sono: Nome macro per
indicare il nome della macro che si vuole eseguire, Numero ripetizioni per stabilire il numero di volte che la macro
lanciata deve essere eseguita ed Espressione arresto che permette di scrivere una condizione che, se diventa falsa
arresta la macro che si avviata. E possibile scrivere un espressione di arresto basata sul numero di ripetizioni. Per
lanciare una macro ed eseguirla una sola volta sufficiente non impostare gli ultimi due parametri.

Pagina 9

Corso avanzato di Microsoft Access

EseguiSQL: consente di eseguire una query di comando rappresentata attraverso unespressione SQL ; tale
espressione deve essere immessa come parametro Istruzione SQL; bene notare che questa azione non consente di
eseguire query di selezione.

EseguiVoceMenu: avvia lesecuzione immediata di un comando racchiuso in uno dei menu di Microsoft Access; per
indicare il comando da eseguire i parametri sono: Barra dei menu, identifica la barra dei menu che interessa, Nome
menu, indica il menu che contiene il comando che si vuole eseguire, a sua volta dichiarato in Comando. Se il comando
che si vuole eseguire richiedesse la scelta di un sottocomando, possibile scegliere questultimo impostando lultimo
parametro chiamato appunto Sottocomando.

FinestraMessaggio: visualizza una finestra di messaggio per comunicare alcune informazioni allutente; possibile
scrivere il messaggio che si vuole fare apparire nel parametro Massaggio, mentre con il parametro Segnale acustico si
pu scegliere se far accompagnare lapparizione della finestra da un suono. Per rendere pi professionale laspetto della
finestra inoltre possibile aggiungere unicona (scelta nel parametro Tipo icona) ed assegnare alla finestra stessa un
opportuno titolo (Titolo).

ImpostaAvvisi: rispettando le impostazioni dellunico parametro Mostra Avvisi, abilita o meno la visualizzazione dei
messaggi di sistema; se la visualizzazione dei messaggi disabilitata vengono comunque mostrate quelle finestra di
messaggio che richiedono una scelta da parte dellutente.

ImpostaValore: imposta il valore di un campo o la propriet di un controllo contenuti allinterno di una maschera o di un
report. Con il parametro Elemento si dichiara il campo o il controllo che si vuole impostare, mentre con Espressione si
imposta il nuovo valore da assegnare.

ImpostaVoceMenu: permette di impostare lo stato di una voce di menu. Il primo parametro, Indice menu, rappresenta il
numero di riga della macro di creazione dei menu in cui il menu richiesto viene costruito.
Indice comando, rappresenta invece numero di riga della macro delle voci di menu in cui viene costruita la voce di
menu che si desidera impostare; segue Indice sottocomando che indica la riga della macro di creazione dei
sottocomandi di una voce di menu in cui viene costruito il sottocomando che si vuole impostare.
Infine il parametro Flag permette di indicare che impostazioni applicare alla voce di menu.

Ingrandisci: ingrandisce la finestra delloggetto attivo fino a farle occupare lintera area della finestra di Microsoft Access.

InviaOggetto: invia loggetto specificato mediante un messaggio di posta elettronica. I parametri da impostare per il
corretto funzionamento di questazione sono molteplici, vediamo di seguito la funzione di ciascuno di essi:Tipo Oggetto
e Nome Oggetto permettono di indicare il tipo ed il nome delloggetto del database che si vuole spedire; Formato
output specifica invece il formato in cui i dati vengono rappresentati e successivamente inviati: gli oggetti modulo
possono essere inviati solamente in formato Testo MS-DOS; il parametro A richiede il nome del destinatario, mentre i
parametri Cc e Ccn specificano lindirizzo di posta elettronica del destinatario stesso; i parametri Oggetto messaggio e
Testo messaggio consentono rispettivamente di specificare il contenuto del messaggio e di inserire un testo di
accompagnamento; Modifica messaggio infine, consente si visualizzare o meno, prima dellinvio del messaggio una
finestra in cui possibile modificare le impostazioni attuate con i precedenti parametri.

InviaTasti: simula la pressione di una sequenza di tasti; in questo modo possibile eseguire comandi di Microsoft
Access o di altre applicazioni che richiedono la pressione di tasti per essere avviati. Nel parametro Sequenza tasti
vengono dichiarati i tasti di cui si vuole simulare la pressione, mentre il secondo parametro (Attesa) pu fare arrestare o
Pagina 10

Corso avanzato di Microsoft Access

meno lesecuzione della macro, fintanto che non viene completamente eseguito il comando lanciato dalla sequenza di
tasti.

MostraBarraStrumenti: abilita o disabilita la visualizzazione della barra degli strumenti incorporata o personalizzata
dichiarata nel parametro Nome barra strumenti.
Il parametro Mostra permette invece di inserire o togliere dalla visualizzazione la barra degli strumenti.

MostraOgniRecord: disabilita leventuale filtro applicato alla tabella, query o maschera in modo da visualizzare tutti i
record delloggetto.

OutputSu: converte loggetto specificato dai parametri Tipo oggetto e Nome oggetto nel formato specificato dal terzo
parametro, ovvero Formato output. Con questa azione possibile convertire tabella, query, maschere e report in fogli di
Microsoft Excel, in testo con formattazione (Rich text format RTF) o in semplice testo DOS. Anche i moduli possono
essere convertiti, ma solo in formato testo MS-DOS. Il parametro File di output consente di specificare il percorso ed il
nome del file in cui loggetto di Access verr memorizzato con il suo nuovo formato; se questa informazione viene
omessa, percorso e nome del file vengono richiesti allutente al momento dellesecuzione dellazione.
Infine Avvio automatico consente di lanciare o meno, appena terminata la conversione delloggetto, unapplicazione che
in grado di visualizzare loggetto stesso nel suo nuovo formato.

RiduciAIcona: riduce alle dimensioni di unicona loggetto attualmente attivo.

RieseguiQuery: forza una nuova esecuzione di una query sul controllo delloggetto attivo specificato nel parametro
Nome controllo. Se questo parametro viene ignorato, viene rieseguita la query sullintero oggetto. Supponiamo di
visualizzare, tramite una maschera, i risultati di una query parametrica. Se lutente cambia il valore del parametro
richiesto dalla query, probabilmente i risultati che si otterranno saranno differenti dai precedenti; per poter visualizzare
sulla maschera i nuovi dati, sar necessario utilizzare lazione RieseguiQuery senza specificare alcun parametro: questo
provveder a rendere attuali i valori mostrati sullo schermo.

Rinomina: cambia il nome alloggetto specificato dai parametri Tipo oggetto e Nome precedente con il nome
dichiarato nel parametro Nuovo nome.

Ripristina: ripristina le dimensioni originali di una finestra che contiene un oggetto di Microsoft Access dopo che questa
stata ingrandita o ridotta ad icona.

Salva: salva loggetto specificato dai parametri Tipo oggetto e Nome oggetto.

SegnaleAcustico: provoca lemissione di un suono.

SelezionaOggetto: seleziona un oggetto del database specificato dai soliti parametri Tipo oggetto e Nome oggetto. Se
loggetto che si vuole selezionare non aperto, la selezione deve essere eseguita dalla finestra principale del database.
La possibilit di selezionare un oggetto non aperto dalla finestra del database consentita dallimpostazione del
parametro Da finestra database.

SpostaRidimensiona: assegna alla finestra attiva nuove coordinate e nuove dimensioni. La finestra viene spostata
indicando attraverso i parametri Da margine sinistro e Da margine superiore le nuove coordinate dellangolo superiore
sinistro della finestra stessa.
Pagina 11

Corso avanzato di Microsoft Access

I parametri Larghezza ed Altezza specificano invece le nuove dimensioni della finestra.

Stampa: stampa su carta loggetto di database attivo. Tramite il parametro Intervallo di stampa possibile scegliere se
stampare tutto, solamente quanto selezionato o un determinato intervallo di pagine; in questultimo caso lintervallo viene
indicato dai parametri Da pagina, A pagina.
Ulteriori richieste per poter avviare lazione di stampa riguardano la qualit della stampa stessa (parametro Qualit
stampa), il numero di copie che si vogliono eseguire (parametro Copie) e la possibilit di eseguire o meno la
fascicolazione delle copie (parametro Fascicola copie).

TrasferisciDatabase: questa azione permette di importare dati da un database esterno, di esportare dati o di collegare
al database corrente una tabella contenuta in un archivio esterno.
Il tipo di funzione che si vuole eseguire viene dichiarata nel primo parametro richiesto, ovvero Tipo trasferimento; il
parametro Tipo database permette invece di specificare a quale tipo di base di dati ci si vuole collegare: infatti
possibile, importare o esportare dati e collegarsi anche a database non realizzati con Microsoft Access.
La base di dati a cui si fa riferimento per lo scambio delle informazioni viene dichiarata nel parametro Nome database.
La richiesta Tipo oggetto consente di specificare la natura delloggetto che si vuole trasferire o collegare, mentre i due
parametri Origine e Destinazione individuano rispettivamente il nome delloggetto da trasferire ed il nome che gli verr
assegnato nel nuovo database.
Infine il parametro Solo struttura consente di indicare se delloggetto prescelto si vuole trasferire solo la struttura o
anche i dati che contiene.

TrasferisciFoglioCalcolo: questa azione permette di importare ed esportare dati da un foglio elettronico, e di collegare
al database corrente il contenuto di un foglio elettronico.
Il tipo di funzione che si vuole eseguire viene dichiarata nel primo parametro richiesto, ovvero Tipo trasferimento; il
parametro Tipo foglio calcolo permette invece di specificare a quale tipo di foglio elettronico si vuole fare riferimento. La
tabella utilizzata per il trasferimento dati viene dichiarata nel parametro Nome tabella, mentre la successiva richiesta
(parametro Nome file) riguarda il nome ed il percorso del file in cui memorizzato il foglio elettronico.
Il parametro Nomi campo permette di utilizzare o meno il contenuto della prima riga del foglio di calcolo come nomi dei
campi della tabella; infine il parametro Intervallo permette di specificare lintervallo di celle del foglio di lavoro da
importare o collegare.

TrasferisciTesto: questa azione permette di importare ed esportare dati da un documento di testo elettronico, e di
collegare al database corrente il contenuto di un documento di testo.
Il tipo di funzione che si vuole eseguire viene dichiarata nel primo parametro richiesto, ovvero Tipo trasferimento; il
parametro Nome file specifiche consente di dichiarare il nome di un file che contiene le specifica di importazione,
esportazione e collegamento di un file di testo. La tabella utilizzata per il trasferimento dati viene dichiarata nel parametro
Nome tabella, mentre la successiva richiesta (parametro Nome file) riguarda il nome ed il percorso del file in cui
memorizzato il documento di testo.
Il parametro Nomi campo permette di utilizzare o meno il contenuto della prima riga del documento come nomi dei
campi della tabella.

TrovaRecord: permette di trovare il record che soddisfa il criterio immesso come parametro Trova. Gli altri parametri
specificano le modalit con cui la ricerca deve essere eseguita; Dove consente di indicare dove eseguire la ricerca: le
alternative sono Campo intero, Parte del campo ed Inizio campo; Maiuscole/minuscole indica se la ricerca deve
essere case sensitive o meno, mentre Direzione indicher in verso in cui eseguire la ricerca stessa.

Pagina 12

Corso avanzato di Microsoft Access

Il parametro Come formattato permette o meno di ricercare dati che rispettano anche nella veste grafica (grassetto,
corsivo, sottolineato, ecc...) il criterio di ricerca che abbiamo impostato. Il parametro Solo campo corrente limita il
dominio di ricerca al solo campo che attualmente selezionato, mentre Trova primo fa s che venga restituito il primo
record della tabelle che rispetta il criterio di ricerca.

TrovaSuccessivo: trova il record successivo che rispetta i criteri di ricerca impostati nellazione TrovaRecord.

VaiAControllo: attiva sulla maschera il controllo specificato dal parametro Nome controllo.

VaiAPagina: attiva la pagina della maschera indicata dal parametro Numero pagina; una maschera pu essere dotata
di pi pagine se in essa sono state impostate delle interruzioni di pagina. I parametri Da margine sinistro e Da margine
superiore indicano la posizione in cui verr visualizzata la pagina rispetto al margine superiore sinistro delle finestra.
VaiARecord: sposta il puntatore che indica il record corrente al record specificato dal parametro Record; nel caso in cui
questultimo parametro venga impostato con la voce Vai A, il successivo parametro Offset permette di indicare il
numero esatto del record a cui ci si vuole trasferire.
I primi due parametri Tipo oggetto e Nome oggetto indicano la natura ed il nome delloggetto che contiene record a cui
ci si vuole spostare.

Pagina 13

Corso avanzato di Microsoft Access

GRUPPI DI MACRO
A discrezione del programmatore possibile inserire ogni macro in un oggetto diverso, oppure costruire un solo oggetto
che contiene al suo interno diverse macro; in questo secondo caso di crea un gruppo di macro.
E buona norma utilizzare gruppi di macro quando il numero delle macro stesse diventa particolarmente elevato; inoltre
raggruppando pi macro in un solo oggetto si possono facilitare le operazioni di ricerca finalizzate alla modifica delle
macro stesse.
Per scrivere pi macro in un solo oggetto, necessario premere nella visualizzazione struttura delle macro il pulsante
Nomi macro contraddistinto dalla seguente immagine:

In seguito alla pressione del pulsante, la struttura per limmissione delle azioni che costituiscono le macro si modifica ne
seguente modo:

Nella nuova colonna che viene visualizzata andranno inseriti i nomi delle macro che sono inserite allinterno del gruppo; il
nome di ogni macro dovr essere posto sulla riga corrispondente alla prima azione della macro stessa.
Per eseguire una macro contenuta in un gruppo, nellevento che la richiama dovr essere riportato il nome del gruppo
che contiene la macro seguito dal nome della macro stessa.
Ad esempio, per eseguire la seconda macro contenuta nel gruppo mostrato come esempio, levento designato dovr
richiamare Esempio.Messaggio in quanto, Esempio il nome del gruppo e Messaggio il nome della macro che si
vuole eseguire.

Pagina 14

Corso avanzato di Microsoft Access

CONDIZIONI NELLE MACRO


E possibile porre delle condizioni sullesecuzione di determinate azioni contenute nelle macro; per poter inserire tali
condizioni indispensabile premere il pulsante Condizioni che si trova sulla barra degli strumenti delle macro; ecco come
si presenta tale pulsante:

In seguito alla pressione del pulsante, la struttura per limmissione delle azioni che costituiscono le macro si modifica ne
seguente modo:

Nellesempio sopra riportata una macro che esegue azioni diverse a seconda del valore assunto dal controllo Et
probabilmente contenuto in una maschera.
I tre puntini inseriti come condizione nella seconda riga della struttura, indicano che lazione corrispondente deve
rispettare la stessa condizione dichiarata nella riga precedente.
E ovviamente possibile scrivere delle condizioni anche in gruppi di macro; in questo caso dovr essere visualizzata sia
la colonna Nomi macro che quella Condizioni.

Pagina 15

Corso avanzato di Microsoft Access

UTILIZZARE UNA MACRO .

1.

unire in modo rapido e semplice oggetti di database creati

2.

eseguire assegnazioni di tasti globali (solo macro)

3.

eseguire una o pi azioni allavvio del database

4. creare un prototipo dellapplicazione

. O VISUAL BASIC

1.

Facilitare la gestione del database dato che le routine evento sono generate all interno della definizione della
maschera o del report

2.

Creare funzioni personalizzate

3.

Visualizzare un messaggio di errore personalizzato

4.

Manipolare tutti gli oggetti del database, compreso lo stesso database

5.

Eseguire azioni nel sistema operativo, controllare lesistenza di un file,

6.

Manipolare un record alla volta (le macro utilizzano interi set di record)

7.

Passare argomenti al codice durante lesecuzione

Pagina 16

Corso avanzato di Microsoft Access

CONVERTIRE UNA MACRO IN VISUAL BASIC

Si possono convertire sia le macro di una maschera o di un report che le macro globali non allegata ad una specifica
maschera o report.

Aprire una maschera in Visualizzazione struttura


Menu Strumenti/Macro/Converti macro in Visual Basic

Viene utilizzato loggetto speciale DoCmd


Unazione viene eseguita aggiungendo alla routine un metodo delloggetto DoCmd

DoCmd.metodo [argomenti]

Non supporta i metodi corrispondenti alle seguenti azioni:

AggiungiMenu
FinestraMessaggio

usare la funzione MsgBox

EseguiApplicazione

usare la funzione Shell

EseguiCodice

Eseguire direttamente la funzione in VisualBasic

InviaTasti
ImpostaValore

usare listruzione SendKeys


Impostare direttamente il valore in VisualBasic

ArrestaOgniMacro
ArrestaMacro

Pagina 17

Corso avanzato di Microsoft Access

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.

Per richiamare una funzione obbligatorio fare precedere il nome della funzione da un simbolo di uguale (=) e fare
seguire il nome stesso da due parentesi tonde; esempio: =NomeFunzione(). I nomi delle funzioni non possono
presentare punti o spazi al loro interno.

Esistono 2 tipi di moduli contenenti delle routine (o Function o Sub):

Moduli di classe

Moduli standard

Pagina 18

Corso avanzato di Microsoft Access

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

'-----------------------------------------------------------' Comando0_Click
'
'-----------------------------------------------------------Private Sub Comando0_Click()
On Error GoTo Comando0_Click_Err

DoCmd.OpenForm "Clienti", acNormal, "", "", , acNormal

Comando0_Click_Exit:
Exit Sub

Comando0_Click_Err:
MsgBox Error$
Resume Comando0_Click_Exit

End Sub

Pagina 19

Corso avanzato di Microsoft Access

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 Caricata(ByVal strNomeMaschera As String) As Boolean


' Restituisce vero se la maschera specificata caricata in visualizzazione Struttura.

Const conStatoOggettoChiuso = 0
Const conVisualizzazioneStruttura = 0

If SysCmd(acSysCmdGetObjectState, acForm, strNomeMaschera) <> conStatoOggettoChiuso Then


If Forms(strNomeMaschera).CurrentView <> conVisualizzazioneStruttura Then
Caricata = True
End If
End If

End Function

Pagina 20

Corso avanzato di Microsoft Access

Esempi

Private Sub ApriOrdini_Clik()

DoCmd.OpenForm Ordini

End Sub

Uso:

come routine evento associata ad un controllo, a una maschera o a un report

Function PrimoDelMeseSuccessivo()

PrimoDelMeseSuccessivo = DateSerial(Year(Now),Month(Now)+1,1)

End Function

Uso :

Ad esempio, Valore Predefinito =PrimoDelMeseSuccessivo()

Pagina 21

Corso avanzato di Microsoft Access

Il motore del database: MS Jet Database Engine

Le applicazioni database Access si articolano in pi componenti software. In particolare si distinguono uno strato
contenete linterfaccia utente, che mette in grado lutilizzatore finale di interagire con lapplicazione, ed uno
strato, detto motore del database, che consente il collegamento tra lapplicazione ed i suoi dati. In tal modo si
realizza lindipendenza del database dalla particolare applicazione che vi accede. Ci rende possibile, ad
esempio, ad un foglio Excel di condividere i dati con una applicazione Access.

Il motore del database della linea Office 97 il Microsoft Jet 3.5 ed un componente condiviso da tutti i prodotti
che ne fanno parte: Word, Excel, Access.

La connessione ai dati viene fornita da Microsoft Jet attraverso una serie di servizi che sono tipici di un sistema
di gestione di un database (database management system DBMS). I servizi base di un DBMS possono essere
cos riassunti:

Definizione delle strutture e dei vincoli di integrit dei dati.


MS Jet consente di creare strutture dati ed oggetti: database, tabelle, campi, indici, relazioni, query, che
contengono i dati o che definiscono relazioni fra di essi o che ne limitino laccesso.

Archiviazione.
MS Jet archivia i dati e tutti gli oggetti del database in un unico file con estensione mdb. I dati vengono
archiviati secondo il metodo di accesso sequenziale indicizzato (Indexed Sequential Access Method, ISAM)
e fisicamente allocati in pagine della dimensione di 2 KB. Un record pu estendersi su pi pagine e utilizza
solo lo spazio necessario per larchiviazione dei dati. Ci rende ragione del fatto che record di una stessa
tabella possono avere lunghezza diversa. I campi memo e gli oggetti OLE occupano pagine distinte.

Manipolazione e reperimento dei dati.


La manipolazione ed il reperimento dei dati consente di aggiungere, cancellare ed aggiornare, o
semplicemente di visualizzare, record di una tabella. Avviene tramite due servizi: il motore delle
interrogazioni a cui vengono inviate stringhe contenenti enunciati del linguaggio SQL, e da programma
utilizzando una particolare interfaccia detta DAO (Data Access Object). In questultimo caso la modifica dei
record avviene direttamente utilizzando un oggetto di tipo Recordset.

Sicurezza.
MS Jet consente di implementare, in ambiente multiutente, politiche di sicurezza abbastanza raffinate, in
modo da proteggere i dati da utilizzi non autorizzati. possibile definire, come si visto nel corso base,
utenti e gruppi di utenti a cui vengono assegnati permessi specifici sugli oggetti del database. La gestione
della sicurezza affidata ad allapplicazione Workgroup Administrator (WrkAdm.exe).

Gestione degli accessi concorrenti.


Negli ambienti multiutente, MS Jet consente la condivisione dei dati, gestendo gli eventuali accessi
concorrenti. Nel caso pi utenti accedano allo stesso record possibile definire il livello di blocco sia a
livello di record che a livello di tabella.

Manutenzione del database.


La manutenzione del database avviene attraverso le funzioni di compattazione e ripristino del database.
MS Jet consente di ripristinare un database danneggiato e di deframmentarlo nel caso in cui, per effetto di
ripetute cancellazioni, il file risultasse, appunto, frammentato.

Pagina 22

Corso avanzato di Microsoft Access

Microsoft Jet SQL

Il MS Jet SQL un dialetto del Structured Query Language, linguaggio per le interrogazioni strutturate
compatibile con lo standard ANSI 89. Il linguaggio SQL uno standard industriale rivolto esclusivamente alla
manipolazione ed amministrazione di database relazionali. Nella sua versione standard si presenta come un
linguaggio applicativo non procedurale: non contiene n strutture di controllo per lesecuzione del codice n
costrutti che consentano la creazione di maschere di immissione dati o report, destinati alla stampa. Le parole
riservate che compongono il linguaggio possono essere cos classificate:

Comandi, sono verbi che dichiarano lazione che deve essere eseguita: SELECT;

Qualificatori, limitano linsieme di valori delle entit coinvolte nellinterrogazione: WHERE;

Clausole, modificano lazione invocata nellistruzione: ORDER BY

Operatori, consentono la comparazione di valori, vengono usati, in particolare nella creazione di


JOIN: =,<,>;

Funzioni di aggregazione, effettuano dei calcoli su un insieme di record ritornando un unico valore:
MIN().

Tutti i comandi, i qualificatori, le clausole sono parole riservate del linguaggio SQL.

Le istruzioni del linguaggio SQL vengono a loro volta raggruppate in categorie che sono indicative del tipo di
azione che viene eseguita:

Data Definition Language, consente di definire le strutture dei dati e gli indici;

Data Query Language, consente di estrarre dati da tabelle e di decidere come devono essere
presentati;

Data Manipulation Language, consente la manipolazione dei dati: linserimento, la cancellazione


laggiornamento dei record.

Pagina 23

Corso avanzato di Microsoft Access

Data Definition Language

CREATE TABLE table


(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT
multifieldindex [, ...]])
Consente la creazione di tabelle indicando i nomi dei campi, relativi tipi di dato gli indici, la chiave primaria.
Es.:
CREATE TABLE PrimaTabella (Nome TEXT, Cognome TEXT);

CREATE [ UNIQUE ] INDEX index


ON table (field [ASC|DESC][, field [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
Consente la creazione di indici, in una tabella, anche su campi multipli.
Es.:
CREATE INDEX NuovoIndice ON PrimaTabella (Cognome,Nome);

DROP {TABLE table | INDEX index ON table}


Consente la cancellazione di tabelle o di indici reletivi a tabelle.
Es.:
DROP TABLE PrimaTabella

Pagina 24

Corso avanzato di Microsoft Access

Data Query Language

Di seguito si danno alcuni esempi di interrogazione di un database, utilizzando i costrutti DQL. Le tabelle
utilizzate nelle interrogazioni sono quelle di Nothwind, database di esempio incluso in Access.

Selezione di campi da una singola tabella:


SELECT clienti.contatto, clienti.indirizzo from clienti;

Assegnazione di un alias:
SELECT clienti.contatto, clienti.indirizzo AS via from clienti;

Impostare criteri di selezione con il qualificatore WHERE:


SELECT clienti.contatto, clienti.indirizzo AS Via, clienti.paese from clienti WHERE clienti.paese='USA';

Impostare criteri di selezione mediante corrispondenze parziali di stringhe (operatore LIKE):


SELECT clienti.contatto, clienti.indirizzo from clienti WHERE clienti.contatto LIKE 'C*';

Selezione di record distinti (DISTINCTROW):


SELECT DISTINCTROW clienti.paese from clienti;

Selezione di valori distinti di campi (DISTINCT):


SELECT DISTINCT clienti.paese from clienti;

Selezione con sottoquery annidate (IN):


SELECT prodotti.nomeprodotto from prodotti WHERE prodotti.idfornitore IN
(SELECT IDFornitore from fornitori WHERE NomeSociet='Exotic Liquids');
Ordinamento del set dei risultati (ORDER BY):
SELECT clienti.contatto, clienti.indirizzo from clienti ORDER BY contatto ASC;

Funzioni di aggregazione. MS Jet supporta le seguenti funzioni di aggregazione:


COUNT, SUM, AVG, MAX, MIN
SELECT sum(prodotti.prezzounitario) AS Totale FROM Prodotti;

Pagina 25

Corso avanzato di Microsoft Access

Raggrupamento di record: (GROUP BY)


SELECT COUNT(clienti.contatto) AS NumClienti FROM clienti GROUP BY clienti.paese;

Raggrupamento di record con criteri di selezione: (HAVING)


SELECT COUNT(clienti.contatto) AS NumClienti FROM clienti GROUP BY clienti.paese HAVING
COUNT(clienti.contatto) > 5;

Selezionare campi appartenenti a pi tabelle


Il collegamento fra due o pi tabelle si ottiene dichiarando le coppie di campi che realizzano il join ed il tipo di
confronto che deve essere effettuato fra di essi.

Selezione da pi tabelle collegate con il qualificatore WHERE (Join implicito)


SELECT Prodotti.NomeProdotto, Prodotti.PrezzoUnitario, Fornitori.NomeSociet
FROM Prodotti, Fornitori
WHERE Prodotti.IDFornitore = Fornitori.IDFornitore ;

Selezione da pi tabelle collegate con un Join esplicito (INNER JOIN)


SELECT Prodotti.NomeProdotto, Prodotti.PrezzoUnitario, Fornitori.NomeSociet
FROM Prodotti
INNER JOIN Fornitori ON Prodotti.IDFornitore = Fornitori.IDFornitore;

Le clausole LEFT, (RIGHT) OUTER JOIN rendono disponibili i record che non hanno corrispondenza
nella tabella collegata indicata a sinistra (LEFT) o a destra (RIGHT).

Vi sono casi in cui necessario esprimere la condizione di join con operatori di confronto diversi da quello di
uguaglianza, normalmente usato. Questi collegamenti vengono detti Join non equi.
Unione di due o pi selezioni di record da tabelle aventi i medesimi campi.
SELECT Citt, NomeSociet, Contatto, "Clienti" AS [Relazione]
FROM Clienti
UNION
SELECT Citt, NomeSociet, Contatto, "Fornitori"
FROM Fornitori
ORDER BY Citt, NomeSociet;

Pagina 26

Corso avanzato di Microsoft Access

Data Manipulation Language

Aggiornamento dei valori dei campi per insiemi di record:


UPDATE Clienti
SET Clienti.Zona = 'AS'
WHERE Clienti.Zona = 'SP';

Cancellazione di insiemi di record


DELETE *
FROM Clienti
WHERE Clienti.Zona = 'SP';

Inserimento di record e caricamento dei valori dei campi:


INSERT INTO Clienti (Contatto)
VALUES (Massimo Severo Giannini);

Pagina 27

Corso avanzato di Microsoft Access

OGGETTI E INSIEMI di MICROSOFT ACCESS

Applications

applicazione di access attiva

Forms

maschere aperte
Controls

Reports

controlli di maschere
reports aperti e sottoreports

Controls
Modules

controlli di report
modulo di maschera/report

Screen

visualizzazione su schermo

DoCmd

oggetto speciale per eseguire una azione di macro

Si fa riferimento ad un oggetto appartenente ad un insieme in 3 modi diversi:

identificatore![nomeoggetto]

Forms![Impiegati]

identificatore(nomeoggetto)

Forms(Impiegati)

identificatore(indice)

Forms(0)

(ad ogni maschera aperta e associato un numero crescente a partire da 0)

Si fa riferimento ad una propriet di un oggetto:


oggetto.propriet

Forms![Mia].Caption = Now
Me![Cliente].Visible = False

Pagina 28

Corso avanzato di Microsoft Access

OGGETTI DAO (Data Access Objects)

Oggetti per lesecuzione delle operazioni di gestione dei dati di unapplicazione, quali tabelle, query, relazioni e indici.
E possibile scrivere routine che creano, eliminano e modificano in modo dinamico dati ed oggetti, facendo riferimento a
dati ed oggetti direttamente nel codice oppure dichiarando variabili di oggetto che li rappresentino.

Insiemi Oggetti Descrizione


--------------------------------------------------------------------------------------------Databases
Fields

Field

Database

Database aperto

Colonna che fa parte di una tabella, di una query,di un indice,


di una relazione o di un set di record

Indexes Index

Ordinamento e univocit predefiniti dei valori di una tabella. Properties Property Propriet interna al

sistema o definita dallutente


QueryDefs

QueryDef

Definizione di query salvata

Recordsets

Recordset

Record di una tabella base o di una query

Relations

Relation Relazione tra campi di tabelle e query.

TableDefs

TableDef

Definizione di tabella salvata.

Ad esempio,
un oggetto Database possiede un insieme Recordsets (tutti i Recordset aperti). Un oggetto Recordset pu essere ad
esempio una tabella o un dynaset.
Il metodo OpenRecordSet accetta una stringa SQL o un nome QueyDef (query memorizzata) come argomento di origine
dati: possiede a sua volta propriet e metodi predefiniti con cui sfogliare e modificare i dati.

Pagina 29

Corso avanzato di Microsoft Access

Sub CreaTabella ()

' Dichiara variabili.


Dim dbs As Database, tbl As TableDef, fld As Field

' Assegna il database corrente alla variabile


' di database (oppure OpenDatabase(prova.mdb)).
Set dbs = CurrentDB

' Crea una nuova tabella e un nuovo campo e li assegna


' alle variabili di tabella e campo.
Set tbl = dbs.CreateTableDef("Clienti scaduti")
Set fld = tbl.CreateField("IDCliente ", dbText)

' Aggiunge il campo alla tabella, quindi aggiunge


' la tabella al database.

tbl.Fields.Append fld
dbs.TableDefs.Append tbl
dbs.TableDefs.Refresh

End Sub

Pagina 30

Corso avanzato di Microsoft Access

Nell'esempio riportato di seguito si crea un oggetto Recordset di tipo dynaset da un'istruzione SQL. Tale istruzione
include la funzione Year in una proposizione WHERE per restituire solo i record relativi ai noleggi effettuati nel 1995.

Sub Noleggi95()
Dim dbs As Database, rst As Recordset, strSQL As String
Dim fld As Field

Set dbs = CurrentDb


strSQL = "SELECT DISTINCTROW Cliente, DataNoleggio " _
& "FROM Noleggi WHERE ((Year([DataNoleggio])=1995));"
Set rst = dbs.OpenRecordset(strSQL, dbOpenDynaset)
Uso del metodo Movelast dell oggetto Recordset
rst.MoveLast
Uso della finestra di Debug
Debug.Print rst.RecordCount
End Sub

Pagina 31

Corso avanzato di Microsoft Access

Microsoft Access
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

Pagina 32