Come controllare l’inserimento dati 1 di 2

In un precedente post abbiamo visto che è possibile controllare l’inserimento dati in una maschera di Microsoft Access e prima che avvenga il salvataggio richiedere conferma all’utente.

Vediamo quale codice VBA scrivere per cambiare il colore e applicare il grassetto all’etichetta del controllo modificato.

Ogni controllo casella di testo ha un evento Dopo aggiornamento impostato:

dopo_aggiornamento

Inoltre il controllo ha una etichetta collegata:

etichetta_collegata

Infatti quando seleziono il controllo casella di testo l’etichetta collegata ha un quadratino in alto a sinistra (vedi freccia).

Nel codice VBA ho creato una proceduta sCheckChanges, richiamata dall’evento Dopo aggiornamento di tutti i miei controlli:

Private Sub txtCitta_AfterUpdate()
sCheckChanges
End Sub
Sub sCheckChanges()
' la procedura cambia il colore del testo e il formato dell'etichetta a seconda che il valore precedente sia diverso da quello corrente
' la proprietà OldValue conserva in memoria il valore del campo letto dalla tabella al momento del caricamento del record nella maschera
' tale valore rimane disponibile finché il record non viene effettivamente salvato
Dim ctl As Control
' assegno alla variabile il controllo attivo
Set ctl = ActiveControl
' se il valore precedente del controllo è diverso da quello corrente
If Nz(ctl.OldValue, "") <> Nz(ctl, "") Then
 'imposto il colore rosso al controllo
 ctl.ForeColor = vbRed
 ' imposto l'etichetta in grassetto
 ' !!! Nota Bene: funziona solamente se la proprietà "Nome etichetta" del controllo è impostata
 ' ossia il controllo ha un'etichetta collegata
 ctl.Controls(0).FontBold = True
Else
 ' se i valori sono uguali, reimposto a nero il colore e tolgo il grassetto
 ctl.ForeColor = vbBlack
 ctl.Controls(0).FontBold = False
End If
End Sub

Un prossimo post spiegherà come intercettare il salvataggio del record e chiedere conferma all’utente.