- ベストアンサー
ACCESSの削除処理
AファイルとBファイルを電話番号で関連づけして関連づけされたBファイルのレコードを削除したいのですがACCESSのクエリ削除ではどうすればよいのでしょうか。AとBは1対1の関係です。 宜しくおねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
AとBが1対1で関連付けられたレコードならば、質問の通りならばBを全て削除。 ならば、 DELETE FROM B; で事足ります。 そうでなくと、B独自のレコードは残すのであれば No1さんのやり方。 ただし、サブクエリが苦手であれば、かって知ったる DLookup関数でも。 DELETE * FROM B WHERE TEL=DLookup("TEL","A","TEL='" & TEL & "'"); フィールド:TEL テーブル:B レコードの削除:Where 抽出条件:DLookup("TEL","A","TEL='" & TEL & "'") でも同じこと。 ただし、DLookup関数の実行速度はチト遅くなります。 No1さんの回答が3倍速だと思います。
その他の回答 (2)
- x0000x
- ベストアンサー率52% (67/127)
質問者さんの質問内容ではテーブル名、カラム名が例示されていません。 >パラメータ telnoを求める画面がでてきます。 #1さんのテーブル名、カラム名(電話番号)は、貴方の環境のテーブル名とカラム名に変更する必要があると思いますが…?
お礼
自分の環境のテーブル名とカラム名に変更しているのに出てくるということは、正しく設定されていないということですね。 なんどもありがとうございます。
- kazuhisa01
- ベストアンサー率32% (158/487)
SQL文ならこれでいけますが、クエリは苦手で・・・参考までに DELETE FROM TABLE_B WHERE TABLE_B.TELNO = (SELECT TABLE_A.TELNO FROM TABLE_A,TABLE_B WHERE TABLE_A.TELNO = TABLE_B.TELNO)
お礼
ありがとうございます。早速試してみます。
補足
パラメータ telnoを求める画面がでてきます。Aファイルに存在する電話をBファイルから一気にバッチで削除したいのですが、自分のパンチミスでしょうか。
お礼
削除クエリのフィールド:~抽出条件に入力しているのですが、削除するレコードを含んだテーブルを指定してください。とでてきます。 入力している場所が違うのでしょうか。
補足
>AとBが1対1で関連付けられたレコードならば、質問の通りならばBを全て削除。 すいません 言葉たらずで、キーの対応は1対1ですが、BにはAにないデータがあります。 DLookup 知りませんでした。新たに知識を頂けありがとうございます。