前回、編集ボタンの作成まで出来ましたので、今回は削除機能の実装をしていきたいと思います。

まずは、「F_入力」フォームに[削除]ボタンを追加します。
名前:buttonDelete
標題:削除
次にこの[削除]ボタンのクリック時イベントプロシージャに次のように記述します。
Private Sub buttonDelete_Click()
Dim ans As VbMsgBoxResult
ans = MsgBox("このレコードを削除してもよろしいですか?", vbYesNo + vbExclamation, "削除")
If ans = vbYes Then
'削除実行
DoCmd.RunSQL "DELETE * FROM T_名物 WHERE ID = " & CStr(Me.ID.Value)
End If
'フォームを閉じる
DoCmd.Close acForm, Me.Name
End Sub
ここでは何を行っているかというと、まずMsgBoxでメッセージを表示させレコードの削除の確認を行っています。そして[はい]のボタンが押された場合に「T_名物」テーブルから該当のレコードを削除しています。このDoCmd.RunSQLというのはSQLを実行するための命令で、指定したSQL文を実行できます。ここではテーブルからレコードを削除するSQL文(DELETE * FROM T_名物 WHERE ID = [番号])を実行しているのですが、例えばID=5のレコードを削除したい場合は次のように記述します。
DELETE * FROM T_名物 WHERE ID = 5
SQL文は独特な書き方をしており慣れるまでは分かりづらいと思いますが、このSQL文が書けるようになると複雑な処理も行えるようになりますのでぜひ覚えてほしいと思います。
ではここで、一旦保存してデザインビューを閉じたら、「F_名物」フォームをフォームビューで開いてみてどれかレコードを選択して[編集]ボタンをクリックしてください。

ここで[削除]ボタンを押してみます。

するとこのように「このレコードを削除してもよろしいですか?」というメッセージが表示されます。
削除する場合は[はい]ボタン、削除しない場合は[いいえ]のボタンを押します。
[はい]ボタンを押してみます。

すると今度は、「1件のレコードが指定したテーブルから削除されます。」というメッセージが表示されました。
このメッセージはAccessで標準で用意されているメッセージでレコードが更新されたり削除されたりする場合に表示されるようになっています。設定で非表示にすることも出来ますが、今回はこのままで使うことにして[はい]ボタンを押してみます。

すると入力フォームが閉じ、「F_名物」フォームのID=12のレコードが無くなっているのが確認できると思います。
とりあえずこれでレコードの削除が出来るようになりました。
では最後に新規追加の時に[削除]ボタンを押せないようにします。
これは新規追加の時に削除をしようとするとエラーが起きてしまうのを防ぐためです。
「F_入力」フォームのForm_Load()イベントプロシージャを次のように書き換えます。
Private Sub Form_Load()
If Me.OpenArgs = "NewRecord" Then
'新規レコード
DoCmd.GoToRecord , , acNewRec
'削除ボタンを非活性
Me.buttonDelete.Enabled = False
Else
'該当する先頭レコードに移動
Me.Recordset.FindFirst "ID = " & Me.OpenArgs
End If
End Sub
9行目に「Me.buttonDelete.Enabled = False」というのが追加されているのが分かると思います。この処理で[削除]ボタンを使用できない状態にしています。
では保存したら「F_入力」フォームのデザインビューを閉じ、「F_名物」フォームから[追加]ボタンをクリックしてみます。

[削除]ボタンが押せなくなっているのが分かると思います。
以上で削除機能の実装は完了です。
今回、「入力フォーム」を使っての追加、編集、削除の機能を作成しました。
次回以降、検索や並び替えといった機能の実装を行っていこうと思います。
<関連記事>
【初心者向け】入力フォーム(その1:追加)
【初心者向け】入力フォーム(その2:入力フォームの作成)
【初心者向け】入力フォーム(その3:イベントプロシージャの作成)
【初心者向け】入力フォーム(その4:編集ボタンの作成)
【初心者向け】入力フォーム(その5:削除機能の実装)
スポンサーリンク