いつもお世話になっております。
Access VBAでの開発を引き続き行っております。
クエリで作成したレコードセットの値をテーブルに反映(更新)させたいのですが
こちらどの様にコードを書いてよいかわからずにおります。
ACCESSのクエリ作成するとSQL文も生成できるためこちらをアレンジして使用しようと
思ったのですが、更新クエリを実行すると「更新可能なクエリであることが必要です。」のエラーが表示されてしまいます。
こちらの原因は分かったのですが、どう実装していていってよいのか手詰まりです。
画像の通り、果物と農家テーブルから果物合計クエリーを生成します。
こちら果物名と農家名をキーにジョインし合計値をひっぱりたいです。
こちらワークテーブルを作成すれば簡単にできるのですが、ワークを作成しない方法を求められて
います。どうぞお力をお貸しください。どうぞよろしくお願いいたします。
通報 ...
画像を見ると、「3まとめ」テーブルは「1果物合計」クエリと同じもののようですが、なぜ取得できるものをテーブルにする必要があるのでしょうか。
その理由を聞かせてほしいです。
とりあえず、上記の疑問点はおいておいて、回答すると、
集計クエリを含むクエリは更新不可のクエリになります。それを更新クエリにすれば当然そのようなエラーになります。
集計クエリは使わずに、「3まとめ」テーブルから更新クエリを作成して、DSum関数で合計を取得して更新すれば可能ではあります。
更新クエリの設定
お世話になります。
ご回答いただきありがとうございます。
>画像を見ると、「3まとめ」テーブルは「1果物合計」クエリと同じもののようですが、なぜ取得できるものをテーブルにする必要があるのでしょうか。
その理由を聞かせてほしいです。
「3まとめ」には同じ果物で農家がことなるレコードがあります。
例:もも 野田農園 百田農園があり、野田農園に数量40をセットしたいです。
お教えいただいた方法ですと、農家名の指定ができないのでうまくいきませんでした。
もし他に方法がございましたらよろしくお願いいたします。
どうもありがとうございました。
集計クエリを作ったら、テーブル作成クエリに変更・実行。作成されたテーブルと更新したいテーブルで内部結合を組んで更新クエリを作成。取り敢えず思い浮かんだだけなので、動作確認が不十分です。
余談ですが、僕だったら、明細テーブル:{農家,果物名,品種},数量とするかなぁ。
ググっていたら、Hatenaさんのブログがヒットしました。流石ですね。
HatenaChips:更新クエリで定義域集計関数を使わずに集計する
コマンドボタンに設定。明細レコードの先頭レコードに移動、更新クエリの実行、次のレコードに移動、更新クエリ実行、・・・みたいな使い方になるのかしら。
追伸
謹んで新春のお喜び申し上げます。今年もどうぞよろしくお願いします。
いつも、回答ありがとうございます。
今年もよろしくお願いします。
皆様
ご回答いただきありがとうございます。
りんご様からご紹介いただきましたHatenaさんの方法で対応いたしました。
大変助かりましたありがとうございました。
農家テーブルは、
果物名 農家名
もも 野田農園
もも 百田農園
ということですか。
果物テーブルには農家名はないのに、その数量を野田農園にのみセットするという判断基準は何でしょうか。