- ベストアンサー
access コンボボックスの次
顧客管理・商品管理の簡略化を目指している初心者です。商品マスター・仕入先・販売先というテーブルを作成、商品情報の入力・閲覧のためのフォームを作ろうと思っています。 1)商品マスターテーブルには、仕入先コードと販売先コードが入っています。フォーム上では仕入先名・販売先名も確認したいのですが、 「商品マスターテーブルにそれらを追加したクエリを作成 → クエリからフォームを作成」 という方法でよいでしょうか。 2)フォーム上で仕入先コードと仕入先名のコンボボックスを設置します。コードを選択すると自動的に次の欄に仕入先名が反映されるようにする方法を教えてください。 おそらく非常に初歩的な質問かと思いますが、マニュアルを見たり検索をかけたりしても要領を得ません。アドバイスをどうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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を勉強したい!」という欲があれば大いに結構。 別ですが。 販売管理、分析などというのは昔からある商習慣ですので。 他人のやり方を数百万でポンと買ってしまうのはビジネス的には ひとつの手段といえます。時間はコストですので。 そういう部分も考えてみるといいかもしれませんね。
その他の回答 (2)
- deecyan
- ベストアンサー率38% (89/233)
1)について なぜ商品マスタに 販売先コードが入っているのかがわかりません。 普通は商品があって 販売先は複数になるはずで 1商品1顧客なのでしょうか? 2)について 仕入先コードを選ばずに仕入先名を選んではだめなのでしょうか?(仕入先コードで選ぶと言われるのなら書きますが) コンボボックスを作成するときに ウイザードが出ますよね テーブルまたはクエリーの値を表示するをえらび 仕入先マスタを選び そのとき 仕入先コードと仕入先名の2つを選びます。 フォームを表示したときに 仕入先名を選んだとしても 中身は仕入先コードになっています ためしに ボタンを作って 中身を コンボ12.SetFocus MsgBox コンボ12.Value MsgBox コンボ12.Text としてください(コンボ12 は 先ほど作ったコンボ名に変更してください。
お礼
ご回答ありがとうございます。 1)ですが、ご推察どおり、1商品1仕入先1販売先になるような商品コードがもともとついています! といっても、これは指摘をいただいて、担当者に確認してはじめてわかったことではありますが。 2)よく考えると、なぜ仕入先コードも併記するのか自分でもよくわからなくなってきました。たしかに、仕入先名だけでいいのかも。。。 とにかくまずは、いただいた方法、試してみます。 ありがとうございました。
No.1です。 心温かいご返事、感謝いたします。 蛇足ながら、先の文章の補足をしておきます。 まず、説明文中で「フォームとレポート(1と4)はあとで考えます」 と書きましたが、実際には一番真っ先にイメージは作っておきます。 特に「結果」がすべてですので、OUTPUTデザインは真っ先に考えます。 Excelや何やで「こんな情報がほしいよね」という表のサンプルは 先に作っておくと、あとで項目付与漏れがなくなります。 そもそもデータベースアプリケーションはデータから帳票への流れを 下りで作成してしまう資質があります。 欲しい方は「結果は?→処理は?→データは?」と言う順で 考えますが、作る方は「データは?→処理は?→結果は?」という 順で考えるんですネ。 今回は、貴方が利用者ご本人であり結果イメージができていると 考えたことと、AccessというかDB全体感の把握に苦慮していたこと からこういう表現にさせていただきましたが。 実際は我々の業界で言う「要求定義」という作るモノの確定作業に おいては、一番先に帳票→入力画面→処理という順で考えることを 補足しておきます。 で、もうひとつはですね。 私は堅ーく体系的にお話しましたが、実際には最初からそんなに きれいにはできません。 最初は汚くても、ウィザードでも何でもいいんです。 中身ドロドロのプログラムを作ってでも全然構いません。 その「データベースをやるぞー」という心意気、体験は大事にして ほしいと思います。 私が冒頭のお話でお話させていただいたように、データベースを 欲されているお客様ご自身がデータベースを勉強されている… そのような方ほど、強力で、良質なお客様はいません。 Accessでも、FileMakerでも、ITを欲されているお客様自らが ITを触って作ったり挫折してあきらめた、苦労した経験をお持ちで いらっしゃいますと、非常に話がまとまリやすく、理路整然と スムーズに話が進みます。 また、導入しても組織として非常によく使いこなせたり、業務の 力として本当に生かせたり。 我々のコストがかかる部分もご理解いただけますし(笑) システムの成功は、業務と、システムと、人の理解。 良い結果はそこから生まれます。 ある意味我々の仕事がなくなる脅威でもありますが(笑) そのお気持は大切にされるととてもいいと思います。 頑張ってくださいね。 ありがとうございました。
お礼
ホームページや印刷物のデザインはそれなりに手がけてきたので、デザインに関しては問題ないかと思いきや、自由度が低くて逆に難しいものですね・・・。(申し訳ありませんが!)途中であきらめて専門家の方にお仕事を差し上げるようなことのないように、がんばります。 ありがとうございました。
お礼
回答ありがとうございます。 参考書首っ引きで右往左往して焦っているうちに、なにやら本筋を見失っていたような気がします。頭の中がまず・・・クリアになりました。 直接質問にお答えいただくよりも、今の自分に響く回答をいただいたような気がします。落ち着いて、再トライしてみます。ありがとうございました!