こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

条件を満たした次のレコードから

初めまして(^^

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 重量
11000.6
22150.7
31821.2
45578.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以上]*[重量]))

どのような条件の付け方をすれば良いか、困ってしまいました。そのものズバリの答えをお聞きするには余りにずうずうしいと思いますので、
ヒントや似たような感じの例などをご教示頂けたらと思います。
何卒、宜しく御願い致します。

投稿日時 - 2011-11-07 18:46:46

QNo.7119332

困ってます

質問者が選んだベストアンサー

条件が矛盾してます。10t以下と以上と言いながら実際は逆の説明になってます。

また重量の単位はkgですか?累計重量で比較ですか?それなら言われている事はほぼ不可能ですが…?

もっと明確なご説明をお願いします。

投稿日時 - 2011-11-07 18:57:30

補足

早速のご回答ありがとう御座います。

説明が曖昧になってしまい申し訳御座いません。

重量の単位はkgです。 累計の重量で10tを超えたレコードまでは重量*11円のままで計算して
10tを超えた次のレコードから重量*10円で計算させたいと思っております。

説明が下手すぎて済みませんです(^^;

ちなみになんですが、クエリでやるよりも
VBAでFindNextとか使用して条件を指定してやればいけそうな気もするのですが(^^;
VBAで記述する方法でしたら可能でありましょうか?(^^;;

投稿日時 - 2011-11-07 19:22:26

お礼

自己解決いたしました。papapa0427様のご指摘にて、改めてクエリを見てると豆電球が灯りました(笑

方法として、累計重量が10t以上超えた時点でDlookup関数で超えた時のIDを取得、iif文にて、IDがID取得の値以下の時の条件,IDとID取得が同じ場合の条件、それ以外 としましたら出来ました。ちょっと回りくどい方法ですが、勉強になりました。有難う御座いました。(^^

投稿日時 - 2011-11-08 11:54:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問