ループしながらビューを Delete すんな!という話[お仕事]
(2014-09-22 12:51:29) by shinoda


< ページ移動: 1 2 >

VB.NET で、データセットから作成したビューのレコードを、ループさせながらインデックス指定で直接削除すんなよという話。

インデックスを指定してレコードを削除する場合も、例えば、

view.AllowDelete = True
Do
    Dim i As Integer = view.Find("消したいレコードに含まれているキーワード")
    If i <> -1 Then
        view.Delete(i)
    Else
        Exit Do
    End If
Loop

みたいな使い方であれば問題ないんだけど、ループしながらインデックスをアップしつつ消しちゃうと、その瞬間にレコードが削除されたことでその後のレコードのインデックスが変化してしまい、正常にデリートできない(削除予定のレコードが並んでいた場合、次のレコードを飛ばしちゃうことになっちゃう)という話。
ビューの Delete メソッドは直接レコードを削除しちゃうんだよね。

例えば、

view.AllowDelete = True
Dim max As Integer = view.Count - 1
For i = 0 To max
    if view(i).hoge = "消したいレコードに含まれているキーワード" Then
        view(i).Delete()
    End If

< ページ移動: 1 2 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8