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:
Inoltre il controllo ha una 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.