こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

access クエリで集計した数値を別クエリで使いたい

access2003で2000ファイル形式で以下のものを作っています。
テーブル「A」(フィールドは登録番号(主キー)、 書名) 「B」(登録番号(主キー)、 書名) がある。Aの「登録番号の最大値」(100とする)をクエリ(クエリ名「集計クエリ」)で集計して得た。
テーブルBの登録番号(1~30とする)を更新クエリで(1+100 ~ 30+100)に更新したい。そこでデザインビューで登録番号フィールド(テーブルB)の「レコードの更新」欄にビルダーで「[B]![登録番号]+[集計クエリ]![登録番号の最大値]」と入力して実行したら
実行できなかった。(仕方ないので「[B]![登録番号]+100」として実行したら更新できた。)今後もあるので「集計クエリ」で得た値を直接呼んで、更新クエリを実行したいのだが・・・。
わかりにくい質問で恐縮です。ご理解頂けたならば、ご教授ください。

投稿日時 - 2007-02-08 16:59:20

QNo.2735055

困ってます

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

集計クエリは使わずに
[B]![登録番号]+DMax("登録番号","A")
で。
テーブル「A」にデータがない場合も考慮するなら
[B]![登録番号]+Nz(DMax("登録番号","A"),0)

投稿日時 - 2007-02-08 17:58:37

お礼

なるほど
明快な回答ありがとうございました。

投稿日時 - 2007-02-13 16:56:06

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

<A>
登録番号
98
99
100

<B>
登録番号
1
2
3

? CNNExecute("UPDATE B SET 登録番号=登録番号 + DMax('登録番号','A')")
True

<B>
登録番号
101
102
103

もちろん、

UPDATE B SET B.登録番号 = B.登録番号+DLOOKUP('Q.登録番号最大値','Q');

と、集計クエリ'Q'を参照させることも可能です。

なお、

? CNNExecute("UPDATE B SET 登録番号=登録番号 + (SELECT Max(登録番号) FROM A)")
True

と Access.adp+SQL Server では書けますが、Access.mdb では DMax か DLookup のようです。

投稿日時 - 2007-02-09 11:29:05

お礼

なるほど
SQL の達人ですね。
ありがとうございました。

投稿日時 - 2007-02-13 16:57:48

あなたにオススメの質問