アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

集計クエリは使わずに


[B]![登録番号]+DMax("登録番号","A")
で。
テーブル「A」にデータがない場合も考慮するなら
[B]![登録番号]+Nz(DMax("登録番号","A"),0)
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/02/13 16:56

<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 のようです。
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/02/13 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す