- ベストアンサー
アクセスのコンボボックス重複解消方法
- アクセスのコンボボックスの値集合タイプが「テーブル/クエリ」の場合、重複なしで値を表示する方法について教えてください。
- 現在作成しているコンボボックスが6個あり、2個目以降からどのようにするかわかりません。コンボ1の値をコンボ2で反映し、さらにコンボ2の値の重複をなくし、コンボ3で反映させる方法を教えてください。
- 参考にしたサイト(http://www.accessclub.jp/beginer/cd/part_07.htm)の方法ではコンボボックスが2個までしかなかったため、現在作っている6個以上のコンボボックスでの重複解消方法についてご教授ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
言葉で説明するのは大変なんですけど、やってみますね。 参考にされているURLの中ほど、「コンボ2」のクエリビルダの画像に注目して下さい。 「コンボ2」でリストに表示したいのは<タイトル名>であり、その抽出条件は“アーティスト名が「コンボ1」の値と一致している”ということですよね。 コンボボックスを更に増やしたい場合は、増えたコンボボックスの値集合ソースの“抽出条件の種類”がどんどん増えていくと言うことです。具体的にはクエリビルダの表の部分の列が横にどんどん追加されていく感じになります。 例を挙げてみましょう。 住所と個人名が登録されたデータテーブルから、特定の個人を選び出すとして、 [都道府県][市区町村][町名][番地][ビル名][部屋番号][個人名] というフィールドがあるテーブルで、 「コンボ1」のリストはテーブルから[都道府県]を抽出しました。 ここで“東京都”と選択します。 「コンボ2」のリストはテーブルから[市区町村]を抽出します。 ただし、都道府県は“東京都”であることが条件です。 ここで“新宿区”と選択します。 「コンボ3」のリストはテーブルから[町名]を抽出します。 ただし、都道府県は“東京都”であり、市区町村は“新宿区”であることが条件です。 ここで“新宿1丁目”と選択します。 「コンボ4」のリストはテーブルから[番地]を抽出します。 ただし、都道府県は“東京都”であり、市区町村は“新宿区”、町名は“新宿1丁目”であることが条件です。 ここで“2番地”と選択します。 ・・・・このような調子でどんどん抽出条件が追加されていきます。「コンボ6」まで選ぶと[個人名]が導き出される理屈は分かって貰えますよね。 これを各コンボボックスの値集合ソースとして、クエリビルダで設定するようにしてみて下さい。 その後の処理のポイントは、 「コンボ1」が選択された直後に「コンボ2」を再クエリーする、 「コンボ2」が選択された直後に「コンボ3」を再クエリーする…… というように、順ぐりに再クエリーを行わなければいけません。 (抽出条件が選択の都度変動しているわけですから、変動後にクエリーを再度実行しないといけないわけです) 処理のポイントその2は、例えば 「コンボ1」が“東京都”で、 「コンボ2」が“新宿区”と入力した後に、 「コンボ1」の値を“大阪府”に変更したらどうなるでしょう? “大阪府新宿区”というのは存在しませんよね? こういう抽出条件では「コンボ3」にリストは出てきませんよね。 ですので、本来は「コンボ2」を選択した直後に「コンボ1」は変更できないように編集ロックをかける必要があります。(これも順繰りに行います) しかし、これはURLの例のようなマクロだけのやり方では実現出来ません。どうしてもVBAを使用する必要があります。 プログラムの運用では、使う人に『そういう変更はしないでね!』と教えるのが簡単ですが、本来はきちんと入力操作をプログラム制御した方がよいですね。 というわけで、長々と概念だけを説明しましたが、 こういった文字だけのやり取りでは具体的な方法についてお伝えするのには限界があります。 ぜひ参考書などで詳細な設定方法などを、引き続き勉強するようにして下さい。 こういった“やりたい処理は具体的にはっきりしているのに、その設定の方法が分からない”という方には「逆引き事典」のような書籍をお薦めします。 http://www.amazon.co.jp/exec/obidos/ASIN/4798003786/qid=1059054138/sr=1-1/ref=sr_1_2_1/249-8740779-5804304 では、頑張って下さい。
お礼
ありがとうございました。 逆引き辞典ですかーー!! 参考になりそうです!!