• 締切済み

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が適用される。

みんなの回答

  • cyber-e
  • ベストアンサー率0% (0/0)
回答No.3

No.2に関する訂正です。 入力フォームの単価は、コンボボックスにする必要はありませんでした。(必ず1つのレコードに決定されるため) ですので、テキストボックス1にして、マクロの値の代入のアイテムに Forms![フォーム名]![テキストボックス1] 式に DLookUp("単価","単価情報",商品IDと取引先IDを決定する条件) と記述し、適当なイベントプロパティに割り当てると良いと思います。 それではがんばってください。

  • cyber-e
  • ベストアンサー率0% (0/0)
回答No.2

はじめまして。 大変失礼とは存じますが、商品情報のテーブル構造が不十分であると思います。なぜなら、このテーブルでは、すべての商品で、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の値集合ソースを更新するよう、再クエリマクロの設定が必要となります。 もし、不明な点がありましたら、ご連絡ください。

参考URL:
http://www.c3-net.ne.jp/%7Ecyber-e/
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

その状態からでも無理やりやれないことはないですが、素直にテーブル構造を正規化というか普通のものにするほうをお勧めします。 一つの商品に対して必ず二つの仕入先があるという前提は流動的な訳で、商品の在庫や売上管理のテーブルとなれば通常は次のようにします。 「商品情報」には商品ID、商品コード、商品名、仕入先(メーカーID)、単価 「メーカー情報」メーカーID、連絡先... メーカーIDをキーにして多対多のリレーションを張りましょう。 どうしてもそういうイビツな構造のままでやってみたいということであれば、DLOOKUP関数を用いれば可能です。但し、処理上それ以外のコードも必要ですし、何かの条件が変わった時などその都度全てのコードを見直す必要があります。

