• ベストアンサー

ACCESS 教えて下さい

前も似たような質問をしたのですがうまく応用が出来なかったので再度ご教授お願い致します。 テーブルA 商品NO SS  S   A   B   C A001  1000 2000 3000 4000 5000 A002   500 700 800  900 950 A003  1500 2500 3000 4500 5500 テーブルB 会社名 会社ランク AAA  SS BBB  S CCC  A があります。 二つをくっつけて受注管理のクエリをつくりました クエリA 購入日 会社名 会社ランク 商品NO 金額 この中で AAAの会社がA001の商品を買ったら金額欄に1000 BBBの会社がA002を買ったら  700 と表示させたくて、 クエリAの金額欄に 金額: IIf([会社ランク]=A,(SELECT A FROM テーブルA WHERE 商品No = 商品No),IIf([会社ランク]=SS,(SELECT SS FROM テーブルA WHERE 商品No = 商品No),IIf([会社ランク]=S,(SELECT S FROM テーブルA WHERE 商品No = 商品No),0))) としたのですが、できません。 間違いのご指摘と、どうすればよいかを教えて下さい。 宜しくお願い致します。

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

  • ベストアンサー
  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.2

とりあえず質問から読み取れる条件式は クエリーで表示するためには以下になると思います。 (フィールドとテーブル名が同じものがあり  わかりにくくなるのでテーブル名を少し変更しました) 金額:iif( [テーブルB]![会社ランク] ="A", [テーブルA]![A], (iif([テーブルB]![会社ランク]="SS", [テーブルA]![SS], iif([テーブルB]![会社ランク] ="S",[テーブルA]![S],0)))) 式ビルダで作るならselect文を入れる必要はないと思います。 ※蛇足ながら、 購入日や金額を格納する受注用の別テーブルが必要な気がするのですが、 そこは質問内で触れていないだけなのでしょうか。

meatoffice
質問者

お礼

迅速なご返答ありがとうございます。 教えていただいたようにして、できました! >購入日や金額を格納する受注用の別テーブルが必要な気がするのですが、 そこは質問内で触れていないだけなのでしょうか。 ご指摘の部分ですが、省略していました。 あまりきちんとした説明ができてなかったのに、的確なご返答いただけて本当に助かりました。 ありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.1

単なる服飾デザイナでプログラマじゃないです。 ですから、複雑なクエリなんて考えるのは好きじゃないです。 そこで、簡単に単一 Select文で実現する方法のみで全体を考えます。 この場合、 <商品マスター> ID__品名 1___A001 2___A002 <単価表> 商品マスター_ID__単価区分___単価 ___________________1____________1___1000 ___________________1____________2___2000 ___________________1____________3___3000 ___________________1____________4___4000 ___________________1____________5___5000 ___________________2____________1___500 ___________________2____________2___700 ___________________2____________3___800 ___________________2____________4___900 ___________________2____________5___950 <取引先> ID__名称__適用単価区分 1___AAA__________________1 2___BBB_________________2 このように、[単価区分]は整数かバイトで十分です。 次のように表示するのは Access の得意技ですから・・・。 商品マスター_ID__単価区分__単価 ___________________1__SS___________1000 ___________________1__S_____________2000 ___________________1__A_____________3000 ___________________1__B_____________4000 ___________________1__C_____________5000 さて、このような設計ですと<簡単に単一 Select文で>が実現できます。 次は、質問にある単価 1000と700を検索した結果です。 [イミディエイト] ? DBLookup2("SELECT 単価 FROM 単価表 WHERE 商品マスター_ID=1 AND 単価区分=1") 1000 ? DBLookup2("SELECT 単価 FROM 単価表 WHERE 商品マスター_ID=2 AND 単価区分=2") 700 複雑に考えないでシンプルが一番ですよ!

meatoffice
質問者

お礼

早々のご回答ありがとうございます。 イミディエイトの書き方がまだ分からない初心者なので、教えていただいたやり方はできなかったのですが、勉強させていただきました。 ありがとうございました。

関連するQ&A