VBA e Maschere di Access
Breve tutorial di MC2 E-Learning sul VBA applicato alle maschere di Access. Impariamo come utilizzare il VBA per immettere dati in una maschera.
Come probabilmente già immaginate, quasi ogni cosa in Access è un oggetto, incluso Access stesso, e una delle caratteristiche degli oggetti è che possono riconoscere e rispondere a eventi, ovveroazioni.
Oggetti diversi riconoscono eventi diversi, ma gli eventi di base, riconosciuti da quasi tutti gli oggetti, sono il clic, il doppio clic, la pressione del pulsante del mouse, lo spostamento del mouse e il rilascio del pulsante del mouse.
La maggior parte degli oggetti riconoscono anche altri eventi: un controllo testo, per esempio, riconosce circa 17 eventi diversi e una maschera ne riconosce più di 50.
E' possibile vedere l'elenco degli eventi riconosciuti da un oggetto osservando la scheda Evento nella finestra di dialogo Proprietà dell'oggetto stesso. (figura 1).
Mentre si utilizza una maschera, gli oggetti attivano eventi (cioè segnalano eventi) quasi costantemente, ma se non si associa una macro o una routine VBA a un evento, non viene eseguita alcuna azione in risposta agli eventi attivati.
Per default, il programma non fa nulla di ovvio quando riconosce la maggior parte degli eventi, per cui senza interferire con il normale comportamento del programma stesso, è possibile usare un evento per specificare quale azione dovrebbe avere luogo.
E' anche possibile usare un evento per avviare l’esecuzione di una macro o di una routine Visual Basic for Applications (VBA) che effettua uninsieme di azioni.
Tutto questo vi sembra complicato? Bene, è vero che gli eventi non sono cose di cui la maggior parte degli utenti occasionali di Access si debbano preoccupare, ma poiché sapere come gestire gli eventi può aumentare molto l’efficienza di oggetti quali le maschere, si dovrebbero almeno esaminare rapidamente dopo avere aperto una maschera.
Esaminando da vicino i record deiclienti nel database Nwind2, per esempio, noteremmo che l’ID cliente è composto dalle prime tre lettere del cognome del cliente e dalle prime due lettere del suo nome, tutte maiuscole.
Questa tecnica produrrà generalmente un ID univoco per ogni nuovo cliente. Se si tenta di immettere un ID già in uso, il nuovo valore non viene accettato e si dovrà aggiungere un numero o cambiare l’ID in qualche altro modo per renderlo univoco.
Effettuare attività banali, come combinare parti di due parole e poi convertire il risultato in lettere maiuscole, è un’operazione che il computer può eseguire senza difficoltà quindi, invece di digitare l’ID per ogni nuovo record cliente aggiunto al database Nwind2, si può lasciare che lo faccia VBA.
In questo esempio scriveremo alcune righe di codice VBA e associeremo il codice all’evento 'Dopo aggiornamento' della casella di testo Cognome nella maschera Clienti.
Quando si modifica il contenuto della casella di testo e si tenta di uscire dalla casella, si attiva l’evento Prima di aggiornare.
In risposta a quell’evento, il record nella tabella di origine viene aggiornato e poi si attiva l’evento Dopo aggiornamento.
Si tratta dell’evento con il quale lavorereremo. Non proponiamo qui una trattazione approfondita di VBA, ma questo esempio vi farà capire le potenzialità di questo linguaggio di programmazione.
Procediamo come segue:
1 Apriamo il database Nwind2.
2 Facciamo clic su Clienti nell’elenco delle maschere e fai clic sul pulsante Struttura.
3 Facciamo clic sulla casella di testo Cognome per selezionarla e, se è necessario, premiamo F4 per aprire la finestra di dialogo Proprietà.
4 Facciamo clic sulla scheda Evento per vedere quali sono gli eventi programmabili
In questa scheda sono elencati tutti gli eventi ai quali può rispondere il controllo casella di testo Cognome (figura 2).
5 Desideriamo aggiungere codice VBA all’evento 'Dopo aggiornamento' (AfterUpdate), per cui facciamo clic su Dopo aggiornamento nell’elenco e poi clic sul pulsante con i 3 puntini ...
• Viene visualizzata la finestra di dialogo Scegli generatore, che ti offre le opzioni di generare un’espressione, una macro o codice VBA.
6 Facciamo clic su Generatore di codice e poi clic su OK per aprire l’editor VBA, nella figura 3.
Nel riquadro Progetto sono elencati tutti gli oggetti che abbiamo creato ai quali è possibile associare codice; in questo caso è elencata solo la maschera Clienti (Form_Clienti). Quando verranno create altre maschere e report, anche quelli saranno visualizzati qui.
La finestra Codice visualizza un segnaposto per la procedura che sarà usata per gestire l’evento Dopo aggiornamento della casella di testo Cognome.
Questaroutine è denominata:
Private Sub Cognome_AfterUpdate()
, e al momento contiene solo le istruzioni
Sub - End Sub
che segnano l’inizio e la fine di qualsiasi procedura.
7 Digitiamo le seguenti righe tra le istruzioni Sub ed End Sub : (le righe in verde sono commenti. E' possibile inserire commenti in qualunque parte del codice a condizione che la riga inizi con il carattere 'apice' oppure con REM)
‘Crea variabili per contenere il nome, il cognome e l’ID cliente
Dim fName As String
Dim LName As String
Dim cID As String
‘Assegna il testo nella casella di testo Cognome alla variabile LName.
LName = Forms!Clienti.Cognome.Text
‘Occorre impostare il focus o stato attivo a una casella di testo per poter leggere il suo contenuto.
Forms!clienti!Nome.SetFocus
fName = Forms!Clienti!Nome.Text
‘Combina porzioni del nome e del cognome per creare l’ID cliente.
cID = UCase(Left(lName, 3) & Left(fName, 2))
‘Non memorizzare l’ID se non è di 5 caratteri
'(questo indicherebbe che non sono stati immessi entrambi i nomi).
If Len(cID) = 5 Then
Forms!Clienti!IDCliente.SetFocus
‘Non modificare l’ID se è già stato immesso; ...potrebbe essere stato cambiato manualmente.
If Forms!Clienti!IDCliente.Text = ““ Then
Forms!Clienti! IDCliente = cID
End If
End If
‘Imposta il focus dove sarebbe normalmente.
Forms!Clienti Indirizzo.SetFocus
Importante!
Quando una riga di testo è preceduta da un apostrofo, il testo è un commento che spiega lo scopo della successiva riga di codice. Nell'editor VBA i commenti sono visualizzati in verde
8 Facciamo clic sul pulsante Salva sulla barra degli strumenti dell’editor VBA. Facciamo clic sul pulsanteVisualizza Microsoft Access per ritornare alla finestra di Access e chiudiamo la finestra di dialogo Proprietà.
9 Facciamo clic sul pulsante Visualizza sullabarra degli strumenti per attivare la visualizzazione Maschera. Dimensioniamo la finestra come necessario. Sulla barra di spostamento facciamo clic sul pulsante Nuovo record per creare un nuovo record.
10 Premiamo il tasto Tab per spostare il punto d’inserimento alla casella di testo Nome, digitiamo Mario, premiamo Tab per spostarci alla casella di testo Cognome, digitiamo Rossi e poi premiamo ancora Tab.
Se abbiamo immesso ilcodice VBA in modo corretto, ROSMA viene visualizzato nella casella di testo ID cliente (figura 4).
Avvertenza !
Il file dell'esempiovba-e-maschere-access.zip contenente la Maschera Clienti con il codice VBA di cui si è discusso in questo tutorial ed infine alcuni dati di prova tratti dal database 'NWind2.mdb', è disponibile nell'area 'Tutorial Download' riservata agli iscritti alle nostre newsletters. Iscriviti ora alla newsletter 'Utilizzare Access per davvero', è gratis! Puoi utilizzare il riquadro qui a lato sulla sinistra della pagina in alto oppure seguire questo collegamento:
http://www.mc2elearning.com/html/utilizzare_access.html
Il file dell'esempiovba-e-maschere-access.zip contenente la Maschera Clienti con il codice VBA di cui si è discusso in questo tutorial ed infine alcuni dati di prova tratti dal database 'NWind2.mdb', è disponibile nell'area 'Tutorial Download' riservata agli iscritti alle nostre newsletters. Iscriviti ora alla newsletter 'Utilizzare Access per davvero', è gratis! Puoi utilizzare il riquadro qui a lato sulla sinistra della pagina in alto oppure seguire questo collegamento:
http://www.mc2elearning.com/html/utilizzare_access.html
Maschere e controlli
Maschera e sottomaschera
Filtri su maschera
Query per maschere
Fare riferimento a sottomaschere
Il Generatore di espressioni
VBA e maschere
Collegamenti ad altri tutorial su Microsoft Access:
Le Relazioni tra le tabelle di Access
Costruire una tabella con Access
Esempi di Maschere con Microsoft Access
Tutorials su Microsoft Access
Dr.Maurizio Cucchiara
autore del corso:
"Corso Base di Microsoft Access"
disponibile on line su questo sito
MC2 E-Learning S.a r.l.
Formazione per il Web
http://www.mc2.it/html/access.html
Cerca sul web con Google:
