• ベストアンサー

サブフォームの行ごとにコンボボックスの表示項目を変更する方法が知りたいです

現在Access VBAでサブフォームの中にあるコンボボックスの一覧を、サブフォームの表示項目を行ごとに変更する処理を探しています。 まず、下の画像をご覧下さい。 http://www.accessclub.jp/bbs4/img/3949.jpg 下の画像の場合、「地区」列の項目が「中部地方」か「近畿地方」かによって、「都道府県」コンボボックスの一覧を変更させたいのです。 例えば、「地区」列の項目が「中部地方」になっている行は、「都道府県」の項目には中部地方の県名がコンボボックスの一覧に表示され、「近畿地方」になっている行は、近畿地方の2府4件がコンボボックスの一覧に表示されるような処理を作成したいのです。 下は各テーブルの情報を表示させた画像です。 http://www8.uploader.jp/user/minori/images/minori_uljp03073.jpg そのようなプログラムを作ろうと、下のようなプログラムを作成しました。 Private Sub Form_Load() 'AreaID  :「地区」コンボボックス 'AreaSubID:「都道府県」コンボボックス strSQL = "SELECT " strSQL = strSQL & "AreaSubID,PrefectureName " strSQL = strSQL & "FROM " strSQL = strSQL & "M_AREA_SUB " strSQL = strSQL & "WHERE AreaID = " & Me.AreaID.Column(0) & " " strSQL = strSQL & "ORDER BY AreaSubID " Me.AreaSubID.RowSource = strSQL End Sub しかし、上のプログラムでは全ての、「都道府県」列に処理が行われるため、一覧を変更させたくない行まで変更がかかってしまいます。 サブフォームの中にあるコンボボックスの更新処理で、指定の行だけを変更させるということは可能なのでしょうか? そして可能であればその方法を教えていただけませんでしょうか? よろしくお願いします。 なお、OSとAccessのバージョンは以下の通りです。 OS:Windows XP SP2 Accessのバージョン:2003

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3
nqg12333
質問者

お礼

おお! こんなものがあるとは知りませんでした!! 早速参照させていただきます!!

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

結論から言うと、「可能」です。以下は前提 フォーム:F フォーム内のサブフォーム:S サブフォーム内のAreaID:A サブフォーム内のAreaSubId:X サブフォーム:Y 1.Xの値集合ソースに以下のSQLを指定 SELECT AreaSubID,PrefectureName FROM M_AREA_SUB WHERE AreaID=Forms!F!S.form.A ORDER BY AreaSubID 2.Yの「レコード移動時」のイベントプロシージャを作り、以下の ようにプログラムする。 Private Sub Form_Current() Me.X.Requery '★命令はこの1行のみ End Sub レコード位置(行)が変わる度に、クエリが実行され、コンボの リスト内容が入れ替わります。

nqg12333
質問者

お礼

回答ありがとうございます。 しかしこの方法だと、やはり表示項目を変えたくない行の表示項目までかわってしまいます・・・ 初回起動時に、 http://www8.uploader.jp/user/minori/images/minori_uljp03073.jpg の「目的の表示結果」のような表示になるのが理想なのですが、そのようにはならないものなのでしょうか? わがままな質問で申し訳ございません。。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

SQLはそのままでいいと思いますよ コンボボックスAreaIDの内容が変更された際のイベントで AreaSubIDを更新しているのでしょうか? Private Sub AreaID_Change()   AreaSubID.Requery   AreaSubID.Value = "" End Sub といった具合にしておかないと 近畿/中部を切り替えても AreaSubID側のドロップダウンリストは更新されないと思います

関連するQ&A

専門家に質問してみよう