• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLの構文について)

SQLの構文についての問題とは?

このQ&Aのポイント
  • Access2000からSQLServer2008Expressに接続している際に、更新可能なクエリである必要があるエラーメッセージが表示されます。
  • 問題のあるクエリは、「UPDATE A INNER JOIN B ON ((A.依頼 = B.依頼) AND (A.枝 = B.枝)) SET A.ロット = B.LOT_NO WHERE (A.ロット IS NULL) AND (B.LOT_NO IS NOT NULL);」です。
  • 現在のところ、問題がどこにあるのかは分かりません。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

> Access2000からSQLServer2008Expressにつないでいます。 これはリンクテーブルですか、それともパススルーもしくはADOでのExecuteメソッドどれでしょう。 パススルーもしくはADOでのExecuteメソッドの場合は上記の構文はエラーになるはずです。 SQL-SERVERでの構文は UPDATE A SET A.ロット = B.LOT_NO FROM A,B WHERE (A.枝 = B.枝) AND (A.依頼 = B.依頼) AND (A.ロット IS NULL) AND (B.LOT_NO IS NOT NULL) になります。 リンクテーブルの場合は、結合条件である(依頼,枝)が主キーであり、ACCESSにリンクする際にその旨登録する必要があります。 条件を満たしていれば、提示しているSQLで更新可能なはずです。

aosiro333
質問者

お礼

nora1962様 ご回答、ありがとうございました。 失礼いたしました。テーブルAはリンクテーブルでテーブルBはSQLServerのViewをリンクした ものです。 >リンクテーブルの場合は、結合条件である(依頼,枝)が主キーであり、 >ACCESSにリンクする際にその旨登録する必要があります。 というところですが、リンクする際に登録するとは、どのように行うのでしょう? (依頼,枝)ともにSQLServerでは主キーではないのですが、どうもよくわかりません。 もしよろしければ、お答えいただけないでしょうか?

aosiro333
質問者

補足

nora1962様 お世話になっております。 >リンクテーブルの場合は、結合条件である(依頼,枝)が主キーであり、 >ACCESSにリンクする際にその旨登録する必要があります。 実はテーブルを再リンクする必要があったのですが、そのときに キーの設定ができていないことがわかりました。 再度リンクをしなおし、そのときに表示された画面からキーを選択したら ちゃんとSQLが動いてくれました。 ありがとうございました。

その他の回答 (1)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

そのSQLが実際に実行されるのはSQLServer2008ということですよね? とすると、 UPDATE A SET A.ロット = B.LOT_NO FROM A INNER JOIN B ON ((A.依頼 = B.依頼) AND (A.枝 = B.枝)) WHERE (A.ロット IS NULL) AND (B.LOT_NO IS NOT NULL); という感じになるのではないでしょうか。

aosiro333
質問者

お礼

yamada_g様 ご回答ありがとうございました。 お教えいただいたSQLをAccessのクエリに書き込んで保存しようと すると、なぜか「構文エラー:演算子がありません」とでて、保存 できませんでした。 いろいろ修正してみたですが、変わりません。 うーん、というところです。 とりあえず、ご回答ありがとうござました。

関連するQ&A

専門家に質問してみよう