- 題名: DataTableのRowState.Modify
- 日時: 2005/03/24 14:30:32
- ID: 10063
- この記事の返信元:
- (なし)
- この記事への返信:
- [10074] Re[1]: DataTableのRowState.Modify2005/03/24 18:52:46
- ツリーを表示
> (列を一件一件見ていく他ないのでしょうか)
と思いますが、さすがに毎回見るわけではなく、Bに適用したタイミングで
その行の確定(Datatable内での。)をしてRowStateを変更しておいてあげればいいです。
で実際、しないといけない処理なんて、
単に変更がないかどうかを各列ループで検証した上で、本当に変更がないのであれば、
行に対してAcceptChangesを実行すればよいだけです。
<AをBに適用するための行ループ>
<●addedやらdeletedのCASE>
・・・
何か処理
<●「以外は値の代入」のターンのCASE>
(ターンのAの行変化を適用済みのB上の行をtmprow_to_b as datarowでアクセスできるとして・・・)
dim samechecker as boolean=true
for each cl as datacolumn in table_b.columns
if tmprow_to_b(cl.columnname,〜original)<>tmprow_to_b(cl.columnname,〜current) then
samechecker=false
exit for
end if
next
'全項目同じだったら、Datatable内の変更を確定
if samechecker=true then
tmprow_to_b.acceptchanges
end if
端折りました。
後は何とかしてください。
(非接続で実データベース非依存って、こういうとき楽ですよね。)
分類:[ASP.NET]
DataTable A
DataTable B(Aのワーク)
同じテーブル構成です。
AとBの差分ファイルを作成することになりました。
AとBを比べて
1.内容の一部に更新があったもの
2.削除されたもの
3.追加されたもの
をファイルに出力します。
内容に変更の無い物に関してはファイルへ出力しません。
RowStateを使用しようと思ったのですが
A→Bに1件1件データを更新していく際に
(削除ならdelete、追加ならadd、以外は値の代入)
データに変更がなくても、(全く同じ値を代入しても)
RowStateがModifiになってしまいます。
これはしょうがないのでしょうか?
データに変更がないデータにはたとえ値を代入しても
Modifyじゃなく、「変更無し」のRowStateが
帰ってくるように識別したいのですが無理なのでしょうか?
(列を一件一件見ていく他ないのでしょうか)