• ベストアンサー

データコンボボックスを連動させたい。

はじめまして、宜しくお願いします。 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メソッドを行っているのですがうまくいかないようです。) もしもなにかお気づきの方が居られましたら、ご教授ください。 宜しくお願いいたします。

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

  • ベストアンサー
回答No.4

>一応、コンボ2の.Refreshメソッドを行っているのですがうまくいかないようです。 コンボ2ではなくADOデータコントロール2をRefreshしてみてください。 Private Sub DataCombo1_Change() Adodc2.RecordSource = "SELECT * FROM 行事履歴 WHERE 年度 = '" & DataCombo1.Text & "'" Adodc2.Refresh End Sub これでだめなようなら、補足してください。

takatoo
質問者

お礼

早速のレスありがとうございます。 taisuke555さんの言うとおりデータコントロールの方を Refreshしたら、うまく動きました。 コンボをRefreshをしても動かなかったので、 Refreshは意味がないと決め付けていました。反省です。 本当にありがとうございました。

その他の回答 (3)

  • kikumaro
  • ベストアンサー率48% (127/261)
回答No.3

takatooさん、こんにちわ。 VBとかSQLじゃなくちゃ駄目ですか? 先月私は同じような内容(たぶん…)で、ここで質問をしました。 私はずぶの素人なので、いただいた回答について理解が出来ず、結局は全く違う方法でこれを解決しました。 以下、参考になるかどうか分かりませんが… 『行事履歴』テーブルのほかに、『年度』テーブルも作っておきます。 文字通り、『年度』のデータしかないテーブルです。 コンボ1はこの『年度』テーブルから選択するようにします。 次に『行事履歴』テーブルの選択クエリを作成し、『年度』フィールドの表示チェックをはずします。 抽出条件は『コンボ1の内容』という数式を入れます。 続いてマクロを作成します。 1行目には『再クエリ』、使う場所(コントロール)はコンボ2の『行事』を表示するところ、2行目には『閉じる』とし、オブジェクトは作成したクエリになります。 あとはコンボ2の値集合ソースに作成したクエリを入れ、フォーカス取得時にマクロを入れれば…これで出来るはずです。 VBとかSQLとかは全く分からないので、参考にはならないとは思いますけど… ちなみに下記のURLには私が質問したときの回答内容を入れておきます。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q-371961
takatoo
質問者

お礼

早速のレスありがとうございます。 現在のDB構造を変えたくないというのが、ありまして。。。 しかし、ご丁寧な説明ありがとうございます。

回答No.2

これだと、最終的にADOデータコントロール2のRecordSourceは 「SELECT * FROM 行事履歴 WHERE 年度 = '2001'」 というSQL文になりますが 「行事履歴」テーブルの「年度」フィールドは文字型になってますか?

takatoo
質問者

お礼

早速のレスありがとうございます。 「年度」フィールドは文字型になっています。 原因はtaisuke555さんの指摘された、ADODCのRefreshでした。 しかし、早々の回答ありがとうございました。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

SELECT * ←全てを指定している SELECT 行事 ←表示項目を指定する だめ?

takatoo
質問者

お礼

早速のレスありがとうございます。 「select *」として、全て選択していますが、 コンボ側のFildListプロパティで表示するフィールドを選択できるようなので 問題ないようです。 原因はADODCのRefreshをしていないことでした。 しかし早々の回答ありがとうございました。

関連するQ&A