none
Origine errore .Net SqlClient Data Provider RRS feed

  • Domanda

  • Ciao a tutti ho da poco iniziato ad usare sql server express per iniziare a masticare la programmazione dei Db e dopo la prima creazione di una piccola tabella, quando vado a inserire i dati nei vari campi in modalità visuale non tramite codice sql, questi non me li conferma e mi genera l'errore:

    "Nessuna riga aggiornata.

    Commit dei dati nella riga 1 non eseguito.

    Origine errore: .Net SqlClient Data Provider.

    Messaggio di errore: Errore di overflow aritmetico durante la conversione di numeric nel tipo di dati numeric.

    L'istruzione è stata interrotta.

    Correggere gli errori e riprovare oppure premere ESC per annullare le modifiche."

    Adesso da quanto si legge qui sembrerebbe che io abbia dichiarato un tipo di dati per i campi ma inserisco altri tipi di dati ma non è così.

    Inoltre mi dice di eseguire il Commit che da quanto ho letto significa confermare i dati che stò inserendo nel DB.Ho smanettato parecchio in sql server 2014 express ma non ho trovato questo tasto Commit.

    Qualcuno può aiutarmi?

    sabato 10 ottobre 2015 13:14

Risposte

  • Ciao,

    il cerchietto rosso non è determinante per sapere quale campo genera l'errore perché compare in tutti i campi modificati, visto che il messaggio è chiaro direi di indagare sul tipo di dato numeric.

    Una cosa che mi viene in mente è che il separatore decimale da utilizzare nell' interfaccia grafica è quello definito nelle regional settings del computer, se ad esempio hai un computer localizzato in italiano dovrai usare la virgola come separatore decimale, se è localizzato in us-english dovrai usare il punto. Se con localizzazione us-english usi la virgola essa verrà ignorata e il valore 100,22 verrà interpretato come 10022.00 viceversa per la localizzazione italiana.

    Prova a verificare

    Ciao

    Giorgio Rancati

    • Contrassegnato come risposta Nicla1990 domenica 11 ottobre 2015 12:14
    sabato 10 ottobre 2015 19:51
    Moderatore

Tutte le risposte

  • Ciao,

    il mesaggio di errore indica che stai tentando di inserire un numero troppo alto in un campo con tipo dato Numeric.

    Se nella tabella hai un campo con tipo dato Numeric(4,2) e cerchi di inserire il valore 100,00 riceverai il messaggio di errore che hai indicato.

    Per maggiori info vedi : decimal e numeric (Transact-SQL)

    Per quanto riguarda il commit, non viene chiesto di eseguirlo, il messaggio di errore dice che non ha potuto eseguirlo per i motivi indicati sopra.

    Ciao

    Giorgio Rancati



    sabato 10 ottobre 2015 16:37
    Moderatore
  • Ciao,

    il mesaggio di errore indica che stai tentando di inserire un numero troppo alto in un campo con tipo dato Numeric.

    Se nella tabella hai un campo con tipo dato Numeric(4,2) e cerchi di inserire il valore 100,00 riceverai il messaggio di errore che hai indicato.

    Per maggiori info vedi : decimal e numeric (Transact-SQL)

    Per quanto riguarda il commit, non viene chiesto di eseguirlo, il messaggio di errore dice che non ha potuto eseguirlo per i motivi indicati sopra.

    Ciao

    Giorgio Rancati



    Non mi sembra di commettere un errore.... la tabella è questa breve e semplice: empid (tipo int), ename (tipo char(15)), rank (tipo int) salary (tipo decinal(5,2)).

    Ho inserito in ordine rispettivamente: Nicla, 1, 100,22. Segnala errore per tutti e tre i campi infatti accanto vi è il cerchietto rosso.

    Codice sql: create table Salespersons

    (empid integer not null,

    ename char(15) not null,

    rank integer not null,

    salary decimal(5,2) not null);

    L'unico mi dubbio era sul decimal ma controllando è giusto 5 caratteri in totale e due sulla destra dopo la virgola. Ma a parte questo qualsiasi nome a parte Nicla scrivo o qualsiasi numero in rank scrivo mi dà errore......

    • Modificato Nicla1990 sabato 10 ottobre 2015 18:44
    sabato 10 ottobre 2015 18:39
  • Ciao,

    il cerchietto rosso non è determinante per sapere quale campo genera l'errore perché compare in tutti i campi modificati, visto che il messaggio è chiaro direi di indagare sul tipo di dato numeric.

    Una cosa che mi viene in mente è che il separatore decimale da utilizzare nell' interfaccia grafica è quello definito nelle regional settings del computer, se ad esempio hai un computer localizzato in italiano dovrai usare la virgola come separatore decimale, se è localizzato in us-english dovrai usare il punto. Se con localizzazione us-english usi la virgola essa verrà ignorata e il valore 100,22 verrà interpretato come 10022.00 viceversa per la localizzazione italiana.

    Prova a verificare

    Ciao

    Giorgio Rancati

    • Contrassegnato come risposta Nicla1990 domenica 11 ottobre 2015 12:14
    sabato 10 ottobre 2015 19:51
    Moderatore
  • Ciao,

    il cerchietto rosso non è determinante per sapere quale campo genera l'errore perché compare in tutti i campi modificati, visto che il messaggio è chiaro direi di indagare sul tipo di dato numeric.

    Una cosa che mi viene in mente è che il separatore decimale da utilizzare nell' interfaccia grafica è quello definito nelle regional settings del computer, se ad esempio hai un computer localizzato in italiano dovrai usare la virgola come separatore decimale, se è localizzato in us-english dovrai usare il punto. Se con localizzazione us-english usi la virgola essa verrà ignorata e il valore 100,22 verrà interpretato come 10022.00 viceversa per la localizzazione italiana.

    Prova a verificare

    Ciao

    Giorgio Rancati

    Si era quello non sapevo che i programmi facevano riferimento anche a questa impostazione o meglio sapevo l'esistenza di questa impostazione di localizzazione grafica locale ma pensavo che una volta installato un programma questo si adattava automaticamente alle impostazioni del sistema. Infatti con access non ho avuto problemi è un'altra cosa va beh con codice leggermente diverso ma il numero me lo aveva riconosciuto poi ripeto con access è diverso non vi è nemmeno il committente.
    domenica 11 ottobre 2015 12:13