Newsgroup: it.comp.appl.access
Titolo: Personalizzazione messaggi

Salva a tutti!
Avrei bisogno di personalizzare il messaggio di errore segnalato quando si
immettono dei caratteri non numerici in una casella di testo avente formato
Valuta.
Il messaggio di default è : E' stato immesso un valore non valido per il
campo etc. etc.....
Ho cercato di utilizzare le proprietà Validation Rule e Validation
Text.........ma con scarsi risultati. Potreste darmi qualche dritta???
......la funzione da utilizzare è IsNumeric......vero?????
Ringrazio anticipatamente.

 ha scritto nel messaggio
news:PJPs9.14605$aL4.4...@news1.tin.it...

Devi gestire la pressione dei tasti tramite gli eventi KeyUp oppure
KeyPress, in pratica:
'Soluzione 1: controlli che il valore sia numerico - evento KeyUp
Dim StrText as String
StrText = TuaTxt.Text
If not IsNumeric(StrText) then
    Msgbox "Tuo messaggio d'errore"
    TuaTxt.Undo
end if
'Soluzione 2: disabiliti la pressione dei tasti indesiderati - evento
KeyPress
select case KeyAscii
case Asc("A") 'sarà opportuno sostituire Asc("A") con il suo rispettivo
valore = %65
    KeyAscii=0
    Msgbox "Tuo messaggio d'errore"
case ...
End select
Ciao, omnitow

..grazie intanto della risposta.....
volevo però precisare, che il controllo sulla numericità volevo gestirlo
dopo l'inserimento della stringa nella casella di testo.
Con il metodo da te suggerito, vengono intercettate anche le pressioni dei
tasti di cancellazione (backspace e canc).......
e sinceramente non mi sembra molto corretto.
Il problema è riuscire a gestire il controllo sulla numericità prima che lo
faccia Access per evitare il messaggio di errore predefinito!!!

 ha scritto nel messaggio
news:LUQs9.14894$aL4.4...@news1.tin.it...

Qualcosa mi fa' pensare che tu non abbia provato le due soluzioni che
ti ho postato, ma forse non sono stato esplicito a sufficienza:
1 - Inserisci nel form una casella di testo di nome "Testo2"
    con "origine controllo" impostata sul campo numerico
2 - Dalla finestra delle propietà del form Impostare "anteprima tasti" a
"SI"
3 - Se ti da così tanto fastidio che access generi un evento "inutilmente"
    alla pressione dei tasti  (backspace e canc)...
4 - per l'evento "Su pressione" della "Testo2" inserisci nell'editor VBA
'Soluzione 2: disabiliti la pressione dei tasti indesiderati - evento
KeyPress
Private Sub Testo2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc("1"),Asc("2"),Asc("3"),Asc("4"),Asc("5"),Asc("6"), _
         Asc("7"),Asc("8"),Asc("9"),Asc("0"),Asc(",")
'sarà opportuno sostituire Asc("N") con i rispettivi valori integer = %N
'(debug.Print Asc("1") dall'immediata per ottenere i valori)
Case Else
    'Stop
    'Se togli la virgoletta alla riga precedente, noterai che alla pressione
    'di backspace e canc oppure INS oppure ESC oppure FINE ecc.
    '(che non corrispondono ad alcun carattere della codifica Ascii)
    'non sarà generato alcun evento
    KeyAscii = 0
    Beep
    'in questa 'Soluzione forse è meglio inserire
    'un semplice Beep anzichè la MsgBox
End Select
End Sub
5 - Se invece decidi che non sia propio così insopportabile che access
    generi un evento "inutile" e che,  quando l'utente erroneamente clicca
    su un carattere di testo, vuoi che gli si vengano annullate tutte le
modifiche
    apportate alla TextBox
6 - per l'evento "Tasto Su" della "Testo2" inserisci nell'editor VBA
'Soluzione 1: controlli che il valore sia numerico - evento KeyUp
Private Sub Testo2_KeyUp(KeyCode As Integer, Shift As Integer)
Dim StrText As String
StrText = Testo2.Text
If Not IsNumeric(StrText) Then
    MsgBox "Tuo messaggio d'errore"
    Testo2.Undo
End If
End Sub
Spero di essere stato chiaro a sufficienza
Ciao, omnitow

 Valuta.
Prova con:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Const ErroreDefinitoApplicazione = 2113
If DataErr = ErroreDefinitoApplicazione Then
    MsgBox "Birichino!"
    Response = acDataErrContinue
End If
End Sub
Ciao. Claudio.