• ベストアンサー

access コンボボックスの次

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

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

  • ベストアンサー
noname#245936
noname#245936
回答No.1

IT屋の者です。 然るに、貴方ほどデータベース(以下DB)を勉強されるお客様が いたらどれほど楽だろうか…という話はさておきまして。 Accessは、商用分野ではちょっと扱いづらいので私はほとんど知り ませんが、参考までの情報をお伝えしようと思います。 まず、データベースアプリケーションの基本的な部分は。 1.データを入れるところがあって。 2.データを蓄える場所があり。 3.データを参照する方法があって。 4.データ結果が見えるところがある。 …と考えられます。 このときに、Accessでは多分、1が「フォーム」、2が「テーブル」 3が「クエリ」、4が「フォームないしレポート」という形に なると思います。 で。データ処理において考えますと、画面・帳票などというのは あくまでも「ガワ、見た目」の問題でありますから。 我々業者では、まずやりたいことがあった場合、ここはぐっと こらえて1と4は無視して考えます。 次いで考えることはデータのため方です。 通常、データベースを構成するものは、見た目を除けば、 ・テーブルというフィールド(列)集合体の一枚表がまずある。 ・それに対しては、参照(SELECT)、更新(UPDATE)、追加(INSERT)  削除(DELETE)という4アクションしかあり得ない。 ・「参照」はテーブルを複数枚つなげて見たい場合がある。  (Accessでいうリレーションシップ) ・更新、追加、削除に関しては基本的に1テーブルにしか  アクションをおこすことはない。  (画面デザイン上、ほかのテーブルを同時に見せる場合は   ありますが、データ処理上は1テーブルにしか行いません) …と考えることができます。 そこで、私ならば貴方の言う仕組みを考えた場合。 ・商品マスター   + キーとなる未来永劫重複しないコード (SKUやJAN)  + 基本単価価格情報(売価、仕入れ基本価格、原価など)   複雑な体系の場合は別途「価格マスター」必要  + 商品名など副情報 ・仕入先マスター  + キーとなる未来永劫重複しないコード ()  + 住所など副情報  + 固定の場合のみ掛け率情報 ・販売先(卸先)マスター  道場 ・販売明細トランザクション情報  + 商品マスターの商品コード  + 仕入先、卸先コード  + 日にち  + 数量  …いつ誰がどこで何をいくつ  (※販売した事実は未来永劫変わらないので、一部マスタ情報の    コピーを持つ場合があります。輸入品などマスタ売価が    変動する場合です) ・(伝票単位の特殊な処理を行う場合は販売伝票情報) …とテーブルをまずこさえます。 次いで、そのテーブルに対するアクションをすべてクエリという ところに仕込んでしまいます。 例えば、商品マスターなど、マスター系に関しては、更新・追加・削除 に関しては「商品マスタ追加」「商品マスタ更新」「商品マスタ削除」 という感じでSQLを書くなりしてエントリします。 また、参照については複数のテーブルをくっつけて見たいことが 殆どであるため、Accessでいうところのクエリの部分で、リレー ションシップを使い(通常はSQLでSELECT …JOIN文を使います。 商用DBソフトではビューといいます)組み合わさった情報が 見えるデータ処理のタネの部分を作成します。 例えば ・販売者別売上日計表 ・仕入先別売上日計表 ・商品受け払い表 …や、極論を言えば ・商品マスタメンテナンスのコンボ表示 というのもありです。 見せるパターンを全部クエリに書き出します。 で、最後に画面(フォーム)や帳票(レポート)で全部クエリを 参照させてアクションを起こさせます。 お堅いシステム屋ではこんな感じで作成します。 (そうしないと複雑なシステムは処理が数千本になりますので  フォームやプログラム直接埋め込みSQL処理では管理ができ  なくなります。) 一般市販のデータベースソフトではお便利機能が多彩に組み込まれて おり、ウィザードや何やで自動で様々な処理を行ってくれますので この限りではありませんが、システム屋はこんな感じで設計を しています。 如何でしょうか?参考までに。 ちなみに、余談ながら。 万が一、そのシステムが業務改善を起こすもので、利益向上に 役立つツールでありましたら。 市販商用ソフトも考慮に入れるべきかとは思います。 人一人がソフトを作るのは大変な労力で(だから高いんですけど) 「おれがPCを勉強したい!」という欲があれば大いに結構。 別ですが。 販売管理、分析などというのは昔からある商習慣ですので。 他人のやり方を数百万でポンと買ってしまうのはビジネス的には ひとつの手段といえます。時間はコストですので。 そういう部分も考えてみるといいかもしれませんね。

