Moduli 1
In Access è possibile automatizzare diverse operazioni mediante
l’utilizzo del linguaggio VBA (Visual Basic for Applications).
Le istruzioni del linguaggio possono essere inserite in moduli,
che sono “un insieme di dichiarazioni e routine Visual Basic memorizzate come una singola unità.”
Esistono diversi tipi di moduli:
• Moduli standard: “I 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.”
• Moduli di maschera e di report: “sono moduli di classe associati
a una determinata maschera o report contenenti in genere routine
evento che vengono eseguite in risposta a un evento che si verifica
sulla maschera o sul report.”
• Moduli di classe: “utilizzare un modulo di classe per creare una
definizione per un oggetto personalizzato (non collegato direttamente
a una maschera o ad un report.)”
1
Moduli 2
Per accedere alla finestra di creazione dei moduli:
- Selezioniamo la categoria “Moduli” tra gli oggetti e
clicchiamo su “Nuovo” (database di riferimento “Studenti.mdb”)
Finestra delle proprietà
<- Qui vengono visualizzati i nomi
di tutti i moduli del Database
Qui vengono mostrate le
proprietà del modulo selezionato ->
Finestra delle routine
1 Casella Oggetto
2 Casella Routine
3 Dichiarazioni
4 Routine
5 Pulsante Visualizza routine
6 Pulsante Visualizza Modulo Intero
2
Moduli 3
Moduli di maschera e di report: “È possibile utilizzare le routine
evento (routine evento: Routine eseguita automaticamente in
risposta a un evento.) per controllare il funzionamento delle maschere
e dei report e le risposte di questi oggetti ad azioni dell'utente quali il
clic su un pulsante di comando.
Quando si crea la prima routine evento per una maschera o
per un report, viene automaticamente creato il modulo di
maschera o di report associato. NOTA: chiudere la finestra di creazione dei Moduli
Database “Studenti.mdb” > Maschera “inizio” in struttura > Visulizza > Codice
1 Per visualizzare oppure aggiungere la routine di
una maschera, scegliere uno degli oggetti della
maschera nella casella Oggetto
2 ... e quindi scegliere un evento nella casella
Routine.
I nomi degli eventi ai quali sono già associate routine sono visualizzati in
grassetto. Le routine presenti nei moduli delle maschere e dei report
possono chiamare le routine aggiunte ai moduli standard.”
3
Moduli 4
Esempio di modulo collegato alla maschera “inizio” del database
“Studenti.mdb”
Option Compare Database
Indica che il confronto tra elementi è basato sul
tipo di ordinamento determinato dal paese
(Italia) dove si verifica il confronto
Private Sub fine_Click()
On Error GoTo Err_fine_Click
DoCmd.Quit
Exit_fine_Click:
Exit Sub
Err_fine_Click:
MsgBox Err.Description
Resume Exit_fine_Click
End Sub
...
Dichiarazione di routine (INIZIO)
Rinvio per la gestione di situazioni di errore
Chiude il database ed Access
Label (si evince dai due punti)
Istruzione di uscita dalla routine
Label di inizio della gestione di errori
Apertura di una finestra di notifica dell’errore
Riprende l’esecuzione dalla label “Exit_fine_Click”
Dichiarazione di routine (FINE)
4
Moduli 5
Inseriamo un pulsante nella maschera “Studenti” per calcolare l’età
dello studente:
• Inseriamo il pulsante sulla maschera annullando la procedura di
autocomposizione
• Accediamo alle “Proprietà” del pulsante, scheda “Altro” ed
impostiamo il “Nome elemento” a “calcola età”
• Nella scheda “Formato” impostiamo l’etichetta a “Calcola età”
• Accediamo alla scheda “Eventi” e impostiamo l’evento “Su clic”
cliccando sui puntini di sospensione
• Selezioniamo “Generatore di codice” ed inseriamo:
Private Sub calcola_età_Click()
Dim anni As Integer
anni = Year(Date) - Year(Forms!studenti!data_nascita)
MsgBox "Età dello studente: " & anni
End Sub
• Chiudiamo la finestra dei moduli e passiamo alla “Visualizzazione
Maschera” per verificare il funzionamento del pulsante
5
Moduli 6.1
Modulo standard: “I 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.”
Creiamo una funzione per calcolare il numero di anni tra due date:
• Selezioniamo la categoria “Moduli” tra gli oggetti, cliccare su “Nuovo”
• Inseriamo il codice seguente:
Function differenza_anni(data_piu_recente As Date, _
data_meno_recente As Date) As Integer
differenza_anni = Year(data_piu_recente) - Year(data_meno_recente)
End Function
• Chiudiamo la finestra dei moduli salvando prima cliccando
sul pulsante “Salva” e dando il nome al modulo: “Operazioni su date”
• Creiamo una query sulla tabella “Studenti” aggiungendo tutti i campi
più la il campo così calcolato:
6
Moduli 6.2
età: differenza_anni(Date();[data_nascita])
… in pratica:
Eseguiamo la query per verificare
la correttezza della funzione:
Matricola
Cognome
Nome
Data di Nascita
età
0000001
ROSSI
MARIO
11/11/1977
28
0000002
ROSSI
UGO
11/11/1981
24
0000003
VERDI
ANNA
11/11/1981
24
0000004
BIANCHI
ALFREDO
11/11/1982
23
0000005
BIANCHI
MARIA
11/11/1982
23
7
Scarica

Database - Sezione B