![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
クライアント側にMicrosoft Access 2010、サーバ側にSQL Server 2008 R2を使った業務ソフトを開発しています。
少々込み入った質問をしますが、お付き合いください。
帳票フォームである列のデータをdeleteキーで削除しようとすると、
「DELETEステートメントはREFERENCE制約"xxxx"と競合しています。競合が発生したのは、データベース "zzzzz"、テーブル"yyyyy"です。」
というメッセージが出ることがあります。
このメッセージですが、子レコードを持つレコードを消そうとした時に出ることはわかっています。
今回、このメッセージを出さずに、「子レコードを消してから親を消してね」というメッセージに差し替えたいと考えています。
既定のメッセージはシステム的でわかりづらいので。
しかし、イベントプロシージャで上記メッセージを感知する方法がわかりません。
Private Sub Form_Delete(Cancel As Integer)
~~~~~
End Sub
というサブプロシージャの中でどうコードを書くか色々調べたのですが、
どうやってもメッセージは出てきてしまいます。
Err.Numberも0と表示されます。
通常のエラーではないので、感知することはできないのでしょうか。
ご存知の方はアドバイスお願いします。
![「[Access]削除時のエラーメッセージ」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/17232618_5497becdddd0a/M.jpg)
No.1ベストアンサー
- 回答日時:
No.2
- 回答日時:
私自身はAccess一辺倒なのですが・・・(汗)
Err.Numberによるトラップができないとのことですが、
既に「子レコードを持つレコードを消そうとしたとき」と
原因を把握されているのでしたら、それを検知する
コードを組む、という対応ではまずいのでしょうか。
(もちろん、エラーコードでの対処の方が手軽では
あるのですが(汗))
「子レコードの削除」を求める、ということは、当該
テーブルの参照は可能になっているものと思います。
ですので、そのテーブルに対し、結合キーの値が削除
対象と同じものの有無を確認し(→リンクテーブルとして
設定済みならDCount関数が適用できますし、
そうでなければRecordsetを開いてRecordCountを
確認してもOk)、該当レコードがあればMsgBoxを表示、
なければ削除を実行、とすれば、ご質問のエラーは
回避できるのではないでしょうか。
(子側テーブルが複数だったとしても、合算で判定するなり、
「以下のテーブルに子レコードがあります」といった
MsgBoxにするなり、といった対処もありえるかと)
「それはわかっているが、コードが長くなるので避けたい」
というのがご質問の主旨でしたらすみません(汗)
回答ありがとうございます。
最後にありますように、時間をかけたくない、コードも長くしたくない、というのが実情でして…。
今回はyorozu_yaさんのアドバイスを使わせてもらいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AceessVBA 非同期処理について
-
access2000でつまづいてます
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
セルの右クリックで出る項目を...
-
Accessクエリーで両方のテーブ...
-
ACCESS で マクロの中でフィ...
-
VBAで複数の数式セルを最終行ま...
-
アンドロイド おサイフケータイ...
-
APN設定について教えていただけ...
-
ファイルメーカー8.5
-
アクセスのコンボボックスのデ...
-
必須入力項目と入力必須項目
-
Accessのサブフォームで#Name...
-
ACCESSでテーブルのチェックを...
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
Access テキスト型に対する指定...
-
正しく入力されていない項目も...
-
空白をそのままインポートする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「更新に必要なキー列の情報が...
-
Accessの更新前処理について。D...
-
access2000でつまづいてます
-
access count数を変数に格納
-
ACCESSのFindコマンドが遅い
-
半角スペースの置換でエラーを...
-
Access VBAで自動連番を振るには
-
初心者です。Access レポートで...
-
VBScript+SQLServerでcountがう...
-
Access2003でのテーブルの有無確認
-
ECサイトの購入後の在庫処理
-
VB2010のSQLを使ったレコードカ...
-
Accessのテーブルのレコ...
-
cobolのカーソルについて
-
Access VBA
-
[Access]削除時のエラーメッセ...
-
ADOでループすると1レコードず...
-
Set rst = db.OpenRecordset("S...
-
AccessVBAについて
-
ACCESS、EXCELの限界?
おすすめ情報