cottonfeel
質問者

お礼

回答ありがとうございます。 参考書首っ引きで右往左往して焦っているうちに、なにやら本筋を見失っていたような気がします。頭の中がまず・・・クリアになりました。 直接質問にお答えいただくよりも、今の自分に響く回答をいただいたような気がします。落ち着いて、再トライしてみます。ありがとうございました!

その他の回答 (2)

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.3

1)について なぜ商品マスタに 販売先コードが入っているのかがわかりません。 普通は商品があって 販売先は複数になるはずで 1商品1顧客なのでしょうか? 2)について 仕入先コードを選ばずに仕入先名を選んではだめなのでしょうか?(仕入先コードで選ぶと言われるのなら書きますが) コンボボックスを作成するときに ウイザードが出ますよね テーブルまたはクエリーの値を表示するをえらび 仕入先マスタを選び そのとき 仕入先コードと仕入先名の2つを選びます。 フォームを表示したときに 仕入先名を選んだとしても 中身は仕入先コードになっています ためしに ボタンを作って 中身を コンボ12.SetFocus MsgBox コンボ12.Value MsgBox コンボ12.Text としてください(コンボ12 は 先ほど作ったコンボ名に変更してください。

cottonfeel
質問者

お礼

ご回答ありがとうございます。 1)ですが、ご推察どおり、1商品1仕入先1販売先になるような商品コードがもともとついています! といっても、これは指摘をいただいて、担当者に確認してはじめてわかったことではありますが。 2)よく考えると、なぜ仕入先コードも併記するのか自分でもよくわからなくなってきました。たしかに、仕入先名だけでいいのかも。。。 とにかくまずは、いただいた方法、試してみます。 ありがとうございました。

noname#245936
noname#245936
回答No.2

No.1です。 心温かいご返事、感謝いたします。 蛇足ながら、先の文章の補足をしておきます。 まず、説明文中で「フォームとレポート(1と4)はあとで考えます」 と書きましたが、実際には一番真っ先にイメージは作っておきます。 特に「結果」がすべてですので、OUTPUTデザインは真っ先に考えます。 Excelや何やで「こんな情報がほしいよね」という表のサンプルは 先に作っておくと、あとで項目付与漏れがなくなります。 そもそもデータベースアプリケーションはデータから帳票への流れを 下りで作成してしまう資質があります。 欲しい方は「結果は?→処理は?→データは?」と言う順で 考えますが、作る方は「データは?→処理は?→結果は?」という 順で考えるんですネ。 今回は、貴方が利用者ご本人であり結果イメージができていると 考えたことと、AccessというかDB全体感の把握に苦慮していたこと からこういう表現にさせていただきましたが。 実際は我々の業界で言う「要求定義」という作るモノの確定作業に おいては、一番先に帳票→入力画面→処理という順で考えることを 補足しておきます。 で、もうひとつはですね。 私は堅ーく体系的にお話しましたが、実際には最初からそんなに きれいにはできません。 最初は汚くても、ウィザードでも何でもいいんです。 中身ドロドロのプログラムを作ってでも全然構いません。 その「データベースをやるぞー」という心意気、体験は大事にして ほしいと思います。 私が冒頭のお話でお話させていただいたように、データベースを 欲されているお客様ご自身がデータベースを勉強されている… そのような方ほど、強力で、良質なお客様はいません。 Accessでも、FileMakerでも、ITを欲されているお客様自らが ITを触って作ったり挫折してあきらめた、苦労した経験をお持ちで いらっしゃいますと、非常に話がまとまリやすく、理路整然と スムーズに話が進みます。 また、導入しても組織として非常によく使いこなせたり、業務の 力として本当に生かせたり。 我々のコストがかかる部分もご理解いただけますし(笑) システムの成功は、業務と、システムと、人の理解。 良い結果はそこから生まれます。 ある意味我々の仕事がなくなる脅威でもありますが(笑) そのお気持は大切にされるととてもいいと思います。 頑張ってくださいね。 ありがとうございました。

