• 締切済み

Accessプロジェクト ストアドプロシージャによるデータ更新

Access2003 Accessプロジェクトのストアドプロシージャでテーブルを更新する処理を作りたいのですが・・・。 内容は、テーブルAにある項目「更新区分」を "0" から "1" に更新します。ただし更新する条件として、テーブルBに登録されている、全てのロットNoと、テーブルAのロットNoが一致するものだけです。 WHERE条件に・・・  WHERE テーブルA.LotNo = テーブルB.LotNo とすると、「ADOエラー:列のプレフィックステーブルBは、テーブル名と一致しないか、クエリ内の別名と一致しません」となります。 初歩的な質問ではずかしいですが、よろしくお願いします。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

テーブルBもしくはテーブルB.LotNoが取得できていないのではないでしょうか。 UPDATE dbo.テーブルA, dbo.テーブルB SET dbo.テーブルA.更新区分 = 1 WHERE (((dbo.テーブルB.LotNo)=dbo.テーブルA.LotNo)); か UPDATE dbo.テーブルA INNER JOIN A ON dbo.テーブルB.LotNo = dbo.テーブルA.LotNo SET dbo.テーブルA.更新区分 = 1; で回避できると思うのですが。

pon_s
質問者

お礼

回答ありがとうございます。 今、出先から回答を拝見しています。 戻り次第試してみます。 取り急ぎ御礼まで。

pon_s
質問者

補足

ご連絡が遅れて申し訳ありません。 試してみたのですが・・・ 前者は、UPDATE句に2つのテーブルを記述するとエラーになります。 後者は、INNER句の行でエラーが出ます。 今朝から色々試しているのですが・・・。

  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.1

>WHERE テーブルA.LotNo = テーブルB.LotNo が原因のような書き方をしていますが、他の条件などはあっていますか?これだけでは回答も限られてきます。 例えばSQL全文を載せてくれればもう少し回答できるのではないでしょうか。

pon_s
質問者

補足

回答ありがとうございいます。 SQL文は・・・ UPDATE dbo.テーブルA SET 更新区分 = 1 WHERE (LotNo = dbo.テーブルB.LotNo) Accessプロジェクトのストアドプロシージャのデザイナ で作っています。エラーがあるためSQLの全文を見ることができません。