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 memoriz- zate 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.)”
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
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.”
Moduli 4 Esempio di modulo collegato alla maschera “inizio” del database “Studenti.mdb” Option Compare Database 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 ... Indica che il confronto tra elementi è basato sul tipo di ordinamento determinato dal paese (Italia) dove si verifica il confronto 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)
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
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:
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 UGO 11/11/1981 24 0000003 VERDI ANNA 0000004 BIANCHI ALFREDO 11/11/1982 23 0000005 MARIA