マイクロソフトアクセス(Access)にて、操作ミスや入力ミスを防ぐためにテーブルを直接操作できないように、非連結のフォームを使って対応する場合があります。
しかし、
ポイント
頻繁にテーブルを使うような作業やレコード数が少ないような場合は、シンプルにフォームにテーブルをレコードソースにして方が簡単
です。
編集許可機能の実装
テーブルをフォームにしていると確実に困るのが、一回の操作ミスで誤入力してしまったり、削除してしまったりしてしまうことです。気づかずにデータがおかしいという事で無駄な時間を費やしてしまう事もありました。
そこで、確実にやっておいた方がよいのが、
デフォルトで編集制限機能
だと考えます。間違って編集しそうになっても、許可ボタンをクリックして編集モードにしない限り編集がされませんので誤操作するリスクが低減します。
過去の記事にまとめてありますので参考にどうぞ。
https://pctips.jp/pc-soft/access-typo201907/
レコード削除機能の実装
さらに詳しく
非連結フォームだと、テーブルから対象レコードの抽出などをしなければなりません。
https://pctips.jp/pc-soft/access-serach-vba-howto201907/
しかし、非連結でないフォームの場合は、該当レコードが選択されていれば、簡単なコードで削除することが可能です。
VBA削除コード
Private Sub client_del_Click() Dim lans As Long If Me.NewRecord = True Then MsgBox "新規レコードは削除できません" Exit Sub End If lans = MsgBox("クライアント削除してもよろしいですか?", vbYesNo + vbInformation, "確認") If lans = vbNo Then Exit Sub End If On Error GoTo ErrExit DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True Exit Sub ErrExit: MsgBox "編集モードになってない為か、エラーが発生した為、削除できませんでした" & vbCrLf & "エラー内容: " & Err.Description End Sub
上のVBAコードを削除ボタンに貼り付けるだけで削除機能が実装できました。
もちろん、
ココがポイント
編集モードにしない場合は、エラーで操作は停止します。
このような簡単な機能で人的ミスも低減できると思いますので参考にどうぞ。
あくまでも、レコードが少ないデータの場合であり、沢山のレコードが存在するようなテーブルでは、フォームにレコードソースをダイレクトにするのは避けた方がいいですね。