Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Input string was not in a correct format

    Ciao, uso in DB access che risiede su WIN 2000 ENG mentre sto facendo le prove su XP ITA, indipendentemente da questo in entrambi i casi ottengo un errore quando cerco di salvare un valore decimale, cosa sbaglio??

    Codice PHP:
    OleDbCommand myCommand = new OleDbCommand("SP_FatturaLiberoDettaglio_Update"myConnection);
                        
    myCommand.CommandType=CommandType.StoredProcedure;
                                                               
                        
    myCommand.Parameters.Add(new OleDbParameter("@DescrizioneDilazione"OleDbType.VarChar));
                        
    myCommand.Parameters.Add(new OleDbParameter("@Iva"OleDbType.VarChar));
                        
    myCommand.Parameters.Add(new OleDbParameter("@UM"OleDbType.VarChar));
                        
    myCommand.Parameters.Add(new OleDbParameter("@Sconto"OleDbType.Integer));
                        
    myCommand.Parameters.Add(new OleDbParameter("@Quantita"OleDbType.Decimal));
                        
    myCommand.Parameters.Add(new OleDbParameter("@Valore"OleDbType.Decimal));
                        
    myCommand.Parameters.Add(new OleDbParameter("@Imponibile"OleDbType.Decimal));
                        
    myCommand.Parameters.Add(new OleDbParameter("@TotaleRiga"OleDbType.Integer));   
                        
    myCommand.Parameters.Add(new OleDbParameter("@Sc"OleDbType.Decimal));
                        
    myCommand.Parameters.Add(new OleDbParameter("@IDRiga"OleDbType.VarChar));   
                   
                        
    myCommand.Parameters["@DescrizioneDilazione"].Value DescrizioneRigaIns.Text;   
                        
    myCommand.Parameters["@Iva"].Value IVAIns.SelectedValue;
                        
    myCommand.Parameters["@UM"].Value Um.Text;
                        
    myCommand.Parameters["@Sconto"].Value "0";
                        
    myCommand.Parameters["@Quantita"].Value Convert.ToDecimal(Qt.Text).ToString();

                        if (
    ddlSconto.SelectedValue == "1")
                        {
                            
    decimal valimporto 0;
                            
    decimal valimponibile 0;
                            
    decimal valtotale 0;
                            
    valimporto Convert.ToDecimal(Importo.Text) * (-1);
                            
    valimponibile Convert.ToDecimal(Imponibile.Text) * (-1);
                            
    valtotale Convert.ToDecimal(TotaleRiga.Text) * (-1);
                            
    myCommand.Parameters["@Valore"].Value valimporto.ToString();                               
                            
    myCommand.Parameters["@Imponibile"].Value valimponibile.ToString();
                            
    myCommand.Parameters["@TotaleRiga"].Value valtotale.ToString();   
                        }
                        else
                        {
                            
    myCommand.Parameters["@Valore"].Value Convert.ToDecimal(Importo.Text).ToString();                               
                            
    myCommand.Parameters["@Imponibile"].Value Convert.ToDecimal(Imponibile.Text).ToString();
                            
    myCommand.Parameters["@TotaleRiga"].Value Convert.ToDecimal(TotaleRiga.Text).ToString();   
                        }
                    
    myCommand.Parameters["@TotaleRiga"].Value TotaleRiga.Text;   
                        
    myCommand.Parameters["@Sc"].Value ddlSconto.SelectedValue;   
                        
    myCommand.Parameters["@IDRiga"].Value IDRigaTxt.Text;   

                        
    myConnection.Open();
                        
    myCommand.ExecuteNonQuery();
                        
    myConnection.Close(); 
    Le ho provate tutte

    a mettere:

    valimponibile.ToString();
    Convert.ToDecimal(valimponibile.ToString());

    quello che sono sicura è che l'errore si verifica SOLO quando inserisco un valore con decimali in Quantita o Valore

    Nel DB il campo è di tipo valuta!

    Un altro comportamente strano è che in fase di inserimento funziona perfettamente (vengono salvati i decimali), l'errore si verifica (sempre modificando quantita e valore) in fase di modifica. Per completezza allego le due porzioni di codice (insert e update)

    Grazie in anticipo

    L'update l'ho inserito prima (ed è quello che mi da problemi)


    L'insert è questo, e NON da problemi (stranissimo)


    Codice PHP:

    OleDbCommand myCommand 
    = new OleDbCommand("SP_FatturaLiberoDettaglio_Insert"myConnection);
                            
    myCommand.CommandType=CommandType.StoredProcedure;
                                                               
                            
    myCommand.Parameters.Add(new OleDbParameter("@NumeroFattura"OleDbType.VarChar));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Data"OleDbType.Date));
                            
    myCommand.Parameters.Add(new OleDbParameter("@DescrizioneDilazione"OleDbType.VarChar));
                            
    myCommand.Parameters.Add(new OleDbParameter("@UM"OleDbType.VarChar));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Sconto"OleDbType.Integer));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Quantita"OleDbType.Decimal));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Valore"OleDbType.Decimal));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Imponibile"OleDbType.Decimal));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Iva"OleDbType.VarChar));
                            
    myCommand.Parameters.Add(new OleDbParameter("@TotaleRiga"OleDbType.Decimal));   
                            
    myCommand.Parameters.Add(new OleDbParameter("@VoceCosto"OleDbType.VarChar));
                            
    myCommand.Parameters.Add(new OleDbParameter("@Sc"OleDbType.Integer));

                            
    myCommand.Parameters["@NumeroFattura"].Value NumeroDoc.Text.ToString();   
                            
    myCommand.Parameters["@Data"].Value DataDoc.Text;
                            
    myCommand.Parameters["@DescrizioneDilazione"].Value DescrizioneRigaIns.Text;                                                                   
                            
    myCommand.Parameters["@UM"].Value Um.Text;
                            
    myCommand.Parameters["@Sconto"].Value "0";
                            
    myCommand.Parameters["@Quantita"].Value Convert.ToDecimal(Qt.Text).ToString();

                            if (
    ddlSconto.SelectedValue == "1")
                            {
                                
    decimal valimporto 0;
                                
    decimal valimponibile 0;
                                
    valimporto Convert.ToDecimal(Importo.Text) * (-1);
                                
    valimponibile Convert.ToDecimal(Imponibile.Text) * (-1);
                                
    myCommand.Parameters["@Valore"].Value valimporto.ToString();                               
                                
    myCommand.Parameters["@Imponibile"].Value valimponibile.ToString();
                            }
                            else
                            {
                                
    myCommand.Parameters["@Valore"].Value Convert.ToDecimal(Importo.Text).ToString();                               
                                
    myCommand.Parameters["@Imponibile"].Value Convert.ToDecimal(Imponibile.Text).ToString();
                            }

    //                        myCommand.Parameters["@Valore"].Value = Importo.Text;                               
    //                        myCommand.Parameters["@Imponibile"].Value = Imponibile.Text;
                                                                                                           
                            
    myCommand.Parameters["@Iva"].Value IVAIns.SelectedValue;

                            if (
    ddlSconto.SelectedValue == "1")
                            {
                                
    decimal valtotale 0;
                                
    valtotale Convert.ToDecimal(TotaleRiga.Text) * (-1);
                                
    myCommand.Parameters["@TotaleRiga"].Value valtotale.ToString();   
                            }
                            else
                            {
                                
    myCommand.Parameters["@TotaleRiga"].Value TotaleRiga.Text;   
                            }

    myCommand.Parameters["@VoceCosto"].Value "700-1";
                            
    myCommand.Parameters["@Sc"].Value ddlSconto.SelectedValue;

                           
                       
                            
    myConnection.Open();
                            
    myCommand.ExecuteNonQuery();
                            
    myConnection.Close(); 

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Nessun aiutino??

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho fatto delle prove col mio database.
    Il mio campo è di tipo Valuta.

    Io metto:
    Comando.Parameters.Add("valuta", OleDbType.Currency).Value = Convert.ToDecimal(TextBox1.Text)


    Se sostituisco OleDbType.Currency con OleDbType.Decimal, in quel campo Valuta, ottengo dati strani. Per esempio 10,123 viene convertito in 10.123,00
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.