Microsoft Access 掲示板

クエリのフィールドに正しい関数を入れたい

5 コメント
views
4 フォロー

T_受注番号(受注番号(1)、受注件名)
T_受注種別(受注番号(∞)、受注種別、受注金額)

これらのテーブルを同じクリエ内に配置しました。
(カッコ内はリレーションシップです)
受注番号がダブる場合があります。

新しいフィールドに総合計として
総合計:受注番号が同じなら同じ受注番号の受注金額を足し算する

といったDsum関数を作ろうとしているのですが上手くいきません。
総合計: DSum("受注金額","T_受注種別","工事番号=" & [工事番号] & "'")
エラーメッセージ=指定されたフィールド'[工事番号]'がSQLステートメントのFROM句にある複数のテーブルを参照しました。

何かが違うのでしょうが、何が違うのかが分からず自分がフリーズしています・・・
初歩的は事なのは重々承知ですがご教授頂ける方がいらっしゃいましたら是非お力貸してください。

苦節1年
作成: 2024/02/26 (月) 13:44:27
通報 ...
1
苦節1年 2024/02/26 (月) 14:20:45 ca7cf@20718

新しく総合計のみのクエリを作り、集計で合計金額は出せるようになりました。
クエリが増えて行くのがややこやしいですが、とりあえずこれでやってみます。

2
hatena 2024/02/26 (月) 15:30:04 修正

エラーメッセージ=指定されたフィールド'[工事番号]'がSQLステートメントのFROM句にある複数のテーブルを参照しました。

メッセージ通り、クエリ内に[工事番号]が複数あるのでどちらのテーブルを参照したらいいか分からないということです。
どちらのテーブルのものかを指定してあげればいいです。

受注番号が数値型の場合

総合計: DSum("受注金額","T_受注種別","受注番号=" & [T_受注番号].[受注番号])

工事番号がテキスト型の場合

総合計: DSum("受注金額","T_受注種別","工事番号='" & [T_受注番号].[受注番号] & "'")

※テーブルの説明とメッセージのフィールド名が異なりますが、テーブルの方(受注番号)が正しいと仮定してます。

ただし、DSum関数は重い処理になりますので、集計クエリと連結した方が処理速度は速くなります。
クエリが増えるのがいやならサブクエリを使うという方法もあります。調べてみてください。

ただ、クエリで集計値と個別の値を同時表示するという要件はあまりないように思いますが、どういう状況でしょうか。
もし、レポート内で集計値を表示したいのなら、レポートのグループフッターのテキストボックスに =Sum([受注金額]) と設定することでグループ別の集計を表示させることはできます。

3
苦節1年 2024/02/27 (火) 09:42:19 ca7cf@20718

ご丁寧にありがとうございます。
hatenaさんにご教授頂いたこともやってみましたがパラメータが出てしまい断念しました。
そうですよね、なにがしたいかを言葉足らずでした。
社内の受注管理システムを構築しようとしています。
社員数名で操作するのでフォームはできるだけ分かりやすくしようと思っており2歩進んでは3歩下がっている状況です。
1つの受注案件(メインフォーム)に対し、2つの工事(サブフォーム)がある事あるので今回の相談と成りました。
受注金額=工事金額+工事金額
本当は受注メインフォーム上で工事サブフォームの工事金額の合計を参照したいのですが工事が2つある場合レコードでマウスでクリックしなければ次ページが見れないので次ページを見なくとも、メイン上で合計が見れればと思いました。
やっていて、クエリではなくメインフォーム上でテキストボックスも作成してみましたが上手く行きませんでした。

4
苦節1年 2024/02/27 (火) 16:39:11 ca7cf@20718

hatenaさんに頂いた式、無事できました!
また一つ勉強になりました。ありがとうございます。

5

サブフォームの合計をメインフォームに表示したいのなら、

サブフォームのフォームヘッダーかフォームフッターにテキストボックスを配置して、下記のように設定して、

名前 合計
コントロールソース  =Sum([受注金額])

メインフォーム上のテキストボックスのコントロールソースに下記の式を設定すればいいでしょう。

=[サブフォームコントロール名]![合計]