- PR -

DataAdapterのUpdateメソッドを制御したい

1
投稿者投稿内容
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2003-08-18 15:09
標記の件について困っております、アドバイスを頂けたらと思います。

DataSet.getChengesメソッドを実行したものをDataAdapterに渡して
Updateメソッドを実行します。
getChengesした結果ということで、なんらかの変更が
あった行なので、かならず更新を行いたい。
といった処理を実装するときに、更新できなかった行があった時点でエラーを
発生するなり、エラーのレコード情報を収集するなりといった処理を実装したい
と思っています。
(つまり、更新は全て正常に行われたのか、行われていないならどの行なのか
 また、なぜできなかったのかが知りたいのです)
このような事が可能なのでしょうか。

更新時にエラー(制約違反など)があった場合はContinueUpdateOnErrorプロパティや
RowErrorプロパティを利用して上記の動作を実装可能だとは思いますが
更新エラーとして認識されないエラー(アプリエラー)の時に同じ処理を
行いたいと思っています。

また、もう一つの考え方として、更新が正常に行われたかはgetChengesされたDataSet
の件数と、Updateの戻り値を比べれば判別できると思うのですが、どの行が
更新できなかったのかの検知方法がわからないという状況です。
Updateメソッド実行後のDataRowあたりに更新済みかそうでないかといったような
状態を保持していないのでしょうか(調べた限りではみつからなかったもので)

以上、長くなりましたが、もしなにかアドバイスがありましたら
よろしくお願いいたします。
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2003-08-18 15:40
すいません、自己レスです。
Adapter.Updateを実行すると更新結果が0件だとエラーになりますね。
失礼しました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-18 16:01
DataAdapter.RowUpdatingイベントとか?

>つまり、更新は全て正常に行われたのか、
>行われていないならどの行なのか
>また、なぜできなかったのかが知りたいのです

このイベントで「これから更新(削除、挿入)を行う行」がわかるので、「ここまでは正常に終了した」ことがわかります。また、行の内容をどこかに待避しておけば、Exceptionが発生したときに、「この行が異常である」と言えると思います。

DataAdapter.RowUpdatedイベントでエラーも拾えるようですが、Exceptionがどのタイミングで発生するかわからないので。
1

スキルアップ/キャリアアップ(JOB@IT)