Problema decimale

sabato 03 marzo 2007 - 15.32

squilibrio Profilo | Expert

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??


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)


Il problema non è legato al fatto che ho messo il ToString(); dato che in insert non ho problemi di questo tipo, il ToString() l'avevo messo perchè provando la pagina su sistema operativo ITA e ENG avevo dei comportamenti differenti.


Grazie in anticipo

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


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



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

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5