- - PR -
データテーブルの上書き
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-11 17:04
VS2005 VB win xp winform
いつも、拝見しております。 質問があります。 データテーブルのデータを昇順にし、データを加工させ、データテーブルを上書きするというのは可能でしょうか? やりたいことは、コード 1 , 5 , 3 , 8 とある、レコードを コードで昇順にし、1から連番で振りなおしたいのです。 現状、データテーブルの値をDataViewに入れ昇順し、新しく作ったデータテーブルに 追加していき、そこでできたデータテーブルをループさせて連番を振っています。 Dim dt2 As DataTable = ds.Tables("テスト1").Clone() Dim dv As DataView = New DataView(ds.Tables("テスト1")) dv.Sort = "コード" 'ソートされたレコードのコピー For Each drv As DataRowView In dv dt2.ImportRow(drv.Row) Next For i = 0 To dt2.Rows.Count - 1 dt2.Rows(i)("コード") = i + 1 Next 'ds.Tables().Add(dt2) 上記のような、コードを記述しております。 加工後のdt2を、大元のds.Tables("テスト1")に上書きするといったことは、できるのでしょうか?? また、違うやり方で実装できるやり方がございましたら、ご教授お願いいたします。 | ||||||||
|
投稿日時: 2006-10-11 17:28
こんにちは。
せっかく DataView でソートしているので、それを ImportRow しても、でき たテーブルがその順番に並んでいるとは限らないんじゃないでしょうか。 ということで、ソートしたものをコピーするタイミングで番号を振るべきかと思って ちょっと書いてみました。 VB じゃなくて C# になってますが。
テーブルを上書きするというよりは、データセット中のテーブル "テスト1" を新し いテーブルで置き換えるというような感じになると思います。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2006-10-11 17:43
よく考えると、別に Clone を作る必要はないような気がしてきました。
DataView から元の DataTable を書き換えちゃってもいいような。 ということで改訂版。
気になるのは、DataView のソート条件にあたる列の元データを書き換えても DataView の並びが変化したりしないかというところだったりしますが。 皆さんガンガンツッコミお願いします。(C)某アンドロイドの人 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2006-10-11 18:29
ぽぴ王子さん、返答ありがとうございます。
改訂版の方で行ったところ、無事実装することができました。 直接書き込んでしまうといった手が、あったのですね。
のところですが、登録時にこの処理を入れており、登録をしたら、クリアしてしまうので問題はなさそうでした。
も、使う機会がありましたら、ぜひ参考にさせていただきます。 ありがとうございました。 |
1