- - PR -
データセットを使ったデータ削除
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-07-28 12:12
vs2005 vb win xp
いつも拝見させていただいております。 1つ質問があります。今、データセットをループで回して、削除flgがたっているものを削除するという処理をいれております。 lng_Delcnt = Me.BindingContext(g_obj_DataSet, "Tb_××").Count For lng_Deldscnt = 0 To lng_Delcnt If g_obj_DataSet.Tables("Tb_××").Rows(lng_Deldscnt)("削除FLG") = True Then '削除チェック項目にチェックがついていた場合 g_obj_DataSet.Tables("Tb_××").Rows(lng_Deldscnt).Delete() End If Next とループをかけているのですが、削除をした後のif文で、位置 2(場所によってかわる) に行がありませんと表示されてしまします。 データセットを削除することによって、データセットのmaxカウントが変わってしまい、その結果、データがないレコードにアクセスしようとして、エラーが起こってしまっているみたいです。 データを削除したときに、カウントを-1とかしてみてるのですが、それだとfor文がうまく回ってくれないのと、もっとスマートなやり方はないかなと思って投稿しました。 わかる方がいらっしゃいましたら、ご教授お願いいたします。 | ||||
|
投稿日時: 2006-07-28 12:50
前後の関係が分かりませんが、DELETE文を発行すればいいだけでは? と思うのは私だけでしょうか・・・
| ||||
|
投稿日時: 2006-07-28 12:53
ForじゃなくてForeachを使ってみたらどうでしょう。
| ||||
|
投稿日時: 2006-07-28 13:03
こんにちは。
Foreach でも Delete をすると CurrentRow の位置が変わってしまっ てダメだったような気がします。むしろ Foreach の方がそのあたり面倒だっ たような。 自分だったら、逆に lng_Delcnt から 0 へのループを作ります。 (そうすれば Delete しても lng_Deldscnt の位置は変わらないので) _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2006-07-28 14:12
ひろれいさん、どっとねっとふぁんさん、ぽぴ王子さん返答ありがとうございます。
lng_Delcnt から 0へのループでうまくいきました。 lng_Delcntから0へループさせるなんて思いもつきませんでした。 勉強になりました。ありがとうございます。 |
1