- ベストアンサー
ACCESSの削除処理について
AファイルとBファイルを電話番号で関連づけして関連づけされたBファイルのレコードを削除したいのですがACCESSのクエリ削除ではどうすればよいのでしょうか。AとBは1対1の関係です。 同じ質問を前回したのですが、削除クエリのどこに入力してよいのかわからなかったので再質問しています。 宜しくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
少し、丁寧に書きます。 <A> ID___TEL 1____123456789012 2____001010010010 <B> ID___TEL 1____123456789012 2____001010010010 3____010101010101 このような、AとBのテーブルがあってデータも上記のように登録されています。 1、[デザインビューでクエリを作成する]をクリック。 2、[テーブルの表示]でテーブル[B]を選択し[追加]、[閉じる]。 3、メニューの[クエリ(Q)]-[削除(D)]をクリック。( 4、[フィールド]で、[TEL]を選択。 フィールド:TEL テーブル:B レコードの削除:Where 抽出条件: または: ここまでで、となります。 **************** 関数方式 **************** 5、抽出条件を右クリックして[ビルド]をクリック。 [関数]-[組み込み関数]-[DLookup]をクリック。 DLookup («expr», «domain», «criteria») | | | 列名 テーブル名 条件文 DLookup("TEL","A","TEL='" & [tel] & "'") 式ビルだを閉じてクエリを保存。 <実行結果> <B> ID___TEL 3____010101010101 **************** サブクエリ **************** 5、ひとつ、右の列を使用します。 Iフィールド:TEL____________(SELECT TEL FROM A WHERE A.TEL=B.TEL) テーブル:B_________________ レコードの削除:Where__Where 抽出条件:__________________<>False または:______________________ これで、クエリを保存して実行すれば同じ結果を得られます。 一番、手っ取り早いのは、メニュー[表示]-[SQLビュー]をクリック。 DELETE B.TEL, * FROM B WHERE (SELECT TEL FROM A WHERE A.TEL=B.TEL); と書くこと。 要は、デザインモードは、このSQL文作成のお助けモード。
その他の回答 (1)
補足: Accessは、7.0、95、2000、2003と使ってきましたが、削除クエリは初めての挑戦。x!を出すところから判りませんでした。ましてや、サブクエリの書き方なんてチンプンカンプン。質問者が苦労して当然ですね。 以上、つまらぬ感想の補足でした。
お礼
" & [tel] & "'" のtelをTELEPHONENOに直して実行したりもしていますが、今度はなにも反応しないのです。 何が悪いのか? すいません、こちらの事情でトホホです。
補足
「この回答へのお礼の後」にパンチミスを見つけ修正後、動きました。 感動です。3日悩みました。 ありがとうございました。
お礼
こんなに丁寧に感激です。 実行すると、’パラメータの入力’を求められます。 一気に流れないのでしょうか。 それとも、実行結果がそちらとひがうのでしょうか。 宜しくお願いします。