関連するQ&A

  • access2007でのサブフォームへの入力

    仕入入力画面なんですが メインフォーム(仕入伝票テーブル)サブフォーム(仕入伝票明細テーブル) という構成です。 メインフォームで 仕入先をコンボボックスで指定すると サブフォームの 商品を入力するコンボボックスに メインフォームで選択した仕入先で購入できる商品が選べるように したいのですが、どうすればよろしいでしょうか? メインフォームの仕入先コンボボックスを選択する度に サブフォームの商品コンボボックスで選択できる内容を反映させたい です。 仕入先A : 商品1 商品2 仕入先B : 商品3 商品4 商品5 仕入先C : 商品6 商品7 商品8 商品9 メインフォームで仕入先コンボボックスで仕入先Aを選択すると サブフォームで選択できる商品コンボボックスは商品1と商品2 メインフォームで仕入先コンボボックスで仕入先Bを選択すると サブフォームで選択できる商品コンボボックスは商品3と商品4と商品5 というようなイメージで作りたいです。 どうかよろしくお願いします。

  • Access columnプロパティについて

    フォームのコンボボックスで商品コードを選択して 非連結のテキストボックスに選択された商品コード の単価をcolumnで自動入力するようにしたのですが 単価の変更がある場合はこの既定値の単価を変更したい です。今の状態で単価を変更をしようと思っても なにかロックがかかったようになっています。 なぜだかわからないので教えていただけませんか?

  • Access2000 DLookup関数の使い方

    色々試してみたのですがわからないので質問させていただきます。 フォーム/サブフォームを作っています。 サブフォームにある商品コード(コンボボックス)を入力すると、同じサブフォームにある単位、単価に商品台帳テーブルの値(単位、単価)を持ってくるようにしたつもりなのですが・・・。 商品コードの更新処理後に以下のコードを記述したのですが、うまく動きません(エラーは出ない)。 Me![単価] = DLookup("[単価]","商品台帳","[商品コード] = [Forms]![フォーム]![サブフォーム]![商品コード]") どこが悪いか教えていただけないでしょうか?

  • access コンボボックスの次

    顧客管理・商品管理の簡略化を目指している初心者です。商品マスター・仕入先・販売先というテーブルを作成、商品情報の入力・閲覧のためのフォームを作ろうと思っています。 1)商品マスターテーブルには、仕入先コードと販売先コードが入っています。フォーム上では仕入先名・販売先名も確認したいのですが、 「商品マスターテーブルにそれらを追加したクエリを作成 → クエリからフォームを作成」 という方法でよいでしょうか。 2)フォーム上で仕入先コードと仕入先名のコンボボックスを設置します。コードを選択すると自動的に次の欄に仕入先名が反映されるようにする方法を教えてください。 おそらく非常に初歩的な質問かと思いますが、マニュアルを見たり検索をかけたりしても要領を得ません。アドバイスをどうぞよろしくお願いいたします。

  • 困ってます!Accessフォームのコンボボックス

    初心者です。とーっても困っています・・・。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 が、しかし、選んだデータがテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、テーブルを見ると、他のテキストボックスに入力した情報は保存されているけど、コンボで選んだデータは空白です。 誰か助けてください!!よろしくお願いします。

  • access2003

    2000種ほどの商品を扱っています。商品コードひとつにつき、仕入先・取引先が1箇所ずつ決まっていて、値段の変化もあまりありません。伝票を見ながら、フォームから直接売上入力を行い、請求処理と売上分析に利用したく思います。 ◆親)売上入力フォーム:売上管理番号/日付/取引先/取引先伝票番号/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付/取引先伝票番号 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 入力の効率化を図るため、1部品1取引先であることを利用して、親フォームで取引先を選択することで商品を絞り込み、子フォームの商品選択コンボボックスにはその取引先の商品だけが表示させるようにしたいと思います。どのような方法が考えれるでしょうか? クエリを使うのだと思いますが、いろいろ試しても失敗してしまいます。 また、その上でさらなる絞込みとして、明細の各行で各商品を選択する際に、商品コードの一部を入れたり、仕入先名を入れると部品が絞り込めるようにできないでしょうか? アドバイス、参考資料、なんでもお寄せください! どうぞよろしくお願いいたします。

  • Access VBA

    Access 2000 についての質問です。 下記のようなフォーム上のコンボボックスで 商品、産地、サイズを選択 →テキストボックスに個数を入力 →見積りボタンをクリック →テキストボックスに合計金額を表示 ----------------------------------------- フォーム  コンボ コンボ コンボ   テキスト  商品  産地  サイズ   個数 ボタン        テキスト 見積り        金額:______円 ----------------------------------------- というものを、下記の表に基づいて作りたいのです。 単価.xls ===================== 商品  産地 サイズ 単価 みかん 和歌山 L  30 リンゴ 青森  M  50 リンゴ 青森  L  70 リンゴ 長野  L  70 ===================== そこで、コンボボックスで選択した値を活かして 単価.xlsの ”単価”の値を利用して テキストボックスに表示したいのですが、 どのように記述すれば使用できるのか?わかりません。 超初心者ですのでわかりやすく教えてください。よろしくお願いします。

  • Accessフォームのコンボボックス入力について

     初心者で質問の仕方も間違っているかもしれませんが、よろしくお願いします。   商品コード(商品名からそのつど考えて、商品名の頭文字をアルファベット1字、2・3桁目を連番で表す重複なし)・商品名を入力するフォームで商品コード入力にコンボボックスを使用しています。  例えば同じ頭文字の商品(バインダーA4・バインダーB5)を続けて登録する場合で、2件目の商品(B02)を入力する時にコンボボックスのリストに1件目(B01)のデータを反映する事はできないのでしょうか?

  • ACCESSのクエリの作り方

    テーブル名   在庫 商品コード 品名 入庫日 在庫量 ・・・ があります データとして A0000,在庫品1,2005/10/10,50 A0000,在庫品1,2005/12/25,70 A0000,在庫品1,2005/12/28,20 B0000,在庫品2,2005/12/28,10 B0000,在庫品2,2005/12/29,5 C0000,在庫品2,2005/12/30,30 という具合になります。 入庫日の都合上、商品コードがユニークになりません。 この場合 フォームを作って 商品コードをユーザーに入力させ、在庫量を表示させるにはどうしたら良いのでしょうか? 例えば"A0000" だと140になります。 SQLで商品コード=ユーザー入力文字列・・・ とかいうのは知っているんですがACCESSの使い方がよくわかりません、 デザインビューでクエリを作成するとかやるとこの場合固定(商品コードが)されて しまうようです。ユーザーに求めることは出来るのでしょうか?

  • Access 商品マスタフォームの検索コンボBOX

    商品マスタフォームのヘッダーに非連結のコンボボックスを設けて、 商品検索キーを使ってフォームにデータを表示させるようにしています。 フォーム「商品マスタ」 選択クエリ「商品検索」(フィールド:「商品ID」「検索キー(カナ2文字)」「商品名」) コンボボックス「cb検索」 更新後処理に「再クエリマクロ」 うまく動作していますが、検索コンボボックスをもう一つ設けて、 仕入先からも検索できるようにしたいと思いました。 同じようにフォーム上に非連結のコンボボックスを作成して 選択クエリ「商品検索仕入先」(フィールド:「商品ID」「仕入先」「商品名」) コンボボックス「cb検索仕入先」 更新後処理に「再クエリマクロ」 フォームのコントロールソースのクエリ「商品ID」の条件を Like [Forms]![商品マスタ]![cb検索] & "*" Or Like [Forms]![商品マスタ]![cb検索仕入先] & "*" としました。 何度か交互に検索してみましたが、選択した商品が表示されるときとされないときがあります。 表示されないときは、検索に使っていないほうのコンボボックスの値が反映されているようです。 また、続けて検索キーのみで検索を試みてみると、うまく表示されるときと、そのときの 仕入先検索が選択している商品が表示されるときとがあります。 法則性がまったくわかりません。 一番最新のコンボボックスの選択が表示に反映されるようにするには どのようにすればよいのか教えていただけないでしょうか。 他に提示する情報があれば重ねてご教示ください。 よろしくお願いします。