- PR -

DataTableの値だけクリア

1
投稿者投稿内容
ふらわー
常連さん
会議室デビュー日: 2008/01/11
投稿数: 33
投稿日時: 2008-03-07 12:49
VB.NETにてWindowsアプリケーションを開発しています。

DataTableにDBから値を入れてそれを元にActiveReportで帳票出力させています。
DataTableには一度DBから値を取得しています。
DataTableはこんな感じです。

コード 金額1 金額2 日付
 01 1000 2000
02 3000 10000

わけあって上記の日付の部分は取得できないため、DataTableのコードを元に再度DBにアクセスしています。

コード 金額1 金額2 日付
 01 1000 2000 2008/03/01
02 3000 10000 2008/02/01

2回目でようやく目的のデータが取得できるというような構造になっています。

次にコードと日付でソートをかけたいので、DataViewを使用してソートしました。
これを元のDataTableに戻したいのですが、DataTableのクリアメソッドでは構造までクリアしてしまいますし、クリアせずにDataTableに追加すると元のデータを持ったままなので2倍になってしまいます。
なんとかDataTableの値だけをクリアする方法はないでしょうか?

色々調べましたが、新たなDataTableにコピーしてバインドと言う形を取っているものばかりでした。
やはりこうするしかないのでしょうか??

ActiveReport側でこのDataTableを利用した処理は完成しているので、それを今更変更したくないのです。。。

どうかよろしくお願いいたします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-03-07 12:53
DataTable.Rows.Clear()
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-03-07 13:36
というか DataView は所詮 View なので、データの元となる DataTable の行をクリアしてしまったら DataView の行も空になるのですが。

// DataView.ToTable して DataTable.Rows.Clear して一つずつ ImportRow?

[ メッセージ編集済み 編集者: Hongliang 編集日時 2008-03-07 13:37 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-03-07 14:52
引用:

コード 金額1 金額2 日付
 01 1000 2000 2008/03/01
02 3000 10000 2008/02/01

これは1このDataTableなんですよね。


dataTable.DefaultView.Sort = "コード,日付";
dataTable = dataTable.DefaultView.ToTable();
じゃだめですか?

「わけあって」も気になりますね。別サーバとかだったらしょうがないけど。
1

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