2014-03-01 79 views
0

嗨,我想使用SQL Server在後端更新我ITEM_DETAILS在C#中的表,但是當我這樣做我收到以下錯誤:無法將參數值從字符串轉換爲小數。 C#?

failed to convert parameter value from a string to a decimal. c# 

這裏是我的代碼:

int x; 

da.UpdateCommand = new SqlCommand("UPDATE ITEM_DETAILS SET [email protected]_NAME,[email protected]_DESCRIPTION,[email protected]_NAME,[email protected],[email protected],[email protected],[email protected]_NUM,[email protected] WHERE [email protected]_MODEL", con); 
da.UpdateCommand.Parameters.Add("@ITEM_NAME", SqlDbType.VarChar).Value = txtItemName.Text; 
da.UpdateCommand.Parameters.Add("@ITEM_DESCRIPTION", SqlDbType.VarChar).Value = txtItemDescription.Text; 
da.UpdateCommand.Parameters.Add("@VENDOR_NAME", SqlDbType.VarChar).Value = txtVendor.Text; 
da.UpdateCommand.Parameters.Add("@QUANTITY", SqlDbType.Int).Value = txtQuantity.Text; 
da.UpdateCommand.Parameters.Add("@RATE", SqlDbType.Money).Value = txtRate.Text; 
da.UpdateCommand.Parameters.Add("@AMOUNT", SqlDbType.Money).Value = txtAmount.Text; 
da.UpdateCommand.Parameters.Add("@INVOICE_NUM", SqlDbType.Int).Value = txtInvoice.Text; 
da.UpdateCommand.Parameters.Add("@DATE", SqlDbType.VarChar).Value = dateTimePicker1.Value; 
da.UpdateCommand.Parameters.Add("@ITEM_MODEL", SqlDbType.VarChar).Value = ds.Tables[0].Rows[bs.Position][0]; 

con.Open(); 
x = da.UpdateCommand.ExecuteNonQuery(); 
con.Close(); 

if (x >= 1) 
{ 
    MessageBox.Show("Record(s) has been updated"); 
} 

任何人都可以解釋我解決這個問題嗎?

+0

哪個字段是十進制的? txtAmount?如果是,請檢查您的分隔符是「1.23」而不是「1,23」的「點」。檢查空格或其他字符 – Portekoi

+0

可能的重複[無法將參數值從字符串轉換爲十進制?](http://stackoverflow.com/questions/12982208/failed-to-convert-parameter-value-from-a -string到一個十進制) – dcastro

回答

1
da.UpdateCommand.Parameters.Add("@RATE", SqlDbType.Money).Value = txtRate.Text; 
da.UpdateCommand.Parameters.Add("@AMOUNT", SqlDbType.Money).Value = txtAmount.Text; 

您需要將txtRate.Text和txtAmount.Text解析爲貨幣。

string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString)/100); 

Convert String to Money

在VB中,我們將使用CTYPE()轉換。

相關問題