Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2013)
別テーブルで使用しているレコードの削除回避の方法について
投稿日時: 21/02/21 10:38:17
投稿者: にしひろ

初期登録のためのテーブル(氏名とか)があり、それを利用(コンボボックス)して、インプット用テーブルを構築しています。初期登録で入力したレコードを整理するため、削除ボタンを作って、レコードを削除しようとしていますが、メインのインプット用テーブルに使用しているデータであれば、削除不可にして、メッセージを出したいです。
 
削除するときに、一度メッセージを出すVBAを書いて、削除することは可能になっていますが、別テーブルで使用しているかどうかを判定して、削除不可にするには、どのように書き換えるべきでしょうか?
教えていただきたく、よろしくお願いいたします。
 
下のコードで、レコードは削除できるようになってます。
 
 
Private Sub コマンド17_Click()
 
    Dim rs As DAO.Recordset
    Dim nRet As Long
 
    Set rs = Me.Recordset
        nRet = MsgBox("削除してよろしいですか?", vbYesNo)
    If nRet = vbNo Then
        Exit Sub
    Else
        rs.Delete
        Set rs = Nothing
    End If
      
End Sub

回答
投稿日時: 21/02/21 14:56:10
投稿者: hatena
投稿者のウェブサイトに移動

「リレーションシップ」で関連するテーブルを結合して、「参照整合性」にチェックを入れておけば、参照先のテーブル(多側のテーブル)に関連するレコードがあれば削除しようとするメッセージが出て削除できないようにできます。
 
リレーションシップの設定と効果 - もう一度学ぶMS-Access
https://www.accessdbstudy.net/entry/20140820/p1
 
上記の説明で分からない場合は、
「初期登録のためのテーブル」と「メインのインプット用テーブル」のフィールド構成、主キー設定を提示してください。

投稿日時: 21/02/26 12:20:51
投稿者: にしひろ

遅くなりました。
実際、やってみたら、削除できないようになっていました。
教えていただいて、ありがとうございました。