• ベストアンサー

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

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

  • mrbj
  • お礼率90% (20/22)

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

  • ベストアンサー
  • 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では無く違う数字が入ります。 いろいろやってみましたが、思うように動かず、()をどこに入れてよいやら、わけがわかりません。 長文になってすみませんが、もしわかれば力になってください。

関連するQ&A

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。

  • アクセスのクエリでパラメータを表示させない方法は?

    超初心者の質問ですみません。。 アクセスのクエリで、ある数字の全体に対して占める割合を求めるため、以下のような式をいれています。 フィールドC: [フィールドA]/[フィールドB] このクエリを開いたときに毎回パラメータが表示されるのですが、これを表示させないためにはどのようにすればよいのでしょうか?OKを2回押せばきちんと計算された値が入ってくるのですが、毎回OKを押さずに開けるようにしたいです。 ちなみに、フィールドAとフィールドBは、あるテーブルに入っている値をクエリ側で 集計 を「合計」に設定して求めた値が入っていて、フィールドA~Cは同じクエリの中にあります。 VBAやSQLはまったく理解できません。 よろしくお願いします。

  • Accessのクエリ

    アクセス超初心者で困っています。 アクセスのクエリで、 「フィールドにデータが入力されている数」 を関数はありますでしょうか? エクセルで言えば、count関数に当たる関数を探しています。 よろしくお願いします。

  • Access クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

  • アクセスのクエリ フィールドの合計

    フィールドの合計 アクセスのクエリでいくつかのフィールドの合計を出そうとして クエリのフィールドに以下の式をいれております。 ⇒合計:([A])+([B])+([C]) (例えば[A][B][C]のフィールドの合計を出すとして) しかし、[A]の値が1、[B]の値が2、[C]の値が2と入っている場合は5と合計値が当然でますが 例えば[C]のフィールドが空欄の場合、合計値欄が空欄で表示されます。 非常に簡単な質問かと恐縮ですがおしえてください!

  • ACCESSのクエリで値の読み換え

    お世話になります。 例えば、フィールドAの値が 1なら”可” 2なら”不可” 3なら”保留” 4なら”検討中” 5なら”分からない” とフィールドBに変換したい場合は どのようにすれば良いでしょうか? クエリの関数で実行できればうれしいのですが。 よろしくお願い致します。

  • Accessクエリに入力する式について教えてください。

    こんにちはWin98SE/Access2000です。 例えば AフィールドのチェックボックスがONで尚且つ、Bフィールドに数値型の値が入っていて、さらにCフィールドに日付が入った時に DフィールドにBフィールドの値を取込むと言う作業をAccessにさせたいのですが、Accessのクエリ(デザインビューのフィールドか抽出条件に設定)で関数又はSQLを使用して実現できますか。 もし出来るようでしたら、例的なもので結構ですので式等アドバイスをいただけないでしょうか宜しくお願いします。 (関数&SQL初心者です。)

  • MSアクセスクエリにて連番でIDを振りたい

    お世話になります。 MSアクセスのクエリにて、IDを連番で振りたいと考えています。 たとえば、 項目1 項目2 項目3 A B C A B A A B B A B A A B C というクエリがあったら、 項目1 項目2 項目3 ID A B C 1 A B A 2 A B B 3 A B A 4 A B C 5 というように新規でIDを連番でカウントアップしていくことが 要望です。できる限りVBAは使いたくなく、クエリの 演算フィールドにて関数などはありますでしょうか? 以上、お願い致します。

  • Access97のクエリーについて

    Access97のクエリーで次のようなデータ抽出をしたいのですが、設定方法が良く分かりません。 1.約20000レコードのCSVファイルを外部データ   のインポートでTDLを作成。 2.重複クエリーを走行すると、約10000レコードが   重複していた。 3.作成したTBLから重複者がいないデータを抽出した   い。 イメージ: 処理前  a,2222,111,1,1234567  a,1111,100,1,0001234  b,0001,234,1,5555511  c,0003,001,1,0005555  c,0005,201,1,3345678  ↓(クエリー) 処理後  a,1111,100,1,0001234  b,0001,234,1,5555511  c,0003,001,1,0005555 どのような、関数、クエリーを使えば実現できるのでしょ うか。ご教示の程よろしくお願いします。

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。