アプリ版:「スタンプのみでお礼する」機能のリリースについて

仕入伝票入力をアクセスで行っています。フォームに日付、仕入先CD等の項目、サブフォームに明細で商品CD、数量、価格等です。しかし最近不便に感じてきたので改良したく質問させていただきました。不便というのは仕入先の伝票入力の時、仕入先ごとに商品CDが異なるという点です。これまでは対応表(商品台帳)をプリントアウトして探してしました。そこで、商品マスターテーブルに仕入先ごとの商品CD項目を商品CD1、商品CD2、・・・と追加し、メインフォームの仕入先CDにより、明細サブフォームの商品CDの参照を変える方法。(仕入先CDが1のとき商品名、商品価格は商品CD1を参照し、仕入先CDが2のときは商品名、商品価格は商品CD2を参照するのような感じ)

選択クエリでサブフォームをつくっているのですが、いかがでしょうか?
フォームに商品CD1、商品CD2と入力枠を作っておくことも考えたのですが見栄えが悪いので条件で仕分けたいのですが可能でしょうか?可能であれば方法を教えてください。

A 回答 (4件)

今までの「商品マスタ」は


・商品CD
・商品名
・仕入れ値とかその他
のフィールドで構成されていたはず。
 
それを
・商品CD
・仕入先CD
・商品名
・仕入れ値とかその他
に変えましょう。
 
で、メインフォームの仕入先CDを参照して、それに一致する物だけを抽出するクエリを「商品マスタ2」として作ります。
 
今まで商品マスタを参照していた入力枠を、商品マスタ2を参照するようにすれば解決します。
 
・具体的なテーブルの内容の例
 
仕入先マスタの「仕入先CD」と「仕入先名」
001 鈴木原料
002 佐藤商事
003 田中物産
 
商品マスタの「商品CD」「仕入先CD」「商品名」「仕入価格」「商品価格」
00024 001 りんご 100 120
1240B 002 りんご 90 120
55100 003 りんご 105 120
00025 001 みかん 44 50
1240C 002 みかん 42 50
55101 003 みかん 40 50
00026 001 ぶどう 230 250
55102 003 ぶどう 221 250
01054 001 なし 89 105
2120D 002 なし 88 105
80201 003 なし 88 105
 
上記のような場合、メインフォームの「仕入先CD」を「佐藤商事」にした場合、クエリ「商品マスタ2」は、仕入先CDが「002」のレコードだけ抽出されます。
 
クエリ「商品マスタ2」の抽出結果
1240B 002 りんご 90 120
1240C 002 みかん 42 50
2120D 002 なし 88 105
 
あとは、サブフォームの商品CDの入力枠の内容に従って、仕入価格、商品価格を表示するだけです(それは今までと同じ)
    • good
    • 0
この回答へのお礼

ありがとうございます。この方法だと、同じ商品名をコードの数だけ登録しなければいけないかと考え、長い商品名だと大変かと思いましたが、フィールドをつくり、仕入先CDで抽出したクエリで可能ですね。参考させていただきます。

お礼日時:2010/12/01 11:08

同じ商品の管理が複数になる仕組みはしないこと。




何のための商品マスタか考えてみる。


同じ商品を複数の仕入先からというのはしてないですね?。


機能的にでなくて実作業、あるべき構成に基づいているか見直した方がいいでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。同じ商品を複数の仕入先から仕入れています。というか、ここがポイントです。
多く提案意見をいただきありがとうございます。自分の質問に補足する場所がわからないのでこの場をお借りします。
仕入伝票にはその仕入先独自の商品コードにつづいて商品名、単価云々と記載されています。例えば、 A123456  アサヒスーパードライ 350ml缶  24入  1ケース  ¥○○○○

自分の仕入れデータ入力(アクセスで作った)に上のA123456と入力することで登録。また翌日、別の仕入先から同じ商品を仕入れ例えば
   98765    アサヒスーパードライ 350ml缶  24入  1ケース  ¥△△△△
これを入力する時には98765を入力することで同一商品の仕入が登録されるという感じにしたいのです。ちなみに主キーはJANコードです。また、私のオリジナルの自店の商品コードも作成しています。現在は仕入れ伝票のコードでなく商品名、容量から自店のコード番号を探し入力しているのですが時間がかかります。
 

お礼日時:2010/12/01 11:29

ざっと見る限り、単に商品コードをプライマリキーに出来そうな気がしますが。



何の為にマスタを持つのかよく考えてください。
コードが違うからと無意味にフィールドを増やすのは良くないです。
商品コードをキーに商品情報を持ってくるのですから、それを行うクエリ(SQL)を組めば良いだけのはず。

コード・商品名
001・商品A
002・商品B
ABCD・商品1
ZZ・商品c

というマスタが会ったとして、コードに対する商品名を取るなら、
 Select 商品名 from マスタ Where コード='###'
(###は検索するコード)

というようなSQLを組んで、マクロ上で###に対象の商品コードをセットするようにしてSQLを発行すれば、
該当の情報は取得できます。

 Select 商品名 from マスタ Where コード='ABCD'
とすれば、商品名として"商品1"が取得されるので、それを単にフォームにセットしてやるだけ。

ループでぐるぐる回してIF判定するならワザワザデータベースにする必要も無いし。
コード毎にマスタのフィールド追加してたら、商品が膨大になったときテーブル自体が無駄に膨大化することになるし。

データベースを使うならデータを引っ掛けるための検索キーという考え方が基本。
商品コードとかバーコードとか検索キーにするにはうってつけの物なわけで。
コードが商品毎に違うということは、そのコードを指定すれば、その商品であるということを特定できる情報なわけで。
そういう情報がプライマリキー(一意に情報を特定できるキー)となります。
そういった情報を使いこなす事でデータベースは活きてきます。

SQL関係の情報はネットにも書籍にも沢山あるので探してみてください。
アクセスでシステムを構築する場合はクエリとマクロを上手く組み合わせることがコツです。
    • good
    • 0
この回答へのお礼

ありがとうございます。補足をNO4のお礼欄に掲載させていただきました。よろしくお願いします。

お礼日時:2010/12/01 11:31

仕入先毎違いがあってもどんな商品になるかはわかるのでは?。



商品分類を決めて絞り込み、選択画面を用意するのはどうですか。
    • good
    • 0
この回答へのお礼

ありがとうございます。一応コンボボックスで選択もできるようにしてあるのですが、同じ分類の商品が結構多くて選択するのに時間がかかるので、、

お礼日時:2010/12/01 10:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!