こんにちは。
今回は、かなり久々のAccessクエリー関係です。
集計値で更新したくて、
・初めはサブクエリー、副問い合わせを使ったんだけどできなくて、
・結局逃げ手 で ごまかしの Dsum関数を更新クエリー内で使った
そんなお話です。
※アレンジして、自分のものにしてください。
読者より、メッセージをいただく。 ---- >URL: http://www.ken3.org/vba/backno/vba113.html > >Access クエリー 2つのテーブル結合して集計したい >を読み大変参考になりました。そこで >表2に元から差というフィールドがあり、 >結果を書き込むにはどうしたらよいのでしょう。 >グループ化した結果で更新クエリーを作ると >「更新可能なクエリーが必要です」 >というメッセージが出て更新できません。 >更新クエリーの作り方に問題があると思うのですが。 >選択クエリーだと表示だけはできます。 ---- グループ化した結果で更新かぁ。。。 何か無いかなぁ・・・
何かあったような、無かったような・・ と 少し記憶をたどってみると、隣のASP系解説でやった ・No.089 SQL 集計関数MAXと副問い合わせ(サブクエリー) ・SQL サブクエリー(副問い合せ)を使い、最大値の行を表示してみる ↑これを思い出す。サンプルはMAX関数だけど、同じような感じで、 集計関数 SUM を使用して合計を出してみたいと思います。 ^^^^^^^^^^^^ テーブルフォーマットは です。 表2のクエリーを作成して、 クエリーの演算フィールド に (Shiftを押しながらF2でズームすると入れやすいです) 出力合計: (select sum([T2.出力数量]) From 表2 AS T2 Where T2.項目 = 表2.項目) 入力合計: (select sum([T1.入り数量]) From 表1 AS T1 Where T1.項目 = 表2.項目) 計算した差 : (select sum([T1.入り数量]) From 表1 AS T1 Where T1.項目 = 表2.項目) - (select sum([T2.出力数量]) From 表2 AS T2 Where T2.項目 = 表2.項目) を入れて、実行してみます。 すると、おっ、表示はうまくいきました。
動画解説 : 04/21 Access サブクエリー 副問い合わせ
よし、表示ができたので、更新クエリーで使ってみます。 差 (select sum([T1.入り数量]) From 表1 AS T1 Where T1.項目 = 表2.項目) - (select sum([T2.出力数量]) From 表2 AS T2 Where T2.項目 = 表2.項目) として実行すると 「更新可能なクエリであることが必要です。」 あれれ、どこかで見たメッセージが・・・・ 更新クエリーで、サブクエリーは使えないのかぁ、、、 う〜ん、ふりだしに戻った(笑) で、姑息な逃げ手を考えました。(速度を気にしない方法です) DSum関数で単純に集計しました。。。 UPDATE 表2 SET 表2.差 = DSum("入り数量","表1","[項目] = '" & [表2].[項目] & "'") - DSum("出力数量","表2","[項目] = '" & [表2].[項目] & "'"); ↑のように、DSUM関数を使い、 DSum("集計フィールド名","テーブル名","条件") で、集計して計算(ひきざん)してみました。 なんか、しっくりこないけど、動きました。 う〜ん。。。
動画解説 : 04/21 Access 更新クエリー で DSumの値を使う
今回は、 ・サブクエリー 副問い合わせ を 使ってみた ・でも、更新では↑は使えなかった。 ・しかたなく?DSum関数を使って計算した値で更新クエリーを走らせた なんて流れでした。 もしかしたら、私がSQLを書けなかっただけで、 更新クエリーで サブクエリー・副問い合わせを使うSQLの書き方が ありそうな気もしつつ、失礼します。 プログラム作りは ^^^^^^^^^^^^^^^^ う〜ん・・・ まぁ、人それぞれ、十人十色、百社百色だけどね。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 今回も逃げるように。。。。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]