Accessにおけるフォームの項目に関する問題

このQ&Aのポイント
  • Accessのフォーム上の項目において、顧客名と紹介者の関連性について疑問があります。
  • 顧客名を入力すると自動的に関連する紹介者が表示される仕組みを作りたいです。
  • VBAに詳しくないので、アドバイスを求めています。
回答を見る
  • ベストアンサー

Accessについて

フォーム上の項目として (1)顧客名(2)紹介者1(3)紹介者2 とあります。 例としてレコードを表しますと レコード1 (1)大橋 (2)新井 (3)森田 レコード2 (1)三上 (2)大橋 (3)新井 レコード3 (1)佐藤 (2)三上 (3)大橋 レコード4 (1)高橋 (2)三上 (3)大橋 というように(1)顧客名は手打で(2)の紹介者1を 入力すると、自動的に(2)に続く(3)紹介者2が出るようにすることは出来ないでしょうか? ただ、(2)紹介者1に続く(3)紹介者2は同じ人とは限りませんので、(2)紹介者を入力すると関連する(3)紹介者2が まとめて抽出してクリックすると入力される! そんな所まで出来たら、最高です。 VBAもはじめてばかりでこんなに難しい課題を 挙げられ、大変困っています(-"-;) どなたかアドバイスお願いいたしますm(_ _)m

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

同姓同名の人も、個人が別なら別のIDを振るんよね? そういう前提で話をすると 補足説明から大体は分かったのだが、君の説明をまとめた上でその裏仕様を考えると、 ・ある顧客は複数の紹介者から2度以上紹介を受ける事がある(1人の紹介者からは1回の紹介) -(a) 可能性がある。でないと紹介者2をコンボボックスにする必要はない。ただ、それだと#1さんへの補足説明と話が若干食い違う。 ・(1)新井(2)森田(3)Aさん この時点で(1)=(2)が出来上がり云々 -(b) これはどちらが良いのかな?  ところで、データベースのテーブル構造はもう決定しているのだろうか? もしこれのテーブルが顧客、紹介者1、紹介者2になっていたらちょっと悲しい。テーブルがこうだと、やはり(a)が正しい事になるが・・・・。  今回の案件のように、同格のレコードがツリー状のデータになる場合、つまり(b)の場合、一般的には、顧客、紹介者という2つのフィールドを使う。もう少し詳しくテーブル設計をすると、 (b)の場合、「顧客マスタ」は 顧客ID、顧客名、(住所など)、紹介者顧客ID[外部キー→顧客マスタ.顧客ID] というテーブル構造になる。1顧客が1紹介者を指すのだね。 E-Rダイアグラムで書くと [紹介者(顧客)]1-n[顧客] となる。 (a)の場合は 顧客ID、顧客名、(住所など) という「顧客マスタ」と 顧客ID[外部キー→顧客マスタ.顧客ID]、紹介者顧客ID[外部キー→顧客マスタ.顧客ID] という「顧客・紹介者連結テーブル」が存在する事になる。 E-Rダイアグラムは [紹介者(顧客)]n-m[顧客] だ。  ここで、紹介者2はどこに行ったのかという話になるならもう少しデータベース設計を検討した方が良いと思う。ある要求(システムターゲット)があり、それに対して厳密に設計された良質のデータベースがあれば、プログラムってあれこれ考える必要は無いんよね。逆に言えばプログラムが苦労するのはデータベースがまずいからだ。  具体的な話は君のシステムでどういうテーブルを使っているのかが分からないのでなんとも言えないな。教えてもらえるのなら何か言えそうだけど・・・・。

sayu_pon
質問者

お礼

anmochiさん度々のご解答ありがとうございます。 こちらの質問につきまして、本日内容変更(質問に出した内容と違う方向での依頼)という話に なりました(*_*) せっかくご丁寧にお答えいただいたのに、 大変に大変に申し訳ございません。 これからも頑張ってAccess勉強していきますので、 またお世話になるかもしれません。その際は よろしくお願いいたします。 anmochiさんのご好意に感謝致しております。

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 ふむぅ。これはある顧客が紹介者になると、その時の紹介者1が紹介者2にシフトされると仮定して良いのかな?  できれば例じゃなくて、仕様そのものをぶつけて欲しいのだが・・・・。

sayu_pon
質問者

補足

説明不足で申し訳ありません。。。 anmochi様のご理解通りです。 もう一度、説明補足をNo1の所に載せましたので、 ご査収いただけたら幸いです。 よろしくお願いします

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>VBAもはじめてばかりでこんなに VBAの問題ですか >フィールド1の大橋(顧客)が、紹介者としてフィールド2にも3にも出てきているということは、顧客が紹介者にもなるということですか。 大橋が入力されると、紹介者1、紹介者2の候補は全顧客からどのようにして、数を絞れるのですか。絞れないなら、全顧客をコンボボックスに表示せざるを得ないのではないですか。 すると顧客は何人いるのですか。何百もコンボに出すのは使えない。 なにか実際の会社の問題(二ーズ)を隠すために、変な例にして、質問に挙げてませんか。

sayu_pon
質問者

補足

説明不足で申し訳ないです。 ニーズの件で変な例を挙げたつもりはなかったのですが・・・わかりずらかったですよね、すみません。 まず、顧客は随時増えます。顧客は紹介じゃないと弊社は顧客登録できない為、新規登録する時には必ず紹介者1がつきます。その時点での紹介者1の方も 最初新規登録の時には紹介の方が必ずいます。 その紹介の方がこの例で言う紹介者2となるわけです。 理想の抽出方法は レコード1の例からですと 紹介者1の新井さんが大橋さんを紹介する前は (1)新井(2)森田(3)Aさん この時点で(1)=(2)が出来上がり、 (1)顧客として大橋さんを紹介して(2)新井と 入力すると自動的に(3)森田が入る!という所です。 本当に説明が下手でごめんなさい・・・。 よろしくお願いいたします。

関連するQ&A

  • Accessレポートの質問です。

    Access2010のレポートで複数レコードのデータを1行に出力しようとしています。 具体的には各レコードに顧客名と金額がはいっており、 それを以下のように印刷したいと考えてます。   顧客1 10,000   顧客2 20,000 顧客3 30,000 顧客4 40,000  顧客5 50,000 合計 5件 150,000 VBAを使って処理すれば、できるのかもしれませんが、VBAでレポートを作成した ことがないので止まっています。(フォーム内でのデータ処理でVBAを使ったこと はありますが) どなたか知恵をお貸しいただければ幸いです。 宜しくお願いいます。

  • アクセスである文字を含む検索

    ACCESS2000を使っています。 あるデータテーブル「発注書テーブル」があって、ここでは「(1)ID」「(2)顧客名(法人)」「(3)発注商品」「(4)納品済チェック」の4つフィールドがあるとします。 作業はフォームで行います。フォーム名は「発注書フォーム」。 「(2)顧客名」から検索をかけたくて、検索コマンドボタンをつくり、「検索フォーム」を発注書フォームとまったく同じ形態でつくり、そこにとべるようにしました。 「検索フォーム」には「検索」というテキストボックスを作ります。 「検索クエリ」というクエリを作り、発注書テーブルを素とし、すべてをデザインビューで表示するようにしました。 そして、「(2)顧客名」の抽出条件に[Forms]![検索フォーム]![検索]を入力します。 すると、「検索フォーム」の「検索」をコンボボックスにして、顧客名をすべて表示させ選択した場合は、「検索フォーム」では、選択した顧客の情報が表示されるようになりました。 が、しかし、「検索」をコンボボックスではなく、テキストボックスで、しかも顧客名の一部だけを入力したら、その文字を含むすべてのレコードを表示してほしいのです。 そこで、「検索クエリ」の「(2)顧客名」抽出条件にlike"*[Forms]![検索フォーム]![検索]*"と入力してみました。 そして「検索フォーム」の「検索」テキストボックス(非連結)に顧客名の一部を入力したところ、ぜんぜん絞りこみ抽出してくれません。 もちろん、クエリ上でも絞り込んでいない模様です。 どうしたら文字の一部からその文字を含む顧客名のレコードを全て抽出し、表示させることができるでしょうか? 細かくてすみませんが、かなり困ってます。 どうかわかる方、教えてください。 まったくちがう方法(別の手法)でもかまいません。 この説明でわからない部分がありましたら補足しますのできいてください。 よろしくお願いします。

  • エクセルの46000件のデータ名寄せで困ってます

    こんばんは遅い時間にすいません。 46000件のエクセルデータ名寄せを明日の午前9時までに 完了しなければなりません、、、こちらの勝手な都合ですみませんが どうかお教えください。 異なるブックにあるデータで顧客名だけが同一となっています。 同一の顧客名のあとに異なるデータをそれぞれの行の⇒に くっつけたいです。 ただし顧客名は ブック1にはあるけれど ブック2にはないということもありますので そのときは行の横にはつけないという形をとります。 ブック1が元となるデータになります。 ブック1には A列    B列     C列  三上  111111  Aランク 佐藤  111112  Bランク 菊池  111113  Cランク ブック2には A列    B列    C列          三上  800000円  7月29日 佐藤  7000円    7月3日   高橋  50000円   7月7日 作りたい最終データ下記のような形となります。 A列    B列      C列    D列    E列      三上  111111  Aランク  80000円  7月29日 佐藤  111112  Bランク  7000円    7月3日 菊池  111113  Cランク ブック2の高橋さんは後ろ付ける人がいないのでつけません 以上お手数をおかけしますがご回答をお待ちしております。

  • アクセスでの考え方

    アクセスで販売管理のようなシステムをつくっています。 見出部と明細部があるようなフォームを作成していますが、以下のような動作をさせたいときには クエリ、VBAなどなどなにをもってその動作を実現するかを教えてほしいです。 1.見出部顧客名と顧客住所を入力するようにしているのですが、顧客テーブルに顧客名と顧客情報のフィールドがあり、顧客名を選べば顧客住所が入るようにしたい。 2.明細部に販売商品を入力できるようになっていますが、見出し部に販売ID(オートナンバー型)を キーにしているのですが一度入力した販売IDがきまれば見出し部の顧客名などを変更できないようにしたい。 3.みなさんはアクセスでシステムを作るときこのような動作や制御をしたいときどのように実現するような考え方を持っていますか?、可能な限りクエリで実現できるように考えてVBAは極力組まないようにしている、あるいは逆に可能な限りVBAで組むようにしてクエリではしないようにしているなど、効率的なアクセスでの動作の考え方のヒントになるような考え方を教えてください。 以上3点です、よろしくお願いします。

  • Accessの選択クエリの抽出条件について

    いちもお世話になります。Access2002を勉強中の初心者です。 顧客テーブルから選択クエリを作っています。クエリのフィールドには「都道府県」(東京、埼玉、千葉...)と「顧客名」(山田、佐藤、田中...)があります。 「顧客名」の山田以外を抽出したいのですが、但し「都道府県」が東京の場合は山田以外の条件を外したいのです。つまり、埼玉、千葉の山田は抽出しませんが東京の山田は抽出したいのです。 このような抽出条件の設定ができますか? アドバイス、よろしくお願いします。

  • ACCESSのモジュールで

    おはようございます。 Access97で受注管理データベースを作成しています。 新規顧客コード作成の際、いくつかの条件でコードを分けています。 そのためSQLで抽出し、それに1を足して新規コードとしています。 たとえば下記のSQL文を書き、 mySQL="SELECT Max(顧客コード) AS 顧客コードの最大 FROM 顧客マスタ GROUP BY グループ HAVING (グループ='CB');" その抽出結果を取得したいのですが、そのためにはレコードセットとみなさせるのかと思い、いろいろやってみたのですが、結局出来ません。(それからして怪しい) VBAお勉強中で根本的に仕組みを理解できていないせいだと思うんですが、 数冊参考書を見ても分かりませんでした。 分かりにくい質問文ですみません。どなたか助けてください。よろしくお願いします。

  • ACCESSで検索画面を作りたいのですが

    ACCESSで顧客管理のデータベース(フィールドは10くらい)があるのすが、顧客名の一部を入力するとそのレコードが表示される、それと担当者名の一部を入力すると、該当する顧客名が表示されるというような検索メニュー?(フォームかな)を作りたいのですが、何冊か本を見てみたのですが、どこをみてよいやらわかりません。パラメータクエリーかなと思うのですが、ほとんど初心者ですがよろしくお願いします。

  • エクセルVBAで指定先のセルの値でデータ抽出

    エクセルVBAで作った売上帳シートのF2セルに顧客名を入力するようにしています。 その入力した顧客名のみの内容をオートフィルで抽出させるようにしたいのですが、うまくいきません。 Sub 顧客抽出() Range("B4").AutoFilter Field:=2, Criteria1:="山田太郎" End Sub でマクロを実行させるとできるのですが、『山田太郎』の部分は、F2セルに入力した顧客名で実行させたいのです。 どのようにすればできるのでしょうか?

  • Accessの使い方についてご質問。

    Windows7、Access2010を使って、データベースの作成をしています。 レポートから、別のレポートへ行く方法について質問です。VBAを使わず、Accessの機能ですませたいです。 テーブルから、パラメーターを使って特定のデータを抽出する、クエリを作成・レポートにしました。 現状は、あるレポートに設置したボタンをクリックすると、前記したパラメータ―クエリが発動、ユーザーに条件を入力させます。入力・OKボタンを押すと、レコードを抽出、条件に合ったデータのみが表示されたレポートへ行く仕組みです。 使う相手に入力させる手間をかけさせず、レポートからレポートへ行く方法を探しています。行く先のレポートは、条件分岐や抽出によって、特定のレコードのみ表示させたいのですが、今のところ、パラメータークエリをレポート化、ボタンにそのクエリを埋め込んで、クリックするとそのクエリが発動して、条件をユーザーに入力させ、一致したレコードのみが表示されたレポートに行く仕組みしか方法が分かりません。パラメーターにわざわざ入力させずにすむ、良い方法がありましたら、ご教授をお願いします。 理想としては、ボタンを設置してあるレポートに、抽出対象となるレコードが一覧で並んでいますので、それをクリックしてジャンプできるか、それらのレコード横にボタンを用意して、そのボタンを押すことで、レポートに行くことができればいいのですが。 宜しくお願い致します。

  • AccessでBetween条件を含むクエリーで、Between条件を

    AccessでBetween条件を含むクエリーで、Between条件を入力しなくてもデータを抽出するには? Access97でデータの抽出を行いたいと思います。 「顧客名」「商品名」「出荷日」という項目を含むクエリーから、希望のデータを抽出するフォーム(名:検索フォーム)を作成しています。 検索フォームにそれぞれ「顧客名」「商品名」「出荷開始」「出荷終了」という名前の非連結のテキストボックスを作り(規定値を"*"にしています)、それに値を入力すると、これらのテキストボックスの下に配置したサブフォームに抽出されたデータが抽出される様にしたいのです。 現在、クエリーの「顧客名」項目の抽出条件に「[forms]![検索フォーム]![顧客名]」という様に入力し、同じ様な記述を「商品名」項目にも行い(条件は[商品名]としています)、出荷日に「Between[forms]![検索フォーム]![出荷開始]And[forms]![検索フォーム]![出荷終了]」と記述しています。(これらは全てAnd条件にしています) さて、この検索フォームの値入力項目で、全てのテキストボックスに入力しなくても(1つ以上値が入力されていれば)データをサブフォームに抽出できるようにしたいのです。 現在、「出荷開始」&「出荷終了」に値を入力すれば、その他の値(「顧客名」と「商品名」)を入力してもしなくてもデータが抽出できますが、「出荷開始」&「出荷終了」を入力しない限りデータが抽出されません。 この「出荷開始」&「出荷終了」を入力しないケースでもデータが抽出できる様なフォームを作成したいのですが、 どの様に記述を変えたらよいでしょうか?