我没有在VOUCHER_NO
列中插入任何值并进行更新。
但它给我的错误是
输入字符串的格式不正确。不能存储<>在VOUCHER_NO专栏中。预期类型为十进制。
以下是我的代码
drpayinfo[0]["VOUCHER_NO"] = e.Record["VOUCHER_NO"];
更新
我正在使用Oracle DB,其数据类型为NUMBER (10)
答案 0 :(得分:1)
您的e.Record["VOUCHER_NO"]
似乎有一些不可转换为十进制的不需要的内容。在分配或转换之前尝试这种方式检查
if(e.Record["VOUCHER_NO"] != "")
{
drpayinfo[0]["VOUCHER_NO"] = Convert.ToDecimal(e.Record["VOUCHER_NO"]);
}
但更安全的检测和忽略不良内容的方法是
decimal result;
if (Decimal.TryParse(e.Record["VOUCHER_NO"], out result))
{
drpayinfo[0]["VOUCHER_NO"] = result;
}
else
{
// do stuff if failed to parese
}
答案 1 :(得分:1)
根据您对其他答案的评论,您的值为空字符串。这不能直接转换为小数。你必须决定采取一些行动。
他们下面的代码会尝试转换它,如果没有则会采取行动。 TryParse
是您转换的朋友!
decimal num = 0;
if (!Decimal.TryParse(e.Record["VOUCHER_NO"], out num))
{
//Throw some error, maybe set num to some default and assign...
//The appropriate action in this situation depends on your needs.
}
else
{
//You can safely assign the value
drpayinfo[0]["VOUCHER_NO"] = num;
}