General

6.98 Verificare il numero di decimali digitati.
  Roberto
(D)
E’ possibile verificare, in una tabella o in una maschera, che un valore numerico non sia stato digitato con più di 2 decimali?

(R)
L’introduzione dell’Euro rende opportuno verificare che gli importi non vengano digitati con più di due decimali.
Nel database allegato a questa FAQ vengono proposte tre soluzioni.

La prima soluzione effettua la verifica del numero dei decimali usando le Proprietà campo “Valido se” e “Messaggio errore” di un campo di una tabella.
La Proprietà campo “Valido se” viene impostata a:
=Fix("" & [Campo1]*100+Sgn([Campo1])*0,5)/100
mentre la Proprietà campo “Messaggio errore” viene impostata a:
Hai digitato più di 2 decimali!

La seconda soluzione effettua la verifica del numero dei decimali usando le Proprietà “Valido se” e “Messaggio errore” di un controllo di una maschera.
La Proprietà del controllo “Valido se” viene impostata a:
=Fix("" & [Campo2]*100+Sgn([Campo2])*0,5)/100
mentre la Proprietà del controllo “Messaggio errore” viene impostata a:
Hai digitato più di 2 decimali!

La terza soluzione effettua la verifica del numero di decimali tramite una routine VBA generata a fronte dell’evento “Prima di aggiornare” di un controllo di una maschera ed usando un messaggio personalizzato.
Questo è il codice VBA generato a fronte dell’evento “Prima di aggiornare” del controllo:
Private Sub Campo3_BeforeUpdate(Cancel As Integer)
If Me!Campo3 <> Fix("" & Me!Campo3 * 100 + Sgn(Me!Campo3) * 0.5) / 100 Then
    MsgBox "Hai digitato il valore " & Chr(13) & Chr(10) & _
    "   " & Me!Campo3 & Chr(13) & Chr(10) & _
    "che contiene più di 2 decimali." & Chr(13) & Chr(10) & _
    "Verrà ripristinato il valore precedente"
    Me!Campo3.Undo
    Cancel = True
End If
End Sub
In tutte e tre le soluzioni, il campo che deve contenere il valore ha un Tipo dati Numerico ed ha una Dimensione campo in Precisione doppia.

Download:
 
  DueDecimali.zip (15Kb) MSAccess97 database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.