- ベストアンサー
MS ACCESSで条件別に計算する方法
tbl_商品Mには、商品名・商品ID・仕入価格・掛率というパラメータがあります。レコード数は26000点程で、掛率は10程あります。 掛率のパラメータによって別個の計算式を適用し、商品名・商品ID・税込販売価格・税別販売価格というデータを出力をしようとしています。 現在は各掛率毎に、クエリを作成して 商品名・商品ID・税込販売価格・税別販売価格を出力する事は出来ました。 これらの掛率クエリを1つのクエリにまとめたいのですが、上手く出来ません。 IIF関数を使ってやろうとしていますが、 「指定されたフィールド'[掛率]'がSQLステートメントのFROM句にある複数のテーブルを参照しました」 と表示されます。googleで検索してみたものの、どういったエラーなのかはわかりましたが、直す方法が分かりません。 何か良い方法はございませんでしょうか。 また、掛率は随時、変更・増加・減少を伴いますので、管理をもっと簡単に出来る方法がありましたら教えて欲しいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>フィールドに数式を入れる事は出来るのですか? 意味が良く分かりませんが、SQLのフィールドに数式は使用可能です。 SELECT Int(仕入価格 * 掛率) As 税別販売価格,~ また、掛率が計算式なら、文字列として計算式を記述することができます。 実際の値はEval関数で算出します。 計算式:"5/100" 値の取得:Eval(計算式) SELECT Int(仕入価格 * Eval([掛率])) As 税別販売価格,~
その他の回答 (4)
- nda23
- ベストアンサー率54% (777/1415)
掛率マスタのようなテーブルを作ってみては? レコード中にはどの掛率を適用するかの基準情報があるはず。 仮にこれを掛率区分とすると、マスタは掛率区分と掛率になります。 このマスタとtbl_商品Mを掛率区分で結合すれば、掛率毎にクエリを 作るようなことはしないで済みますし、掛率が変わったときでも マスタを更新すれば良い訳です。
補足
本来はそういう形をとりたいのですが、フィールドに数式を入れる事は出来るのですか? 掛率同じ掛率区分でも常に一定にはなりません。 調べたところ、アクセスでは出来ないと思っているのですが・・・。
- CHRONOS_0
- ベストアンサー率54% (457/838)
>「指定されたフィールド'[掛率]'がSQLステートメントのFROM句にある複数のテーブルを参照しました」 >と表示されます。googleで検索してみたものの、 >どういったエラーなのかはわかりましたが、直す方法が分かりません。 フィールド名の前にテーブル名をつけてやるだけです テーブル名.フィールド名
補足
ありがとうございます。対応出来ました。
商品マスタ: ID_品名_仕入単価__掛率 _1_A______\1,000___1.4 _2_B______\1,000___1.5 _3_C______\1,000___1.6 _4_D______\1,000___1.7 クエリ1: ID_品名_仕入単価_掛率_税抜販売単価__消費税額 _1_A______\1,000__1.4_________1400________70 _2_B______\1,000__1.5_________1500________75 _3_C______\1,000__1.6_________1600________80 _4_D______\1,000__1.7_________1700________85 >現在は各掛率毎に、クエリを作成して >商品名・商品ID・税込販売価格・税別販売価格を出力する事は出来ました。 判りません。 普通は、叙述のように[税抜販売単価]と[消費税]を単純に計算するだけ。 <掛率のパラメータによって別個の計算式を適用> これって、滅茶苦茶に非システム的でしょう。
補足
>これって、滅茶苦茶に非システム的でしょう。 その通りだと思います・・・。
- Dxak
- ベストアンサー率34% (510/1465)
> 「指定されたフィールド'[掛率]'がSQLステートメントのFROM句にある > 複数のテーブルを参照しました」 と、表示されるSQL文を出しましょう > 商品名・商品ID・仕入価格・掛率 > 掛率は10程あります。 > 掛率のパラメータによって別個の計算式を適用し、 > 商品名・商品ID・税込販売価格・税別販売価格 の意味・関係が、多分、質問者さま以外、判りません
お礼
上手く出来ました。 ありがとうございます。