クエリ 更新クエリ・集計クエリを元にした更新ができない [クエリ]
ACCESSのデータベースエンジンにある、限界の一つです。
更新クエリ(UPDATE)で項目を更新するクエリを作る場合に、更新する値に集計クエリの結果を使用しようとした場合、「更新可能なクエリであることが必要です。」というエラーがでます。
具体的な再現手順は、以下のとおり。
テストに使うデータテーブルは2つ。
「T実績」に日別担当者別のデータがあります。これを、日付毎に集計します。
その結果を、「T実績集計」テーブルの各日付に更新するとします。
最初に、「T実績」を日別に集計するクエリを作成します。
結果はこの通り。
このクエリの結果を、「T実績集計」テーブルに書き込むクエリを作成します。
普通に作ると、こんな感じでしょうか。
これを実行すると、
エラーになり、実行できません。
また、サブクエリ・相関サブクエリを含むUPDATEも、エラーになります。
回避策は、集計結果でテーブルを作成して、そのテーブルを元にUPDATEを行います。
もしくは、DLookUPを使用したクエリにします。
UPDATEのSQLで、DLookUPを使用するのは、処理速度的にどうかと思うところがあります。
私的には、前者の方が、確認作業等もやりやすいと思うので、推奨です。
ちなみに、SQLServerやOracleの場合は、このような制限はありません。
MicroSoftの参考情報
http://support.microsoft.com/kb/328828/ja
困っていました。
>回避策は、集計結果でテーブルを作成して、そのテーブルを元にUPDATEを行います。
この発想はありませんでした。目からウロコです。
ページも初心者にもわかりやすい丁寧表示で助かりました。
ありがとうございました。
by kawa (2014-01-24 08:55)
kawaさん、コメントありがとうございます。
参考になれば幸いです。
便利なACCESSですが、時々こういう不便な仕様に遭遇します。
SQLServerやOracleなどではできるので、ちょっと残念です。
説明は画像多めを心がけています。
普通のBlog記事の作成方法だと、画像を扱うのは面倒なので、ここはホームページビルダーのBlog機能で記事を作成しています。
ホームページビルダーのBlog機能については、不満に思う点も多いのですが、大量の画像を貼り付けた記事を、そこそこ楽に作成できるので、手放せません。
変なバグが多いので嫌なんですが、今のところ代わりが見つかりません…。
by NZ (2014-01-24 22:26)
はじめまして!
わたしも、今、初心者ながら悪戦苦闘しつつも
業務用DBを作成しているところです。
集計をしたいのに、集計クエリを使うと更新できないし、
Dsum関数+Val関数を使うと、ものすごく処理に時間がかかるしで、
困り果てていました。
貴重なアイディアをどうもありがとうございました^ ^
by aliceblue (2014-02-06 13:51)
aliceblueさん、はじめまして。
コメントありがとうございます。
ACCESSは97くらいから使っているのですが、
この仕様はずっと変わっていないようです。
データベースエンジン自体も
強化して頂きたいものです。
業務用DBの作成、がんばってください。
by NZ (2014-02-07 00:16)