アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームのコンボボックスに表示させたい値を
値集合ソースにてSQLを直接書いています。

例を挙げますと、
テーブル:CstmTBL
項目:Cstm_ID,Cstm_Name,FLG
値集合ソース:SELECT Cstm_ID FROM CstmTBL Where FLG = '1'

ここまでであればうまくいきます。

私がやりたいのは、
このFROM句のテーブルを上位(例えば上位のコンボボックスで指定したテーブル名)で設定し、
そこで設定されたテーブルを毎回そのSQLに埋め込んで抽出されるようにしたいのですが、うまくいきません。VBAを書かないとだめでしょうか?
書くとすれば、書き方も教えていただけますか?

よろしくお願いいたします。

A 回答 (4件)

このへんのサポートは参考になりませんか?



コンボ ボックスの内容を制限する方法
http://support.microsoft.com/default.aspx?scid=k …

コンボボックスに表示される値集合ソースを変更する方法
http://support.microsoft.com/default.aspx?scid=k …
    • good
    • 0

テーブルを指定するコンボボックスの更新後処理イベントで、Cstm_IDを表示させるコンボボックスの値集合ソースを代入する形がよいかと思います。



VBAでやるのでしたら、プロパティシートの「イベント」タブの「更新後処理」イベントにカーソルをおき、ビルダをクリックして「イベントプロシージャ」をクリックしたら、以下の文を貼り付けて下さい:

Private Sub 指定テーブル_AfterUpdate()
表示コンボ.RowSource = "SELECT Cstm_ID FROM " & 指定テーブル & " Where FLG = 1"
End Sub

これでいけると思います。
(Cstm_IDを表示するコンボボックスの名前を「表示コンボ」と、テーブルを指定するコンボボックスの名前を「指定テーブル」としています)

この回答への補足

ご親切にありがとうございます。

VBAの部分はわかったのですが、
「テーブルを指定するコンボボックスの更新後処理イベントで、Cstm_IDを表示させるコンボボックスの値集合ソースを代入する形がよいかと思います。」
の部分がよくわかりません、具体的に教えていただけますか?

補足日時:2005/08/31 19:27
    • good
    • 0

要は”指定テーブル”というコントロールがあってその子のトロールの更新後処理にイベントを書けってことだと思いますよ。



別にこれはテキストボックスでもかまいませんが、それよりもコンボボックスやリストボックスであった方が操作性はあがります。

コンボボックスやリストボックスだとあらかじめ値を登録(値集合ソース)しておく必要がありますね。

この回答への補足

ありがとうございます。

更新後にイベントを書くのはわかるのですが、
「そのコンボボックスで指定した値」をどう書いていいのかわからないのと、その抽出結果をどう次の
コンボボックスに引き渡すのでしょうか?

補足日時:2005/09/01 15:30
    • good
    • 0

No.2です。



前回のVBAをより明示的(?)にしてみます:

Private Sub 指定テーブル_AfterUpdate()
[表示コンボ].RowSource = "SELECT Cstm_ID FROM " & [指定テーブル] & " Where FLG = 1"
End Sub

つまり、「[指定テーブル]」は「指定テーブル」というテキストではなく、「指定テーブル」コンボボックスに入力した値を参照することを意味しています。

> その抽出結果をどう次のコンボボックスに引き渡すのでしょうか?

「次のコンボボックス」の名前が、上の例では「表示コンボ」となっています。
つまり「表示コンボ」コンボボックスの「.RowSource」(=値集合ソース)に、上記演算結果を代入することを意味しています。

例えば、「指定テーブル」コンボボックスに「CstmTBL」を入力すると、「表示コンボ」コンボボックスの値集合ソースには、
  "SELECT Cstm_ID FROM " & [指定テーブル] & " Where FLG = 1"
の演算結果である
  SELECT Cstm_ID FROM CstmTBL Where FLG = 1
が入力されることになります。
「指定テーブル」に「AnotherTBL」を入力した場合は、同様に
  SELECT Cstm_ID FROM AnotherTBL Where FLG = 1
が入力されます。


「AfterUpdate」(=更新後処理)というのは、「そのコントロールの更新後に実行される処理」なので、上記VBAを記述しておけば、「指定テーブル」コンボボックスを更新により、自動的に「表示コンボ」コンボボックスの値集合ソースが切り替えられることになります。

もし疑問点がありましたら、遠慮なくご質問下さい。

この回答への補足

ありがとうございます。出張にいっており返事がなかなかできずすみません。。水曜日には帰社するので試してみます。

補足日時:2005/09/11 17:27
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。本当にご丁寧に教えてくださりありがとうございます。お陰で、すっきり理解することができて、うまくいきました。また、機会がありましたらお願いいたします。

お礼日時:2005/09/26 17:08

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