※ ChatGPTを利用し、要約された質問です(原文:条件を満たした次のレコードから)
ACCESSのクエリでの質問 テーブルAとテーブルBのデータを使用してクエリAを作成する方法
このQ&Aのポイント
テーブルAとテーブルBのデータを使用してクエリAを作成する方法について質問させていただきます。
クエリAでは、テーブルAのIDと重量のフィールドをそのまま表示し、新たに作成するフィールドとして累計重量と金額を算出します。
累計重量は、テーブルAのID以下のレコードの重量の総和を算出する DSum 関数を使用します。金額は、累計重量が10t以下かそれ以上かによって異なる計算式を適用します。
初めまして(^^
ACCESSのクエリでの質問をさせて頂きます。(^^;;
テーブルA
ID,重量 と2つのフィールドを持ったテーブルAがあるとします。
テーブルB (金額テーブル kg/円)
10t以下,10t以上 と2つのフィールドを持ったテーブルBがあるとします。
(内容は 10t以下: 11円 10t以上:10円)
上記のテーブルAとテーブルBのデータを使用してクエリAを作成します。
クエリA(テーブルBはテーブル表示にてクエリA内に表示させてあります。)
既存のフィールド: ID,重量
新に作成するフィールド:累計重量,金額
ID ←そのまま表示
重量 ←そのまま表示
累計重量: DSum("重量","テーブルA","ID<=" & [ID] & "") ←累計の重量を算出
金額: IIf(DSum("重量","テーブルA","ID<=" & [ID] & "")<=10000,Int([テーブルB]![10t以下]*[重量]),([テーブルB]![10t以上]*[重量]))
↑
累計重量で10t以下と10t以上の金額の割合を変更して算出させる。
テーブルAのデータとして↓
ID 重量
1 1000.6
2 2150.7
3 1821.2
4 5578.3
5 650.5
上記内容にてクエリAを実行すると多分下記の様に表示されます。
ID 重量 累計重量 金額
1 1000.6 1000.6 11006
2 2150.7 3151.3 23657
3 1821.2 4972.5 20033
4 5578.3 10550.8 55783
5 650.5 11201.3 6505
でも本当は下記の様な結果を得たいのです。
ID 重量 累計重量 金額
1 1000.6 1000.6 11006
2 2150.7 3151.3 23657
3 1821.2 4972.5 20033
4 5578.3 10550.8 61361 ←累計で10tを超えたレコードまでは1kg/11円で計算させたい。
5 650.5 11201.3 6505 ←ここから 1kg/10円の計算にしたい。
望む結果を得るためには下記の文にて条件を付け足していくと思いますが
金額: IIf(DSum("重量","テーブルA","ID<=" & [ID] & "")<=10000,Int([テーブルB]![10t以下]*[重量]),([テーブルB]![10t以上]*[重量]))
どのような条件の付け方をすれば良いか、困ってしまいました。そのものズバリの答えをお聞きするには余りにずうずうしいと思いますので、
ヒントや似たような感じの例などをご教示頂けたらと思います。
何卒、宜しく御願い致します。
お礼
自己解決いたしました。papapa0427様のご指摘にて、改めてクエリを見てると豆電球が灯りました(笑 方法として、累計重量が10t以上超えた時点でDlookup関数で超えた時のIDを取得、iif文にて、IDがID取得の値以下の時の条件,IDとID取得が同じ場合の条件、それ以外 としましたら出来ました。ちょっと回りくどい方法ですが、勉強になりました。有難う御座いました。(^^
補足
早速のご回答ありがとう御座います。 説明が曖昧になってしまい申し訳御座いません。 重量の単位はkgです。 累計の重量で10tを超えたレコードまでは重量*11円のままで計算して 10tを超えた次のレコードから重量*10円で計算させたいと思っております。 説明が下手すぎて済みませんです(^^; ちなみになんですが、クエリでやるよりも VBAでFindNextとか使用して条件を指定してやればいけそうな気もするのですが(^^; VBAで記述する方法でしたら可能でありましょうか?(^^;;