• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(アクセス)コンボボックスの選択結果をレコードに)

Accessのコンボボックスで業態を選ぶと業種が選べない問題について

このQ&Aのポイント
  • Accessのコンボボックスで業態を選ぶと業種が選べない問題が発生しています。
  • 選択肢を変えても<T企業>のコードナンバーが変わらず、手動でナンバーを変えてもA社、B社、C社のコンボボックスの内容が変化しません。
  • Access2000を使用しており、環境面からのサポートが難しい状況です。データベースを作成するために最近Accessの勉強を始めたばかりで、深く理解していません。ご教示いただけると助かります。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

途中から失礼します。 MDBの状態が質問開始時の状態だとして。 業態を選ぶコンボボックスを、コンボ1 業種を選ぶコンボボックスを、コンボ2 とした場合です。 コンボ1の 値集合ソースに、 SELECT DISTINCT 業態 FROM T業態; 値集合タイプに テーブル/クエリ 連結列は 1 コンボ2の 値集合ソースには、 SELECT [コード], 業種 FROM T業態 WHERE 業態=[コンボ1]; 値集合タイプに テーブル/クエリ 連結列は 1 次にイベントタブに移って コンボ1の 更新後処理に Private Sub コンボ1_AfterUpdate() Me!コンボ2.Requery End Sub コンボ2には Private Sub コンボ2_AfterUpdate() Me!コード = Me!コンボ2 End Sub とします。 コンボ1・2 とも入力用に非連結コントロールになりますので 全てのレコードで同一ですが、T企業のコードの値は保持されます。 要はコンボボックスは入力用と割り切るのが肝心。 企業の業態と業種もフォーム上に表示したいなら クエリを一個作成して、SQLビューでは↓ SELECT T企業.ID, T企業.社名, T企業.[コード], T業態.業態, T業態.業種 FROM T企業 INNER JOIN T業態 ON T企業.[コード] = T業態.[コード]; このクエリをフォームのレコードソースとすれば宜しいかと。

noname#255190
質問者

補足

nicotinismさん ありがとうございます。 実は回答頂いた時間前後に目的とするものが出来上がりました。^^ (表示切り替え、業種絞り込み) しかしながら、まだまだ解らないことが多々ありますので、今後もよろしくお願い致します ありがとうございした

その他の回答 (3)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

お早うございます。 リレーションシップの設定は出来ましたか T_業種の業態IDのルックアップ設定です T_業種をデザインビューで開き [業態ID]→[ルックアップ]→[コンボボックス] と進み次のように添付のようにプロパティーを変更します ・値集合ソース 右端クリックして「T_業態」選ぶ ・連結列 1…T_業態のIDが一番目のフィールド ・列数  2…「ID」と「業態名」の2つ ・列幅  0…各フィールドの表示幅(Cm)        IDは非表示、最後のフィールド幅は省略 ・リスト行数 …任意ですが参照項目数がこれを超えると        スクロールバーが表示されます 同じ要領でT_企業の業種IDにもT_業種へのルックアップ設定します >>コンボボックスで選んだコードが<T企業>に反映されません。 もうお分かりですね ご質問の「T企業」の中に「業種ID」または「業種名」を追加する意味 以上設定するとテーブルを開くと「業種ID」は数値形式なのに 社名で検索、表示できます。

noname#255190
質問者

補足

お答えいただきありがとうございます。 ご説明頂いた通りにやってみましたが上手くいきません・・。 下記の事でつまづいています。 1)リレーションのT業種が1対多になりません。 ”主テーブルで参照されているフィールド用の固有インデックスがみつかりません”と出てきます。 2)T業態のルックアップ設定ができません。T業種のIDはルックアップ設定のみできました。 3)とりあえず、フォームに二つのコンボボックスを作りリスト表示できることは確認出来ましたが、会社名のレコード移動をしてもコンボボックスの中身が変わりません。 なにか見落としているのでしょうか? それから、この方法についてもう1点伺いたいのですが、 質問前に作成していたT業種はグループ化して業態名の中から業種名を絞りこめれるようになっているのですが、今回ご説明頂いたテーブルの作成方法で、同じように絞り込むことが可能でしょうか? よろしくお願いいたします

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

accessはリレーショナルデーターベースの一つです この特徴を利用します。 T業種をT_業種とT_業態とに分解しT_業種にT_業態に リレーションシップを設定するためT_業態の主キーに 対応するフィールドを追加します。 結果次の3つのテーブル設計になります。 T_業態 ・ID オートナンバー 主キー ・業態名 T_業種 ・ID オートナンバー 主キー ・業種名 ・業態ID 数値 長整数型 T_企業 ・ID オートナンバー 主キー ・社名 ・コード A社 B社が同値ですがよいのですか ・業種ID 数値 長整数型 このテーブルに添付のようなリレーションシップを定義することで 企業には業種IDを登録すると業態はついてきます コンボボックスですがテーブル設計でルックアップ設定します ルックアップ設定の説明は1日程度時間下さい

  • jacob-wk9
  • ベストアンサー率36% (85/231)
回答No.1

<T企業>のコンボボックスのリスティング内容が変われば良いだけであれば <T企業>の値集合ソースに「SQL文」を入れます。 SELECT 社名,コード FROM T企業 WHERE コード=[T業種] のような感じで。

関連するQ&A