ClaudioCZ ha scritto:
Invece di digitare 1 oppure -1, hai provato a digitare una Lettera...?
Perdonami, a parte che confido nella sapienza minima degli utilizzatori che suggerisca loro che dove viene chiesto di digitare un importo non scrivano lettere, ma se il campo è configurato nella tabella come numerico come può accettare lettere? Ed infatti se digito una lettera compare il messaggio di errore...
La premessa è sempre che l'utente sia "Utonto", e che sia in capo allo sviluppatore porre in essere i controlli.
Secondo fai attenzione a non confondere le acque, banalizzando gli aspetti tecnici.
Nel tuo caso dovresti decidere in modo ragionato dove e come fare la validazione... questa può essere fatta a diversi Livelli...
1) A livello di controllo, ovvero della TextBox tramite i suoi eventi(e tu quì hai inserito un controllo su evento Exit, questo previene la scrittura nel DB) intercettando anche gli errori derivanti...
2) A livello di Database, ed è quello che fai inconsciamente fare quando digitando S ottieni errore, questo avviene quando stai scrivendo nel DB, quindi meno gestibile come errore, perchè avviene solo DOPO, ovvero durante il Commit della transazione...
Sono 2 cose differenti concettualmente e tecnicamente.
Se si implementa una logica di Validazione, tendenzialmente si opera lato Interfaccia(quindi Controlli Oggetto), ma soprattuto è più semplice poi fare diagnosi se si ha un UNICO il punto di VALIDAZIONE.
Personalmente non delegherei il rilascio dell'errore gestibile al Database, a quello delego solo i non prevedibili o non previsti.
Pensa magari alla sola scalabilità del DB... se vuoi cambiarlo... devi conoscere come il DB restituisce l'errore ed intercettarlo, modificando il codice, e poi gli errori STANDARD generati da Sistema che non sono gestiti, sono sempre un PESSIMO VEDERE.
Ovviamente, questo è un parere, poi tu puoi fare quello che credi, l'importante sia consapevole.
ClaudioCZ ha scritto:
Quanto al problema suggerisci che sia dovuto ad impostazioni o interazione con altri eventi, sembra strano anche a me che la stessa routine funzioni senza problemi in altri controlli, però ho ricontrollato decine di volte, ma non trovo nulla di strano.
Hai provato a cancellare il controllo e ricrearlo...?
Nel caso di Interazione con altri Eventi... la cosa richiede una discreta dimestichezza con il Debug, mettendo dei Debug.Print nel codice per capire le sequenze di generazione di Eventi... BeforeUpdate di Controllo e di Form, o BeforeInsert di Form...