So-net無料ブログ作成
検索選択

クエリ 更新クエリ・集計クエリを元にした更新ができない [クエリ]

 ACCESSのデータベースエンジンにある、限界の一つです。
 更新クエリ(UPDATE)で項目を更新するクエリを作る場合に、更新する値に集計クエリの結果を使用しようとした場合、「更新可能なクエリであることが必要です。」というエラーがでます。

 具体的な再現手順は、以下のとおり。


 テストに使うデータテーブルは2つ。
 「T実績」に日別担当者別のデータがあります。これを、日付毎に集計します。
 その結果を、「T実績集計」テーブルの各日付に更新するとします。

 最初に、「T実績」を日別に集計するクエリを作成します。

 結果はこの通り。

 このクエリの結果を、「T実績集計」テーブルに書き込むクエリを作成します。

 普通に作ると、こんな感じでしょうか。
 これを実行すると、

 エラーになり、実行できません。

 また、サブクエリ・相関サブクエリを含むUPDATEも、エラーになります。

 回避策は、集計結果でテーブルを作成して、そのテーブルを元にUPDATEを行います。

 もしくは、DLookUPを使用したクエリにします。

 UPDATEのSQLで、DLookUPを使用するのは、処理速度的にどうかと思うところがあります。

 私的には、前者の方が、確認作業等もやりやすいと思うので、推奨です。

 ちなみに、SQLServerやOracleの場合は、このような制限はありません。

 MicroSoftの参考情報
http://support.microsoft.com/kb/328828/ja



【2万円から3万円の、格安ホームページ作成サービス】

nice!(0)  コメント(4)  トラックバック(0) 

nice! 0

コメント 4

kawa

困っていました。

>回避策は、集計結果でテーブルを作成して、そのテーブルを元にUPDATEを行います。

この発想はありませんでした。目からウロコです。

ページも初心者にもわかりやすい丁寧表示で助かりました。
ありがとうございました。


by kawa (2014-01-24 08:55) 

NZ

kawaさん、コメントありがとうございます。
参考になれば幸いです。

便利なACCESSですが、時々こういう不便な仕様に遭遇します。
SQLServerやOracleなどではできるので、ちょっと残念です。

説明は画像多めを心がけています。
普通のBlog記事の作成方法だと、画像を扱うのは面倒なので、ここはホームページビルダーのBlog機能で記事を作成しています。
ホームページビルダーのBlog機能については、不満に思う点も多いのですが、大量の画像を貼り付けた記事を、そこそこ楽に作成できるので、手放せません。
変なバグが多いので嫌なんですが、今のところ代わりが見つかりません…。
by NZ (2014-01-24 22:26) 

aliceblue

はじめまして!

わたしも、今、初心者ながら悪戦苦闘しつつも
業務用DBを作成しているところです。

集計をしたいのに、集計クエリを使うと更新できないし、
Dsum関数+Val関数を使うと、ものすごく処理に時間がかかるしで、
困り果てていました。

貴重なアイディアをどうもありがとうございました^ ^
by aliceblue (2014-02-06 13:51) 

NZ

aliceblueさん、はじめまして。
コメントありがとうございます。

ACCESSは97くらいから使っているのですが、
この仕様はずっと変わっていないようです。
データベースエンジン自体も
強化して頂きたいものです。

業務用DBの作成、がんばってください。
by NZ (2014-02-07 00:16) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました