• ベストアンサー

アクセス2003 クエリについて

いつもお世話になっています。 商品管理用にデータを作っています。 商品マスターテーブルでIDや商品名と共に、わかる範囲で定価と過去の仕入値を入力しています。 クエリで<商品マスター>を下記のようにまとめた<参考仕入価格クエリ>を作りました。 商品ID…商品マスターより 商品名…商品マスターより 参考仕入価格…CCur(IIf([過去の仕入値]>0,[過去の仕入値],[定価]*0.6)) さらに<参考仕入価格クエリ>と<仕入記録クエリ>を使って<仕入価格クエリ>を作ろうとしています。 <仕入記録クエリ>は、<商品マスターテーブル>と<仕入記録テーブル>を組み合わせ、仕入れのなかった商品はNz関数で仕入額が0円になるようにしています。 <仕入価格クエリ>のデザインビューで参考仕入価格をフィールドに入れてみたところ、<参考仕入価格クエリ>では×0.6で表示された定価が、0.6かけない状態で表示されてしまいました。 この場合×0.6の状態で反映させるにはどうしたらよいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
回答No.4

仕入価格クエリで参考仕入価格をフィールドに入れたらと言うのは単純にフィールドとして追加しただけの場合、仕入価格クエリで表示される参考仕入価格と参考仕入価格クエリの参考仕入価格は同じになるはずです。 ここに出ている情報だけを元にするなら、参考仕入価格をフィールドと追加した場合、そのフィールドは必ず過去の仕入値か定価*0.6になるはずです。 もちろん、仕入価格クエリのフィールドを追加した時に単純に参考仕入価格クエリの参考仕入価格を追加した場合ですけど。 これ以上はちょっと、この情報からではわからないですね。 すみません。

その他の回答 (3)

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

詳細が分からないので必ずできるとは保証できませんが >Nz関数で0円になるようにして ここで0じゃなく定価*0.6でいけませんか Nz(単価,定価*0.6)

noname#140971
noname#140971
回答No.2

疑問点1、商品マスターで、なぜ、逐一、定価を入力しているのか? ・1商品1単価であれば、参照の必要性はない筈だが・・・。 ・商品の品種別に基準単価があるのであれば・・・。が、[商品ID]、[商品名]から参照・・・。 疑問点2、商品マスターで、仕入単価を入力とは・・・? ・商品マスターの[基準仕入単価]を更新しようということかな。 ・先ずは、[定価]×0.6 が基準値ならが、それだけで終わりの筈。 ・過去の仕入単価をなぜ参照するのかな? ちょっと、全体に疑問点が多いです。

kobutoriman085
質問者

補足

いつもお世話になってます。 1商品につき定価はたいてい1つですが、仕入単価は時期や仕入先によって変動します。 定価に0.6をかけるのはあくまで最終手段でかなり大雑把な式です。 昔からある商品や最近仕入がなかった商品についてはとりあえずこれで対応しようとしています。 ただうちは設備関係の仕事をしているので、現場によっては昔の部品を取り寄せないといけなかったりしますので、仕入記録が入力された商品については計算時にそちらが優先されるようにしたいのです。 アクセスでデータベースを作ろうとしたのが昨年待つ辺りからで、基本は工事業なので暇を見つけては作ってる状態です。 本来なら簿記上、昔の商品は減価償却しないといけないんでしょうけどそこまで計算する余裕もありません。 ですので在庫のままの商品を昔の仕入単価で計上したり、新たに仕入れた場合はそちらに対応したりしないといけないわけです。 わかりにくい質問で申し訳ないです。 よろしければ何かアドバイスいただけたらと思います。 よろしくお願いします。

回答No.1

すみませんが、仕入記録クエリがどういうクエリなのかと、仕入価格クエリをどのように作ろうとしているのかがわからないので、答えようが無いです。 定価と過去の仕入値がどこのテーブルにあるのかもわからないですね。 たぶん、商品マスターかとは思いますけど。

kobutoriman085
質問者

補足

すいません。 すこし省略しすぎました。 <商品マスター> ・種別コード ・メーカーコード ・No. ・商品名 ・商品コード等 ・定価 ・過去の仕入価格 ※ 主キーは種別コード・メーカーコード・No.の3つです。 <仕入記録テーブル> ・ID ・仕入年月日 ・商品名…商品マスターとリンクしてます。 ・仕入先 ・数量 ・単価 <仕入記録クエリ> ・商品名 ・数量 ・単価…仕入記録テーブルの各商品の最後の単価を抽出しています。仕入記録にないもの(データベース制作以前の在庫品など)はNz関数で0円になるようにして、商品マスターに登録してあるすべての商品が表示されるようにしました。 最終的に作りたいのは、別に作った棚卸テーブルの数量とできるだけ最近の仕入値を掛け合わせた棚卸金額の表です。 今の予定では、棚卸の数量に仕入記録クエリの単価を掛け、もし単価が0円のときには代わりに参考仕入価格を掛け合わせるといったものが作りたいのです。 すいませんがアドバイスよろしくお願いします。

