レコードを削除する:ExcelからADOでAccessデータベースを操作

ExcelからADOでAccessデータベースのレコードを削除するには、レコードセットを削除したいレコード位置に移動した後、DELETEメソッドを実行します。

今回は、MoveLastで最終レコード位置に移動し、確認メッセージを表示したあとDELETEメソッドを実行します。

※ このTipsより、Excel2010 と Access2010 で実行します。

ADOでカレントレコードを移動するには下記のメソッドを使用します。

  • MoveFirst:先頭に移動します。
  • MoveLast:最後に移動します。
  • MoveNext:次に移動します。レコード位置が最後の場合エラーが発生するため、エラー対策が必要です。
  • MovePrevious:前に移動します。レコード位置が先頭の場合エラーが発生するため、エラー対策が必要です。
  • Move:指定したレコード数移動します。



Homeに戻る > Excel データベースのTipsへ

ExcelからADOでレコードを削除する実行画面

顧客管理テーブルを使用しました。

現在、下画像のように2000件のレコードが登録されています。
この最終レコード、顧客IDが2000の「山本奈美」さんのレコードを削除します。
顧客マスターの最終レコード

「データを削除する」ボタンをクリックすると開始します。
データの削除フォーム

「削除してもよろしいですか?」のメッセージが表示されるので「OK」ボタンで削除します。
削除の確認メッセージ

削除された顧客管理テーブルです。
顧客IDが2000のレコードがなくなっています。
最終レコードが削除されたテーブル

コード

Option Explicit

Private Sub CommandButton1_Click()
    Dim db As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim nans As Integer
    
    '売上管理のACCDBファイルに接続します
    Set db = New ADODB.Connection
    db.Provider = "Microsoft.Ace.OLEDB.12.0"
    db.Open "C:\MyHP\ExcelTips\顧客管理.accdb"

    'レコードセットを開きます
    Set rs = New ADODB.Recordset
    '売上テーブルを開きます
    rs.Open "T_顧客マスター2000件", db, adOpenDynamic, adLockOptimistic
    '最終レコードに移動
    rs.MoveLast
    nans = MsgBox("顧客ID:" & rs("顧客ID") & vbCrLf & "顧客名:" & rs("顧客名") & vbCrLf & _
        "を削除してもよろしいですか?", vbOKCancel, "Excelでデータベース")
    
    If nans = vbOK Then
        'レコードを削除する
        rs.Delete
    End If
    '閉じる
    rs.Close
    db.Close
    '終了処理
    Set rs = Nothing
    Set db = Nothing
End Sub


Homeに戻る > Excel データベースのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved