Come svuotare i controlli di una maschera Access

Mi è stato chiesto più volte come svuotare i controlli di una maschera Access. Per controllo si intende uno degli oggetti presenti su una maschera. Direi che i controlli più utilizzati sono: casella di testo (textbox) e casella combinata (combobox). Vediamo come usare un pulsante di comando per svuotare tutti i controlli casella di testo e casella combinata presenti su una maschera. Saranno sufficienti poche istruzioni VBA.

Supponiamo di avere una maschera con una casella di testo, una casella combinata e il nostro pulsante, che avrà come proprietà nome: cmdSvuota.

SvuotaControlli

Nelle proprietà del pulsante di comando andiamo su Eventi. Poi un clic sulla riga dell’evento Su clic e poi tasto destro, Genera…, Generatore di codice e così siamo nel Visual Basic Editor, nell’evento Su Clic del nostro pulsante:

svuota_clic

In sintesi dobbiamo passare in sequenza tutti i controlli presenti sulla maschera: se si tratta di una casella di testo o di una casella combinata, li svuotiamo. Attenzione! Anche le etichette sono controlli. Se non facessimo il test, il nostro codice cercherebbe di svuotare l’etichetta, o lo stesso pulsante di comando, e non riuscendo genererebbe un errore.

Cominciamo creando una variabile ctl che sarà di tipo Control. Ci servirà per eseguire un ciclo su tutti i controlli esistenti nella maschera (in tal modo evitiamo di dover scrivere una istruzione per ogni controllo presente sulla maschera: se la maschera ha 20 caselle di testo… significherebbe scrivere 30 istruzioni di codice!).

Dim ctl As Control

Ora passiamo in rassegna tutti i controlli della maschera con un ciclo For Each… Next. Con questo ciclo non abbiamo bisogno di sapere quanti sono i controlli. Controls è la collezione di tutti i controlli presenti nella maschera. Me fa riferimento alla maschera attiva

For Each ctl In Me.Controls

Next

Ora l’istruzione per svuotare il controllo sarebbe semplice:

ctl = Null

Tuttabia, dobbiamo eseguirla solo su controlli di tipo TextBox o ComboBox, perciò la inseriamo all’interno di una If:

 If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then
   ctl = Null
 End If

Il codice completo eseguito al Clic sul pulsante di comando è il seguente:

Dim ctl As Control
For Each ctl In Me.Controls
  If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then
     ctl = Null
  End If
Next