- 締切済み
accessの使い方
関連書籍を読みアクセスを勉強しているのですが、 いまいちよくわからないことがあります。 「商品情報」、「7月商品」というテーブルを作り、在庫管理をしたいと思っています。 「商品情報」には商品コード、仕入先1、単価1、仕入先2、単価2があり、 「7月商品」には商品コード、仕入先、単価、仕入数、在庫があります。 「7月商品」の入力用フォームを作り、商品コードはコンボボックスを使って「商品情報」の商品コードから選べるようになっています。 「7月商品」で商品コードを選んだ時に、「7月商品」の仕入先をその商品コードの仕入先1,仕入先2から選べるようにしたいのですがどうしたらいいでしょうか? また選んだ仕入先の単価が適用されるようにしたいと思います。 <例> 「商品情報」 001,商品1,A社,100,B社,110 002,商品2,C社,200,D社,210 「7月商品」の入力フォームで商品コードをコンボボックスの中から001を選ぶと、(ここまではできました) 仕入先にA社かB社が選べ、 A社を選ぶと単価に100が、B社を選ぶと単価に110が適用される。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- cyber-e
- ベストアンサー率0% (0/0)
No.2に関する訂正です。 入力フォームの単価は、コンボボックスにする必要はありませんでした。(必ず1つのレコードに決定されるため) ですので、テキストボックス1にして、マクロの値の代入のアイテムに Forms![フォーム名]![テキストボックス1] 式に DLookUp("単価","単価情報",商品IDと取引先IDを決定する条件) と記述し、適当なイベントプロパティに割り当てると良いと思います。 それではがんばってください。
- cyber-e
- ベストアンサー率0% (0/0)
はじめまして。 大変失礼とは存じますが、商品情報のテーブル構造が不十分であると思います。なぜなら、このテーブルでは、すべての商品で、2社以内の取引先しか指定できないからです。データベースは、あらゆるケースを想定し、(たとえば1商品に対し、5社と取引する場合など)すべてのケースで不具合なく稼動しなければなりません。これに対応するテーブル構造の案といたしまして、下記の構造がありますので、参考にしていただければ幸いです。 「商品情報」 商品コード,商品名 001,商品1 002,商品2 「取引先情報」 取引先コード,取引先名 201,A社 202,B社 203,C社 204,D社 「単価情報」 商品コード,取引先コード,単価 001,201,100 001,202,110 002,203,200 002,204,210 「7月商品」の入力フォームでは、 商品コードのコンボボックス1の値集合ソースに「商品情報」 仕入先のコンボボックス2の値集合ソースに「取引先情報」 単価のコンボボックス3の値集合ソースには、「単価情報」をコンボボックス1、コンボボックス2の値で抽出したクエリを設定すればOKです。 ただし、コンボボックス1,2を修正したときに、コンボボックス3の値集合ソースを更新するよう、再クエリマクロの設定が必要となります。 もし、不明な点がありましたら、ご連絡ください。
- popesyu
- ベストアンサー率36% (1782/4883)
その状態からでも無理やりやれないことはないですが、素直にテーブル構造を正規化というか普通のものにするほうをお勧めします。 一つの商品に対して必ず二つの仕入先があるという前提は流動的な訳で、商品の在庫や売上管理のテーブルとなれば通常は次のようにします。 「商品情報」には商品ID、商品コード、商品名、仕入先(メーカーID)、単価 「メーカー情報」メーカーID、連絡先... メーカーIDをキーにして多対多のリレーションを張りましょう。 どうしてもそういうイビツな構造のままでやってみたいということであれば、DLOOKUP関数を用いれば可能です。但し、処理上それ以外のコードも必要ですし、何かの条件が変わった時などその都度全てのコードを見直す必要があります。