プロが教える店舗&オフィスのセキュリティ対策術

はじめまして、宜しくお願いします。

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メソッドを行っているのですがうまくいかないようです。)

もしもなにかお気づきの方が居られましたら、ご教授ください。
宜しくお願いいたします。

A 回答 (4件)

>一応、コンボ2の.Refreshメソッドを行っているのですがうまくいかないようです。


コンボ2ではなくADOデータコントロール2をRefreshしてみてください。

Private Sub DataCombo1_Change()
Adodc2.RecordSource = "SELECT * FROM 行事履歴 WHERE 年度 = '" & DataCombo1.Text & "'"
Adodc2.Refresh
End Sub

これでだめなようなら、補足してください。
    • good
    • 1
この回答へのお礼

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

本当にありがとうございました。

お礼日時:2002/11/06 09:55

takatooさん、こんにちわ。


VBとかSQLじゃなくちゃ駄目ですか?
先月私は同じような内容(たぶん…)で、ここで質問をしました。
私はずぶの素人なので、いただいた回答について理解が出来ず、結局は全く違う方法でこれを解決しました。
以下、参考になるかどうか分かりませんが…

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

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q-371961
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/06 09:58

これだと、最終的にADOデータコントロール2のRecordSourceは


「SELECT * FROM 行事履歴 WHERE 年度 = '2001'」
というSQL文になりますが
「行事履歴」テーブルの「年度」フィールドは文字型になってますか?
    • good
    • 0
この回答へのお礼

早速のレスありがとうございます。

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

お礼日時:2002/11/06 10:00

SELECT * ←全てを指定している



SELECT 行事 ←表示項目を指定する

だめ?
    • good
    • 0
この回答へのお礼

早速のレスありがとうございます。

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

しかし早々の回答ありがとうございました。

お礼日時:2002/11/06 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!