- ベストアンサー
データコンボボックスを連動させたい。
はじめまして、宜しくお願いします。 VB6、SQLサーバーでタイトルのようなことを実現したいと思っています。 データベース(テーブル名:行事履歴)の内容は 年度 行事 ---------------------- 2001 夏期キャンプ 2001 修学旅行 2002 社会見学 となっており、 コンボ1で年度を選択して、選択した年度の行事を コンボ2にリストとして表示したいと思っています。 (例えば、コンボ1で"2001"を選ぶとコンボ2には"夏期キャンプ"、"修学旅行" のみが表示される) 現在やっているのは コンボ1とそれに連結しているADOデータコントロール1、 コンボ2とそれに連結しているADOデータコントロール2を用意して ADOデータコントロール1のRecordSourceには "SELECT DISTINCT 年度 FROM 行事履歴" ADOデータコントロール2のRecordSourceには "SELECT * FROM 行事履歴" としておき、 ADOデータコントロール1のCHANGEイベントで ADOデータコントロール2のRecordSourceを "SELECT * FROM 行事履歴 WHERE 年度 = '" & ADOデータコントロール1.TEXT & "'" としているのですがコンボ2のリストに "夏期キャンプ"、"修学旅行"、"社会見学"が3つとも表示されてしまい、 うまく連動してくれず行き詰っています。 (一応、コンボ2の.Refreshメソッドを行っているのですがうまくいかないようです。) もしもなにかお気づきの方が居られましたら、ご教授ください。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>一応、コンボ2の.Refreshメソッドを行っているのですがうまくいかないようです。 コンボ2ではなくADOデータコントロール2をRefreshしてみてください。 Private Sub DataCombo1_Change() Adodc2.RecordSource = "SELECT * FROM 行事履歴 WHERE 年度 = '" & DataCombo1.Text & "'" Adodc2.Refresh End Sub これでだめなようなら、補足してください。
その他の回答 (3)
- kikumaro
- ベストアンサー率48% (127/261)
takatooさん、こんにちわ。 VBとかSQLじゃなくちゃ駄目ですか? 先月私は同じような内容(たぶん…)で、ここで質問をしました。 私はずぶの素人なので、いただいた回答について理解が出来ず、結局は全く違う方法でこれを解決しました。 以下、参考になるかどうか分かりませんが… 『行事履歴』テーブルのほかに、『年度』テーブルも作っておきます。 文字通り、『年度』のデータしかないテーブルです。 コンボ1はこの『年度』テーブルから選択するようにします。 次に『行事履歴』テーブルの選択クエリを作成し、『年度』フィールドの表示チェックをはずします。 抽出条件は『コンボ1の内容』という数式を入れます。 続いてマクロを作成します。 1行目には『再クエリ』、使う場所(コントロール)はコンボ2の『行事』を表示するところ、2行目には『閉じる』とし、オブジェクトは作成したクエリになります。 あとはコンボ2の値集合ソースに作成したクエリを入れ、フォーカス取得時にマクロを入れれば…これで出来るはずです。 VBとかSQLとかは全く分からないので、参考にはならないとは思いますけど… ちなみに下記のURLには私が質問したときの回答内容を入れておきます。
お礼
早速のレスありがとうございます。 現在のDB構造を変えたくないというのが、ありまして。。。 しかし、ご丁寧な説明ありがとうございます。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
これだと、最終的にADOデータコントロール2のRecordSourceは 「SELECT * FROM 行事履歴 WHERE 年度 = '2001'」 というSQL文になりますが 「行事履歴」テーブルの「年度」フィールドは文字型になってますか?
お礼
早速のレスありがとうございます。 「年度」フィールドは文字型になっています。 原因はtaisuke555さんの指摘された、ADODCのRefreshでした。 しかし、早々の回答ありがとうございました。
- 2ch
- ベストアンサー率51% (64/125)
SELECT * ←全てを指定している SELECT 行事 ←表示項目を指定する だめ?
お礼
早速のレスありがとうございます。 「select *」として、全て選択していますが、 コンボ側のFildListプロパティで表示するフィールドを選択できるようなので 問題ないようです。 原因はADODCのRefreshをしていないことでした。 しかし早々の回答ありがとうございました。
お礼
早速のレスありがとうございます。 taisuke555さんの言うとおりデータコントロールの方を Refreshしたら、うまく動きました。 コンボをRefreshをしても動かなかったので、 Refreshは意味がないと決め付けていました。反省です。 本当にありがとうございました。