Access VBA DAOでレコードを削除する方法。

VBA でレコードを削除する場合も、要領は更新と同じです。まず該当するレコードまで移動してから、削除する必要があります。

今回は更新のプログラムをコピーして、少しだけ変更し、削除のプログラムを作ってみましょう。

ここまで Step 順で進めてきた人は、ほとんど説明しなくても理解できると思います。削除はかなり簡単です。


【1】Accessのファイル「SampleDB020.mdb」を起動し、テーブル「T01Prefecture」を開きます。

access-vba-220.gif


【2】一番最後のレコードが、「99 グアム」になっていることを、確認しておいてください。

access-vba-221.gif

これからこのレコードを削除します。無い場合は作成してください。PREF_NAMEの文字列は何でもかまいません。

レコードを確認したらテーブルを閉じます。


【3】VBE を起動して、標準モジュールの test6 を表示します。

access-vba-222.gif

*VBEは「Altキー」+「F11キー」で起動できます。


【4】「test6」に以下のように、Subプロシージャ deleteData() を追加します。


Sub deleteData(pCd As Integer)
  Dim db As DAO.Database
  Set db = CurrentDb
  
  Dim rs As DAO.Recordset
  Set rs = db.OpenRecordset("T01Prefecture")
  
  rs.Index = "Primarykey"
  rs.Seek "=", pCd
  
  If rs.NoMatch Then
    Debug.Print "該当するレコードは見つかりませんでした。"
  Else
    rs.Delete
    Debug.Print "レコードを削除しました。"
    dispData
  End If
  
  rs.Close
  Set rs = Nothing
  db.Close
  Set db = Nothing
  
End Sub


access-vba-223.gif


プログラムの準備ができたら、早速実行してみましょう。

【5】イミディエイト ウィンドウから deleteData() を実行してください。

call deleteData(99)

access-vba-225.gif

*引数にはテーブルに存在する PREF_CD を指定します。


【6】削除のメッセージと、レコードの一覧が表示されました。

・PREF_CD が 99 の場合
access-vba-226.gif

・PREF_CD が 100 の場合(存在しない)
access-vba-228.gif


【7】イミディエイト ウィンドウをスクロールして、レコードが削除されていることを確認してください。

access-vba-227.gif


【8】テーブル「T01Prefecture」側でも、レコードが削除されていることを確認してください。

access-vba-229.gif


【9】deleteData()を使って、レコードを削除する練習をしてください。

PREF_CD が 1~47 までのレコードは、今後も使いますので削除しないでください。

削除用に addData() で新しいレコードを追加するか、テーブルを開いて直接入力してもかまいません。


【解説】

(1)更新の時とほとんど同じです。変更箇所を赤枠で囲んでみました。

access-vba-224.gif


(2)イミディエイト ウィンドウから、deleteData() を引数を指定して呼び出しています。

call deleteData(99)

引数は整数型です。PREF_CD は必ずテーブルに存在する値を使います。


(3)整数型(Integer)の引数を1つ受け取ります。

Sub deleteData(pCd As Integer)


(4)レコードを検索し、対象となるレコードに移動しています。

rs.Index = "Primarykey"
rs.Seek "=", pCd


(5)実際にレコードを削除している部分です。

If rs.NoMatch Then
  Debug.Print "該当するレコードは見つかりませんでした。"
Else
  rs.Delete
  Debug.Print "レコードを削除しました。"
  dispData
End If

もしレコードが見つからなかったらメッセージを表示して、見つかったら削除するという処理です。

既に対象となるレコードに移動しているので、あとは「rs.Delete」だけで削除できます。

*削除の時は rs.Update は不要です。


これでデータベースを操作する時の基本となる、「検索、追加、更新、削除」を一通り体験しました。あとはフィールド数が増えるだけで、他のテーブルでも要領は同じです。


【ワンポイント】
もっと簡単で強力なSQL文を使う方法がありますので、後に説明します。


スポンサードリンク

スポンサードリンク






Access VBA 初心者入門講座 TOPへ