cottonfeel
質問者

お礼

ホームページや印刷物のデザインはそれなりに手がけてきたので、デザインに関しては問題ないかと思いきや、自由度が低くて逆に難しいものですね・・・。(申し訳ありませんが!)途中であきらめて専門家の方にお仕事を差し上げるようなことのないように、がんばります。 ありがとうございました。

関連するQ&A

  • Accessのコンボボックスの使い方について

    初心者です。 コンボボックスの使い方について教えて下さい。 商品テーブルA 商品名|コードA|コードB|コードC| マスターテーブル A|B|商品名|コードA|コードB|コードC|D|E のような2つのテーブルを作成し、マスターテーブルの「商品名」に コンボボックスで商品テーブルAの商品名を表示させるとします。 そこでコンボボックスで商品名を選択すると同時に 商品テーブルAからほかの「コードA」「コードB」「コードC」の値を マスターテーブルの「コードA」「コードB」「コードC」に入れる方法は ありますでしょうか? また、他の方法はありますでしょうか? 宜しくお願い致します。

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

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

  • Accessコンボボックスについて

    Accessコンボボックスで選択した番号に連動する名前を他のフィールドへ表示する方法 Access初心者です。 どなたか方法をご存知の方がいらっしゃいましたら、お手数ですがご教授願います。 何分初心者なので、お手数ですが、噛み砕いてお教え頂けると助かります。 請求書の作成フォームを作っています。 フォーム上に[取引先名」という、コンボボックスを配置しています。 そのコンボボックス上から名前を選択できるようにしています。 作成済の請求書を名前別に検索できるようにパラメータクエリを作成して、あいまい検索?(Like検索)で 検索した名前に該当する請求書を抽出できるようにしたいと思っています。 実際にパラメータクエリを作成してみましたが検索結果0件で表示されてしまいます。 その際に作成したものは、「取引先名」フィールドの抽出条件に、Like"*"&[取引先名を入力して下さい]&"*" です。 これで駄目だったので、次に Like"*"& &"*"を削除して、[取引先名を入力して下さい」だけで作成してみましたが 取引先名で検索すると、検索結果は0件でした。 取引先IDで検索すると検索できましたが、何が駄目だったのかがさっぱり分かりませんでした。 説明下手で申し訳ありませんが、どなたかご存知の方がいらっしゃいましたら教えて下さい。

  • Accessでのクエリー作成

     テーブル 納品先コード・納品先名・商品名・数量・仕入れ先コード・仕入れ先名  となっているのを、 クエリー上で 納品先コード・納品先名・(仕入れ先別納品)数量合計・仕入れ先コード・仕入れ先名  としたいのですが、どうしたらいいでしょうか?

  • Access2007でコンボボックスで選択した条件で次のコンボボックスを開きたいのですが?

    Access2007デビューです。教えてください;; 例えば、「得意先テーブル」があって<得意先コード>でつながった「担当者テーブル」があるとします。 そして、「管理表」なるものを作ろうとしています。 1つ目のコンボボックスで [得意先会社名] を選んで、 2つ目のコンボボックスで、選ばれた会社の [担当者名] を選べるようにしたいんです! いい方法を教えてください!!

  • Accessで2つのコンボボックスをリンクさせるには

    すごく簡単なことだとは思うのですが、わかりませんので教えてください。 フォーム上に2つのコンボボックスA,Bを作成します。 テーブル「商品マスタ」にある「商品名」をA、「商品コード」をBにそれぞれ値集合ソースとしてセットします。 このとき、A、Bのどちらで選んでも、他方のコンボボックススで選ばれた値に対応した値が、セットされるようにしたいのですが、どのようにすればよろしいのでしょうか? afterupadteイベントでそれぞれに「.defaultvalue = .Listindex」でうまくいくときがあるのですが、不安定の様に思えます。 以上、よろしくお願いします。

  • Accessのコンボボックスの値が消える

    お伺いいたします Accessのフォーム(フォーム請求実績)上に置いたコンボボックスで ユーザーリスト(テーブル)から目的のデータを 選択出来るように設定していますが、 目的のデータをクリックすると、コンボボックスに一瞬、表示された後、消えて空欄になります。 目的のデータ(販売先名)で販売実績表(クエリ)の中の販売先別のデータを抽出(Filter)させていますが目的のデータの抽出はできるのですが、 コンボボックスの表示が消えるので困っています。 因みに、請求実績データ(選択クエリ)の販売店フィールドの抽出条件欄には [forms]![フォーム請求実績]![コンボボックス1]で 抽出するようにしています。 ぐだぐだと長い説明で解りにくいと思いますが要は コンボボックスのデータを選択してもコンボボックスに表示されないのです。 こんな経験された方よろしくアドバイスお願いいたします。

  • アクセスコンボボックスで教えてください。

    アクセス初心者です。 設備の修理情報を登録する、簡単なデータベースを作成しています。 修理履歴テーブル  修理ID(オートナンバー)  発生日  設備No.  実施区分ID 実施区分テーブル  実施区分ID  区分名       001     実施済    002     未実施 実施区分IDはリレーションシップを組んでいます。 その他、修理履歴テーブルを基に、修理履歴クエリを作成、 情報を登録するフォームを作成しました。 基になるクエリを修理履歴クエリにし、デザインビューで 修理履歴を閲覧することができるフォームを作成、 実施区分は、実施済・未実施とを選択できるように コンボボックスで作成、表示することができました。 しかし、完成後、あるレコードのコンボボックスで未実施を選択後フォームを閉じ、次にまたそのフォームを開くと、実施済の全レコードが未実施表示になってしまいます。 また、実施区分テーブルの区分名、実施済が未実施に変わってしまっています。 どのようにしたら、選択したレコードだけ、未実施表示にし、実施区分テーブルの区分名も変らずに済むのでしょうか? よろしくお願いします。

  • データシート形式のサブフォームでコンボボックスでの入力がうまくいかない

    サブフォームはデータシート形式です。 メインフォームは受注フォーム。サブフォームは受注明細フォームです。 サブフォームのソースは受注明細テーブルです。 サブフォームに商品コードのコンボボックスがあって選択すると 該当する商品名、販売価格を商品マスタテーブルから検索して表示 したいので以下のようにためしてみました。 Private Sub 商品コード_AfterUpdate() ' ' 商品名 = DLookup("商品名", "T_商品マスタ", "商品コード='" & 商品コード & "'") ' 販売価格 = DLookup("販売価格", "T_商品マスタ", "商品コード='" & 商品コード & "'") 商品名 = 商品コード.Column(1) 販売価格 = 商品コード.Column(2) End Sub そうすると、商品コードを選択すると商品名と販売価格が 全行同じものに変わってしまいます。 どうすればよいでしょうか? ご教示していただけませんでしょうか? よろしくお願い致します。

  • Access コンボボックスを使って抽出

    Access2000・Windows2000を使用しています。 レコードの抽出をしたいと思います。テーブルは1つ、フィールドには日付・商品名・業者名・単価・・・とあります。フォームで「商品名から抽出(コンボボックスから商品を1つ選ぶ)」または「業者名から抽出(コンボボックスから業者を1つ選ぶ)」(コンボボックスから商品を1つ選ぶ)出来るようにし、なおかつ今月のレコードのみ表示させたいのですが、まずそのテーブルを1つ作成した時点でつまづいてしまっています。 どなたかご教授お願いします。

専門家に質問してみよう