- PR -

データテーブルの参照方法

1
投稿者投稿内容
人間の○ず
会議室デビュー日: 2006/03/24
投稿数: 4
投稿日時: 2008-06-30 17:41
お世話になります。

VS2003 VB WinXP winform

データテーブルの参照方法で悩んでいます。

ソートした状態である条件で削除するような処理を行っているのですが
それが一つ前のレコードを削除したいのです。
for eash のループで参照すると現状レコードのみしか取れないようだし
データテーブル自体にカレント行という考えがないようなので難しいかも
しれませんが...

参考までにダメだった場合の例を載せます
For j As Integer = 0 To dt.Rows.Count - 1

If 条件1 Then
dt(j-1).Delete()
End If

Next

どなたかお分かりになりますでしょうか?
宜しくお願い致します。


[ メッセージ編集済み 編集者: 人間の○ず 編集日時 2008-06-30 17:42 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-06-30 17:57
ソートした状態、とおっしゃってますが、データテーブルの内容自体がソートされて
ないんじゃないでしょうか?
データテーブルがソートした状態で最初から作られているなら別ですが。

ソートした状態でテーブルを作り直すか、ひとつ前の行のキーとなるデータを保持して
おいて、そのキーから行を特定して削除する、といった方法をとる必要があると
思います。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-30 17:57
コード:
dt.Rows(j-1).Delete()


でいける気がしますが。。。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-06-30 23:19
削除する行が複数あるなら後ろからの方がいいのでは?

コード:
For j As Integer = 0 To dt.Rows.Count - 1

If 条件1 Then
dt(j-1).Delete()
End If

Next


これだと、2行あるとき、最初の行で削除されたら2行目は評価されませんよ。

burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-30 23:34
引用:

これだと、2行あるとき、最初の行で削除されたら2行目は評価されませんよ。



DataRow.Delete()はコレクションから削除されるわけではなく
RowStateがDeletedになるだけなので関係ないと思います。
ただjは1から開始すべきですね。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-06-30 23:46
失礼しました。
未確認情報あげてすみませぬ。
人間の○ず
会議室デビュー日: 2006/03/24
投稿数: 4
投稿日時: 2008-07-01 09:28
皆様、ご回答ありがとうございます。

どっとねっとふぁんさん

引用:

ソートした状態、とおっしゃってますが、データテーブルの内容自体がソートされて
ないんじゃないでしょうか?


ロジックを引用する時に割愛してしまいました。
一度データビューに置き換えてソートしてデータテーブルに落としなおしています。

引用:

そのキーから行を特定して削除する、といった方法をとる必要があるとおもいます


できれば一つ前のという消し方がしたいと思いまして。
方法がなければそちらも考えます。

burton999さん
引用:

でいける気がしますが。。。


そうですか。。
もう少しやってみます。

ぴあちゃんさん

引用:

削除する行が複数あるなら後ろからの方がいいのでは?


後ろからでもよさそうですね
ありがとうございます。
1

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