ここから本文です

MS AccessのVBA中のSQLの記述について質問があります。

shi********さん

2018/5/216:12:16

MS AccessのVBA中のSQLの記述について質問があります。

■背景
Table_AとTable_Bは同じ内容のテーブルですが、Table_Bにはフィールド「check」があり、Table_Aにはフィールド「check」がありません。

■やりたいこと
「Table_B」のフィールド「check」に「1」が記入されているレコードを「Table_A」から削除するSQLを作りたいです。

以下の記載ではエラーとなってしまいます。

Dim SQL As String

SQL = "DELETE [Table_A].* FROM [Table_A] INNER JOIN [Table_B] ON [Table_A].ID=[Table_B].ID WHERE [Table_B].check = 1;"

DoCmd.RunSQL SQL

色々試したのですが、力不足です。。。

どなたか助けて頂けないでしょうか。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
45
回答数:
4
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hat********さん

リクエストマッチ

2018/5/216:54:54

Table_B の ID フィールドは主キーになってますか。

なってないなら、主キーにしてください。

  • hat********さん

    2018/5/221:37:22

    SQL自体には問題ないです。
    コードも問題ないです。
    正しい設計のテーブルで確認しましたが、
    ちゃんと削除されました。

    テーブル設計に問題があるのだと思います。

    クエリで結合する場合、結合するフィールドの片方が主キー(一対多の関係)、または両方が主キー(一対一の関係)でないと、更新不可のクエリになります。
    当然、削除も出来ないので、削除クエリにしても削除できません。

    Table_A のレコードを削除する場合、少なくもとTable_B の ID が主キーである必用があります。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/5/3 08:03:18

ご指摘のとおり、Table_BのIDフィールドが主キーになっていませんでした。主キーを設定したらプロシージャは正常に作動しました。

他の回答者のみなさまも含め、大変ご丁寧な回答をいただき、ありがとうございました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

nor********さん

2018/5/220:18:51

Dim SQL As String

SQL = "DELETE [Table_A].* FROM [Table_A] ” & _
“ WHERE EXISTS ( SELECT 1 FROM [Table_B] “ & _
” WHERE [Table_A].ID = [Table_B].ID AND [Table_B].check = 1);"

DoCmd.RunSQL SQL

としてもエラーになりますか?

SQL = "DELETE [Table_A].* FROM [Table_A] ” & _
“ WHERE [Table_A].ID IN ” & _
“ ( SELECT [Table_B].ID FROM [Table_B] “ & _
“ WHERE [Table_B].check = 1);"

とかだとどうなりますか。

アバター

ID非公開さん

2018/5/217:01:59

こちらのパソコンで、テストしましたが、正常に動作はしましたね。

どういうエラーが表示されますか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

pro********さん

2018/5/216:49:42

SQL一つでやりたいのですか?
Table_Bからchech=1となっているレコードを抽出するクエリを作っておけば、

SQL = "DELETE [Table_A].* FROM [Table_A] INNER JOIN [クエリ] ON [Table_A].ID=[クエリ].ID;"

でできると思いますが。

-----------------------------------------------------------
サンデープログラマの徒然なるままに
http://programvba.wp.xdomain.jp/
-----------------------------------------------------------

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる