こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access 削除時にレコード有無チェックは必要?

お世話になります。
Access2010

10個あるテーブルでそれぞれ社員番号を条件にVBAにて削除クエリを
実行してます。
メインのテーブルである社員テーブルには全社員が登録されて
いるので、無条件に削除クエリを実行しておりますが、他の9個に
ついては必ずしも該当レコードが存在するとは限りません。

なので、他の9個のテーブルについては削除クエリを実行する前に、
削除する社員番号が存在するかをチェックした上で(社員番号をキーに
FindFirst)、存在したら削除クエリを実行してます。

今更ですが、わざわざチェックする必要があるのかな?と。。

元々は「社員番号が存在しないテーブルに対して、わざわざ削除クエリ
を実行する意味がない」と思い、チェックするようにしました。

なんとなく、無条件で削除クエリをやるよりは
 該当レコード有り?
   Yes ⇒ 削除クエリ実行
   No  ⇒ 何もしない
とやった方がキレイかなと。


しかし、削除するレコードの有無に関係無く削除クエリを実行しても
よいのでは?と思った次第です。
要するに該当するレコードが無ければ削除されないし、あれば削除
されるし。

一般的に削除クエリを実行するときは、無条件にやるものなのでしょうか。

ご教示の程、宜しくお願い致します。

投稿日時 - 2016-09-13 09:44:29

QNo.9228449

困ってます

質問者が選んだベストアンサー

どちらでもいいと思います。
この辺はプログラマーの好みですので。

私なら、チェック無しで削除クエリを実行するかな。
レコード存在チェック、削除クエリ実行と2度テーブルにアクセスするのが無駄に思いますので。


さらに言えば、リレーションシップを設定して、連鎖削除をオンにしておけば、一側のテーブル(マスターテーブル)のレコードを削除するだけで、関連付けされたすべてのテーブル内の関連レコードが自動で削除されますので、その機能を利用しますね。

投稿日時 - 2016-09-13 10:33:45

補足

hatena1989さま
いつもご回答ありがとうございます。

ちなみに、社員番号をキーにFindFirstする前に当該テーブルが
EOFか否かのチェックもしてました。
「1レコードも存在しないのに削除クエリを実行する意味が
無い」ということでチェックしてたかと思うのですが、
このチェックも不要ですよね。
※1レコードも存在しないのに、削除クエリ実行してエラーに
 ならない?ってことを懸念。

仰る通りリレーションシップの設定すれば、関連付けされた
テーブル全て削除できるんですよね。。
そういう機能があるのは知ってるのですが、使ったことが無い
ので、思ってもないレコードが削除されやしないか心配で
使ったことがありません。

投稿日時 - 2016-09-13 11:06:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Q、削除時にレコード有無チェックは必要?
A、不要です。

投稿日時 - 2016-09-13 10:40:55

補足

f_a_007様
ご回答ありがとうございます。
やっぱり不要なのですね。

了解です。ありがとうございました。

投稿日時 - 2016-09-13 11:07:10

あなたにオススメの質問