HOME > 即効テクニック > Excel VBA > その他関連のテクニック > エクセルユーザのデータベース活用法(基礎編5)-レコードの削除

即効テクニック

その他関連のテクニック

エクセルユーザのデータベース活用法(基礎編5)-レコードの削除

(Excel 2000)
ここではレコードを削除するために削除したいレコードを抽出したレコードセットを作成し、ループ処理で全部削除します。

=>  レコードセット名.Delete   (カレントレコードが削除される)

注意しなければならないのは、抽出のときに指定した条件と一致するレコードがなければ、削除しようにも、削除するデータがありません。レコードのないレコードセットを開いたときには、カレントレコードがBOF(Beginning Of File)となりますので、レコードセットのBOFプロパティーの値を取得して分岐処理をしておくことになります。
例えば、コードが"1001"の得意先売上データをすべて削除する場合は・・・
Sub Sakujo()
    
    Dim i As Integer
    Dim MySQL As String
    Set MyCon = New ADODB.Connection
    Set MyRs = New ADODB.Recordset
        
    MyCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                                & "Data Source=" & MyPath
    MyCon.Open
    Set MyRs = New ADODB.Recordset
    MySQL = "SELECT * FROM DATA WHERE コード=1001"
    MyRs.Open MySQL, MyCon, adOpenStatic, adLockOptimistic
    
    If MyRs.BOF = True Then
        MsgBox "データがありません。"
        GoTo Exit_Sakujo  '終了処理用の行ラベルに飛ぶ
    End If

    Do Until MyRs.EOF
        MyRs.Delete    '<=削除
        MyRs.MoveNext
        i = i + 1
    Loop
    
    MsgBox i & "件のデータを削除しました。"

Exit_Sakujo:  '分岐処理用行ラベル

    MyRs.Close: MyCon.Close
    Set MyRs = Nothing: Set MyCon = Nothing
    
End Sub