- - PR -
DataTableについて教えてください。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-15 10:08
.netの初心者ですが、以下について教えていただきたいです。
現在同じ構造のDataTableが二つあります。 仮に、OldDTとNewDTとします。 OldDTとNewDTを比較し、OldDTからNewDTへ新たな変化があったかどうかの 判断処理について教えてください。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-02-15 11:19
こんにちは。はぎ丸です。 AcceptChangesと、RowStateFilterを使用されては いかがでしょう? 動作確認していませんが下記のようになると思います。 変更箇所のみDBに反映する場合などは下記のように 使用すると便利かも、です。 ------------------------------------------ //DataTableの宣言 System.Data.DataTable OldDT = new DataTable(); System.Data.DataTable NewDT = new DataTable(); //OldDTにデータを格納 // ... //NewDTにデータをコピー NewDT = OldDT.Copy(); //NewDTのコミット(?) NewDT.AcceptChanges(); //NewDTへの編集 // ... //NewDTが編集された行だけを抜き出す。 NewDT.DefaultView.RowStateFilter = System.Data.DataViewRowState.ModifiedCurrent; | ||||
|
投稿日時: 2005-02-15 11:59
ありがとうございます。
| ||||
|
投稿日時: 2005-02-15 20:42
・・・何がどうで、どうしたいのか、さっぱりわからないのですが。。。 同じ構造だからといって、同じデータであるとは限らないですよね?はぎ丸さんの例のように、OldDTをコピーしてNewDTを作るのなら、NewDTにコピーすること自体、不要です。DataRow.Item(DataColumn|String|Integer, DataRowVersion.Original)プロパティで、元の値が取り出せます。 同じものを指すデータであることを識別するためのキーがあるなら、DataTable.Selectメソッドを使って、NewDTの各行について、OldDTに同じデータを示す行があるか調べます。ないなら新しいデータだし、あるならすべての列が同じ値かチェックして、違うものがあれば更新されています。 まず、リアルな人に聞いてください。その人に解決できなくてもいいのです。その人が、あなたの質問を理解するためにどのような情報が必要か、それをあなたが知ってください。そして、その情報をすべて書き出してください。 それと、あなたが目の前にある問題を解決する方法を知りたいのと同様、我々も問題が解決できたのか、どのようにして解決できたのか知りたいのです。「ありがとうございます」「参考にします」だけでなく、解決できたのか、どのように自分のケースに適用したのか、教えてください。 _________________ |
1