|
■No5258 (hikaru さん) に返信
サンプルで使われているテーブルの定義は、どのようなものでしょうか?
> ds4.Tables["ユーザ管理テーブル"].Rows[i]["識別"] = "name"; > ds4.Tables["管理テーブル"].Rows[i]["名称"] = "顧客データ"; > ds4.Tables["ユーザ管理テーブル"].Rows[i].EndEdit(); 「ユーザ管理テーブル」と「管理テーブル」が混在しているようですが、 この部分のソースに問題は無いですか?
で。提示されたソースを実験したところ、 『1 つ以上の必要なパラメータの値が設定されていません。』 が発生し、 『同時実行違反 : UpdateCommand によって、処理予定の 1 レコードのうち 0 件が処理されました。』 は発生しませんでした。
> //SQL文の作成 > upSql = "UPDATE 管理テーブル SET 識別=?,名称=? WHERE 識別=? AND 名称=?"; > //コマンド作成 > cmd5 = new System.Data.OleDb.OleDbCommand(upSql, cn4); > cmd5.Parameters.Add(new System.Data.OleDb.OleDbParameter("識別", System.Data.OleDb.OleDbType.VarChar, 4, "識別")); > cmd5.Parameters.Add(new System.Data.OleDb.OleDbParameter("名称", System.Data.OleDb.OleDbType.VarChar, 60, "名称")); > da4.UpdateCommand = cmd5;
上記の部分を下記のように書き換えたところ、データが更新されました。
//SQL文の作成 upSql = @"PARAMETERS [新識別] TEXT, [新名称] TEXT, [旧識別] TEXT, [旧名称] TEXT; UPDATE 管理テーブル SET 識別=[新識別],名称=[新名称] WHERE 識別=[旧識別] AND 名称=[旧名称]"; //コマンド作成 cmd5 = new System.Data.OleDb.OleDbCommand(upSql, cn4); cmd5.Parameters.Add(new OleDbParameter("新識別", OleDbType.VarChar, 4, ParameterDirection.Input, false, 0, 0, "識別", DataRowVersion.Current, null)); cmd5.Parameters.Add(new OleDbParameter("新名称", OleDbType.VarChar, 60, ParameterDirection.Input, false, 0, 0, "名称", DataRowVersion.Current, null)); cmd5.Parameters.Add(new OleDbParameter("旧識別", OleDbType.VarChar, 4, ParameterDirection.Input, false, 0, 0, "識別", DataRowVersion.Original, null)); cmd5.Parameters.Add(new OleDbParameter("旧名称", OleDbType.VarChar, 60, ParameterDirection.Input, false, 0, 0, "名称", DataRowVersion.Original, null)); da4.UpdateCommand = cmd5;
|