会社員プログラマー「Kaia May」のコードの備忘録サイトです〜!

AccessVBAで帳票フォームで指定した一つのレコードを削除する

AccessVBAでフォームで指定した一つのレコードを削除する

 

データソースにテーブルAとBで構成されたクエリを設定してある帳票フォームで、例えば削除ボタンを作って、以下のDoCmdオブジェクトのDeleteメソッドを使うと、「クエリの中のテーブルAのレコードは消えたけど、Bのテーブルのレコードは消えてない」という場合があったので、SQLで両方のテーブルの削除したいレコードをしっかり指定して削除する方法を書いておく。

までもこれは基本のコードですね。

以下のコードは帳票フォームの詳細にレコードが表示されるようになっていて、そこのSeikyuIDというテキストボックスコントロールに各レコードの請求番号というのが表示される。んでもって削除ボタンも作っておいて、それをクリックすると以下のコードで、テーブルAとBの中の請求番号のレコードが削除されるという流れになっている。

 

On Error GoTo ErrExit
DoCmd.SetWarnings False
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim Ksql As String
Dim Bsql As String
Dim DelID As Integer
DelID = Me.SeikyuID
Ksql = "SELECT * FROM テーブルA WHERE 請求番号 = " & DelID 'テーブルAのレコードを削除
Set db = CurrentDb()
Set rs = db.OpenRecordset(Ksql, dbOpenDynaset)
rs.Delete
Set rs = Nothing
Bsql = "SELECT * FROM テーブルB WHERE 請求番号 = " & DelID 'テーブルBのレコードを削除
Set rs = db.OpenRecordset(Bsql, dbOpenDynaset)
rs.Delete
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
DoCmd.SetWarnings True
MsgBox "指定したデータは削除されました。"
Exit Sub
ErrExit:
MsgBox "エラーが発生した為、削除できませんでした。" & vbCrLf & "エラー内容: " & Err.Description

>bokucode

bokucode

遅ればせながらプログラミングを始めた静岡在住の30代の会社員プログラマー「Kaia May」です!
いろんな言語のコードに挑戦していきたいと思っていて、その中でメモしておきたいコードや今後も使えるコードやその説明などを記録していきます。
他にも参考になったおすすめサイトや書籍なども紹介していきます。

CTR IMG