• ベストアンサー

アクセスのクエリの作り方

エクセルのIF関数のようなクエリを作りたいのですが、 A,B,Cのフィールドで Cのフィールドが0のときはBも0。 Cに何か数字が入ったときは、BのフィールドにはA*0.7という数字が入るようなクエリを作りたいと思っています。 関数文を教えてください。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>Cと言ったのは支払率なのですが、 だったら場合を分けないで [A]*支払率 で支払率が0の時には0になりますね >支払率に数字が入ったときのみ ひょっとして支払率に0が入るのではなく何も入らない(Null)ときという意味なのかな だったら [A]*Nz(支払率,0) です

mrbj
質問者

お礼

ありがとうございました。 助かりました。

その他の回答 (5)

noname#22222
noname#22222
回答No.6

クエリを2段階にすれば解決するのではないでしょうか? ID 人工 単価 金額調節 支払率 1 100 \1,000 \500 0.5 2 200 \2,000 \300 0.6 3 300 \3,000 \200 0.5 <1:売上クエリ> 売上: Round((CCur([人工])*[単価])-([金額調節]/5)*CCur([支払率])) 99950 399964 899980 <2:売上合計クエリ> SELECT SUM([売上]) AS 売上合計 FROM 売上クエリ;

mrbj
質問者

お礼

回答ありがとうございました。 参考になりました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

>支払率に数字が入ったときのみ先程の質問でAに0.7をかけた支払が発生する Cが支払率ですよね。 Cのフィールドに何も入力されていなければ何も表示しないで0なら0、0以外なら[A]*[C]とするという事で良いのなら B:IIf([C] Is Null,"",IIf([C]=0,0,[A]*[C])) でれで出来ます。 Nz関数を使い[A]*Nz([C])とするとNullでも0が返りますので0になります。

mrbj
質問者

お礼

回答ありがとうございました。 おかげで解決出来ました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>クエリを作りたいのですが >Cのフィールドが0のときはBも0。Cに何か数字が入ったときは、BのフィールドにはA*0.7 表示だけでいいのでしたらクエリの新規作成をするとウィザードが開きますので選択クエリウィザードを選び順次進めます。 テーブルをそのテーブルに設定し下のリストに表示されるフィールド名からAとCを選択し進めます。 クエリ名を入力しクエリのデザインを編集するにチェックを付けOKボタンをクリックすると作ったクエリのデザインビューが表示されます。 A・Cとフィールドがあり新しいフィールドに B:IIf([C]=0,0,[A]*0.7) と入力し保存すれば出来ます。保存したクエリを開けばBのフィールドにお望みのものが表示されます。 #2の方の回答ですが テーブルのレコードに更新をかけるクエリです。 テーブルにA・B・Cというフィールドがあり更新クエリを使ってCのフィールドに結果を更新します。 クエリの新規作成でウィザードからデザインビューを選びテーブル追加でそのテーブルを選び追加します。 BのフィールドをクエリのフィールドにドラッグするかCをダブルクリックするとクエリのフィールド上に追加されます。 レコードの更新の欄に先程の記述を入力します。 IIf([C]=0,0,[A]*0.7) 抽出条件は要りません。これで保存します。 この更新クエリをダブルクリックするか開くでそのテーブルのBフィールドが更新されCフィールドが0なら0それ以外ならA*0.7の値が書き込まれます。 選択クエリでBの値を計算し表示のみするかテーブル自体のBフィールドへ値を計算し書き込むかの違いになります。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

テーブル名をt_Dataとし、フィールド名はA,B,Cで数値型と仮定します 1.デザインビューでクエリを作成する 2.t_Dataを追加 3.BとCをダブルクリックしフィールドに出します 4.メニューバーのクエリ>更新を選択 5.Bのレコード更新のところに[t_Data]![A]*0.7を入力 6.Cの抽出条件のところにNOT=0を入力 7.名前をつけて保存 以上で出来ると思うのですが・・・

mrbj
質問者

お礼

回答ありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

考え方がまるっきしExcelですね AccessではBフィールドなんてものはありません、 クエリで式フィールドを作りそれにBという名前を付けるということなら B:IIf([C]=0,0,[A]*0.7) という式をクエリデザインビューに書いてください C、Aはテーブルのフィールド名ですよ

mrbj
質問者

補足

回答ありがとうございます。 実は質問を出す前に「B:IIf([C]=0,0,[A]*0.7)」をやろうとして、挫折しました。 『売上: Round(Sum(([人工]*[単価])-([金額調整]/5))*0.7)』この式で先程の質問のBが売上になります。 Cと言ったのは支払率なのですが、0ならば当然支払は発生しないのですが、支払率に数字が入ったときのみ先程の質問でAに0.7をかけた支払が発生するクエリを作りたいと思っています。 ちなみに支払率は0.7では無く違う数字が入ります。 いろいろやってみましたが、思うように動かず、()をどこに入れてよいやら、わけがわかりません。 長文になってすみませんが、もしわかれば力になってください。