関連するQ&A

  • アクセス2003 クエリの書式

    いつもお世話になっています。 商品テーブルや仕入テーブルなど数種類を作り、それを基にクエリをいくつか作りました。 テーブル[仕入記録]から各商品の直近仕入額を抽出したクエリ[直近仕入額クエリ]とテーブル[商品マスター]を組み合わせ、仕入れのない商品(仕入記録に入力がない商品)はNz関数で0になるようにしました。 そうしたところ商品名や金額はあっているのに、直近仕入額の書式が文字列のような表示になってしまいました。 もちろん[直近仕入額]やその他のテーブルで金額のフィールドは全て書式を通貨にしています。 Nz関数の使い方がおかしいのでしょうか? それとも他に原因があるんでしょうか? よろしくお願いします。

  • アクセス2003 クエリで年度・商品別にまとめたい

    いつもお世話になっています。 下記のような仕入記録テーブルがあったとします。 仕入年月日 | 商品名 | 数量 | 単価 | 2006/04/05   AAA    10     100 2006/07/12   BBB    5      280 2006/11/03   AAA    15     120 2007/02/19   BBB    5      230 2007/04/02   AAA    10     150 2007/05/10   BBB    15     250 この時、年度毎の最終仕入額を商品別に出したいのですがクエリはどのように作ればいいのでしょうか? 以前質問させていただいて商品別の最終仕入日を出すこと(Max関数使用)はできたのですが、これを年度別に分ける方法がわかりません。 年度自体はDatePart("yyyy",DateAdd("m",-3,[仕入年月日]))で出したらいいんですよね? クエリをいくつかの段階に分けて作らないとダメなんでしょうか? ご指導よろしくお願いします。

  • アクセス2003 テーブルについて

    昨日も別の質問でお世話になりました。 回答いただいたやり方で作業を進めているのですが、もうひとつ伺いたいことが出来ましたので、新たに質問させて頂きます。 会社の商品データを作っているんですが、下記のようなことは出来るんでしょうか? <商品マスター> ID 商品名 商品説明 備考 <仕入記録> ID (商品マスターとリンク) 商品名  仕入数量 仕入単価 この二つのテーブルを作り、<仕入記録>のIDに入力した時点で<仕入記録>の商品名に<商品マスター>の該当する商品名が自動で入るようにしたいのですが。 これは可能でしょうか?

  • ACCESS 商品毎の最新の単価を設定するには?

    ACCESS 商品毎の最新の単価を設定するには? 既に運用しているデータベースで不具合があり、以下のようなクエリを作りたいと考えていますが、データベースを作成してからかなり時間も経ってしまっており、自力で形にすることができません。 お知恵をお借りしたいと思いますので、よろしくお願い致します。 1.テーブル構成 [T_商品マスタ]--商品IDでリレーション設定--[T_単価マスタ] T_商品マスタのフィールド 商品ID(キー/数値型) 商品名1(テキスト型) 商品名2(テキスト型) 商品分類ID(数値型) 定価(通貨型) 取扱中止(Yes/No型) 販売単位(テキスト型) 備考(メモ型) T_単価マスタのフィールド 価格履歴ID(キー/オートナンバー) 商品ID(数値型) 仕入単価(通貨型) 仕入先ID(数値型) 販売単価(通貨型) 変更日(日付/時刻型)…Now()にて変更を入力した日付及び時刻を記録しています。 [Q_商品最終単価]…現在運用していますが、仕入単価及び販売価格が[T_単価マスタ]の最新のものにならない不具合が生じています(クエリ内の集計で"最後"を使用していますが最後=最新ではないとか、、、) クエリ内で設定している項目 商品ID 商品名1(単価を登録する度に変更することは禁止) 商品名2(単価を登録する度に変更することは禁止) 仕入単価(変更の度に[T_単価マスタ]の仕入単価欄に単価を入力して更新) 販売価格(仕入価格を入力するとフォーム上で自動計算) 変更日(仕入価格を入力した日時) クエリ時のイメージ 商品ID  商品名1  商品名2  仕入単価  販売単価  変更日 0001   うどん   稲庭    100     200     2010/01/01 10:10:16 0002   うどん   讃岐    150     300     2010/01/25 11:12:50 0003   そば    十割    200     400     2009/12/15 15:30:10 . . . 伝票入力時にこのクエリを用いて商品IDを入力することで、最新の単価を呼び出すようにしていたつもりでしたが、集計クエリの"最後"に信頼性が無いことがあるそうで、必ずしも最新の単価になっていないと発覚し冷や汗をかいております。 Q_商品最終単価の項目はそのままで、商品ID毎に最新の変更日に基づく最新の単価をクエリできる方法をご教授願います。

  • Accessでの数字のデータ型

    お世話になります。Access初心者です。 Access2003 OS:WindowsXP 既存のオーダー入力DBに変更を加えているのですが、行き詰まってしまい質問させていただきました。 現在USDからYENへのレートが変わる度に価格表を差し替えていますが、 レートの部分を別のテーブルで期間指定して管理できないかと考えています。 構成:(関連する部分のみ) [テーブル] tbl_注文(注文番号*,日付)*は主キー tbl_注文Sub(注文番号,ID,数量,変更後価格USD,変更後価格JPY)※注文番号でtbl_注文とリレーションシップを組んでいる tbl_価格表(ID,型番,USD,JPY,RateID) tbl_Rate(RateID,Rate,開始日,終了日)※今回新たに作成 [クエリ] qry_注文Sub 現在の構成: tbl_注文⇒tbl_注文Sub-tbl価格表 ※tbl_注文Subとtbl_価格表はIDで連結させている 表示項目: 注文番号,ID,数量,USD,JPY,USDSubTotal:IIf([Currency]=2,IIf([変更後価格USD]>0,[変更後価格USD]*[Qty],[USD]*[Qty]),0),JPYSubTotal:IIf([Currency]=1,IIf([変更後価格JPY]>0,CCur([変更後価格JPY]*[Qty]),IIf(IsNumeric(Format$([JPY],"数値")),CCur([JPY]*[Qty]),CCur(0))),CCur(0)) 考えている変更: qry_Rate Rateを入力(日付のコントロールはとりあえず後回しに) qry qry_注文Sub tbl_注文⇒tbl_注文Sub-tbl価格表-tbl_Rate 表示項目: 注文番号,ID,数量,USD,JPY:IIf(IsNumeric(Format$([USD],"数値")),[USD]*[Rate],0),USDSubTotal:IIf([Currency]=2,IIf([変更後価格USD]>0,[変更後価格USD]*[Qty],[USD]*[Qty]),0),JPYSubTotal:IIf([Currency]=1,IIf([変更後価格JPY]>0,CCur([変更後価格JPY]*[Qty]),IIf(IsNumeric(Format$([JPY],"数値")),CCur([JPY]*[Qty]),CCur(0))),CCur(0)) ※USDはNAの場合もあり、フォーマットはテキストです。 ※Rateは数値型です。 上記の変更で、qry上では正しく計算が出ますが、formになると表示されません。 Subフォームで型番を選択して数量を入力すると価格*数量が表示される設定ですが、そもそもSubフォームに何も表示されないようになってしまいます。 仮に[Rate]ではなく、[USD]*120とすると、フォームも問題なく動きます。 何かデータ型の問題ではないかと推測しているのですが、 CCurをつけてみるなど、いろいろ試してもうまくいきません。 どなたかアドバイスをいただけるとありがたいです。 どうぞよろしくお願い致します。

  • アクセスのクエリの組み方を教えてください

    アクセスで、クエリを組みたいのですがうまくできません。 添付画像をご覧ください。 テーブル1の中の「仕入コード1」フィールドと「仕入コード2」フィールドと 仕入コードマスタの「仕入コード」フィールドとの掛け合わせを行いたいです。 その結果、 (1)「仕入コード1」フィールドに存在して、「仕入コード」フィールドに存在しない、 (2)「仕入コード2」フィールドに存在して、「仕入コード」フィールドに存在しない レコードを一度に抽出したいです。 今回の場合であれば、品番222(含むAB)と品番333(含むAD)の2レコードを抽出したいです。 クエリを組みましたが、うまくそのようにできませんでした。 クエリのどこがおかしいのか?ご指摘頂けませんでしょうか。よろしくお願いいたします。

  • クエリフォームからのレコード追加について

    お世話になります。 タイトルとして、「クエリフォームからのレコード追加」とすべきか 「フォーム上でのテーブル参照」とすべきか迷うところなのですが 仕入マスタ(ID、品番、仕入日、仕入数) 商品マスタ(ID、品番、商品名) という二つのマスタと、 品番でリレーションして「仕入マスタのフィールド(from仕入マスタ)+商品名(from商品マスタ)」を出すだけの単純なクエリがあります。 今、仕入マスタに新規レコードをフォームから追加する際、 品番を入れたら商品マスタから商品名が参照され表示される、というフォームを作成したいのですが、どうしたら実現可能でしょうか。 (絶対やりかたがあると思ったのですが、うまく探せず質問させていただきます) 当初、新規レコード追加時には、品名を表示させようとしていなかったため、普通に「仕入マスタのフォーム」で「新規」ボタンに下記プロシージャを登録していたのですが。。 「仕入マスタのフォーム」を「仕入クエリのフォーム」に変更して、下記プロシージャを少々修正するだけで実現できるでしょうか。 (素人考えでいくつか試してみたのですが、この場合★の部分に何を指定すればいいのかわかりません。) Private Sub 新規_Click() Me.AllowEdits = False Me.AllowAdditions = True DoCmd.GoToRecord acDataForm, "仕入マスタ", acNewRec '★ End Sub わかりにくい説明で申し訳ございません。 何卒お力添え宜しくお願い致します。

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

    Accessの不一致クエリについて質問があります。 ある注文リストと商品マスタを比べ、 まずテーブル作成クエリで注文リストとマスタを比べ、常備品(商品マスタにある)は出荷日に本日日付をセットしテーブル作成、次に不一致クエリでマスタにない特注品は空欄のまま先程作成したテーブルに追加をするマクロを作成しました。 すると、注文が100件、特注が2件だった場合、最初は98件が作成されますが、不一致クエリをやっても0件になります。 ちなみに商品マスタには、商品コードと3種類の規格があり、注文リストの商品コード+規格を連結、商品マスタのそれを連結させて、一致か不一致かで見ています。 不一致がどうしても0件になるのですが、解決方法はないでしょうか。 お願いします。

  • アクセス2003 集計『最後』

    いつもお世話になっています。 <仕入記録テーブル>で商品Aを下記のように複数回入力してあります。(数字がズレてたらすいません。) | 仕入ID | 仕入年月日 | 商品名 | 数量 | 単価 |    76    2006/4/26       A      5     108    78    2006/4/28       A      5     108   253    2006/7/20       A     10     108   815    2006/11/10       A     10     120   843    2007/1/11       A      5     108   852    2007/1/12       A      2     120  1001    2007/2/19       A     10     120 クエリで<仕入記録テーブル>から各商品の最も最近の仕入単価を取り出したいと思い、デザインビューで<仕入記録テーブル>から<単価フィールド>を選択し集計方法を『最後』に設定しました。 すると表示された金額がなぜか108円になってしまいました。 やり方がおかしいのかと思いDLast関数というのも試してみたのですが、構文がイマイチ理解できずうまくいきませんでした。 仕入記録から仕入年月日の最も新しい仕入単価を出すにはどうしたらよいのでしょうか? よろしくお願いします。 

  • Access2003 一つのクエリで結果を出したい

    お世話になります。 下記テーブルを紐付けてクエリを作成します(Access2003)。 受注テーブル  ・ID  ・コード  ・数量 検品テーブル  ・ID  ・コード  ・検品フラグ マスターテーブル  ・ID  ・コード  ・印刷フラグ 検品テーブルのレコードは、受注テーブルの数量合計が展開されたレコード数となります。例えば、AAAというコードで数量合計が8の場合、検品テーブルではAAAのレコードが8レコード存在することになります。 但し、マスターテーブルの印刷フラグがYesとなっているものは、数量がいくつあっても受注テーブルは1レコード作成されます(数量合計で展開しない)。  受注テーブル   ID コード 数量   1  AAA   5   2  AAA   3   3  BBB  100  検品テーブル   ID コード 検品フラグ   1  AAA   Yes   2  AAA   Yes   3  AAA   Yes   4  AAA   Yes   5  AAA   Yes   6  AAA   Yes   7  AAA   No   8  AAA   Yes   9  BBB   Yes  マスターテーブル   ID コード 印刷フラグ   1  AAA   No   2  BBB   Yes こんな感じです。 そこで各テーブルをコードで紐付けてグループ化し、検品フラグYesで抽出した状態で以下の結果を表示出来るようにしたいところです。 コード 数量合計  AAA   7  BBB  100 要するに印刷フラグがYesのものは受注テーブルの数量合計を表示し、それ以外は検品された数を表示させたいと考えています。 あらかじめ受注テーブルでコードでグループ化し、数量の合計を算出するクエリ(※1)を作成し、そのクエリと検品テーブル、マスターテーブルを紐付けたらうまく表示出来ました。 ※数量合計はIIFで印刷フラグ=Yesの場合は※1の数量合計を、Yesではない場合は検品テーブルのレコードカウント数を表示。 しかし、できれば一つのクエリで上記の結果を表示させたいのですが、可能なのでしょうか。 ご教授お願い致します。

専門家に質問してみよう