テーブルによって入力されたデータリストがあり、データリストからテーブルを更新しようとすると、例外が発生します:「パラメーター値を文字列からダブルに変換できませんでした」
更新ボタンのクリックは次のとおりです。
for (int x = 0; x < dlQtyBreak.Items.Count; x++)
{
DataListItem item = dlQtyBreak.Items[x];
string linenum = ((Label)item.FindControl("lblPBLinenum")).Text;
string lowqty = ((TextBox)item.FindControl("txtPBLowQty")).Text;
string highqty = ((TextBox)item.FindControl("txtPBHighQty")).Text;
string price = ((TextBox)item.FindControl("txtPBPrice")).Text;
string salesprice = ((TextBox)item.FindControl("txtPBSalesPrice")).Text;
DAL.Util.updatePriceBreakRow(IQPDID(), lowqty, highqty, price, salesprice, linenum);
}
この次のコードはSQLとパラメータです
public static void updatePriceBreakRow(string IQPDID, string low, string high, string price, string sPrice, string linenum)
{
string sql = "UPDATE ItemQtyPriceDiscTable SET LowQuantity=@LowQty, HighQuantity=@HighQty, Price=@Price WHERE linenum=@lineNum";
AdoUtil.ACESSQLParameterCollection parameters = new AdoUtil.ACESSQLParameterCollection();
AdoUtil.ACESSQLParameter param = new AdoUtil.ACESSQLParameter();
param.ParamName = "@IQPDID";
param.ParamValue = IQPDID;
param.ParamDBType = SqlDbType.Int;
parameters.Add(param);
param.ParamName = "@LowQty";
param.ParamValue = low;
param.ParamDBType = SqlDbType.Float;
parameters.Add(param);
param.ParamName = "@HighQty";
param.ParamValue = high;
param.ParamDBType = SqlDbType.Float;
parameters.Add(param);
param.ParamName = "@Price";
param.ParamValue = price;
param.ParamDBType = SqlDbType.Float;
parameters.Add(param);
param.ParamName = "@SalePrice";
param.ParamValue = sPrice;
param.ParamDBType = SqlDbType.Float;
parameters.Add(param);
param.ParamName = "@linenum";
param.ParamValue = linenum;
param.ParamDBType = SqlDbType.Int;
parameters.Add(param);
param.ParamName = "@update";
param.ParamValue = lastUpdate;
param.ParamDBType = SqlDbType.VarChar;
parameters.Add(param);
AdoUtil.ExecuteNonQuery(sql, parameters);
}
何が原因でしょうか? 別のデータリストで同じプロセスを実行すると、機能しますが、唯一の違いは、テーブルがすべての Int 値と varchar 値を使用し、これが Float と varchar を使用することです。誰かがこの問題を解決するのに役立つ洞察を持っているなら、それは大歓迎です。他に役立つコードがあれば、質問して投稿できます。
ありがとうございました。