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();