現在Access VBAでサブフォームの中にあるコンボボックスの一覧を、サブフォームの表示項目を行ごとに変更する処理を探しています。
まず、下の画像をご覧下さい。
http://www.accessclub.jp/bbs4/img/3949.jpg
下の画像の場合、「地区」列の項目が「中部地方」か「近畿地方」かによって、「都道府県」コンボボックスの一覧を変更させたいのです。
例えば、「地区」列の項目が「中部地方」になっている行は、「都道府県」の項目には中部地方の県名がコンボボックスの一覧に表示され、「近畿地方」になっている行は、近畿地方の2府4件がコンボボックスの一覧に表示されるような処理を作成したいのです。
下は各テーブルの情報を表示させた画像です。
http://www8.uploader.jp/user/minori/images/minor …
そのようなプログラムを作ろうと、下のようなプログラムを作成しました。
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
No.3ベストアンサー
- 回答日時:
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
レコード位置(行)が変わる度に、クエリが実行され、コンボの
リスト内容が入れ替わります。
回答ありがとうございます。
しかしこの方法だと、やはり表示項目を変えたくない行の表示項目までかわってしまいます・・・
初回起動時に、
http://www8.uploader.jp/user/minori/images/minor …
の「目的の表示結果」のような表示になるのが理想なのですが、そのようにはならないものなのでしょうか?
わがままな質問で申し訳ございません。。
No.1
- 回答日時:
SQLはそのままでいいと思いますよ
コンボボックスAreaIDの内容が変更された際のイベントで
AreaSubIDを更新しているのでしょうか?
Private Sub AreaID_Change()
AreaSubID.Requery
AreaSubID.Value = ""
End Sub
といった具合にしておかないと 近畿/中部を切り替えても AreaSubID側のドロップダウンリストは更新されないと思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- Excel(エクセル) EXCELでの複雑な複数条件について 4 2022/05/09 16:19
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Firefox(ファイヤーフォックス) Firefoxのグーグル検索で表示される現在地を修正したい!!! 1 2022/05/17 10:42
- 固定IP Firefoxので表示される現在地を修正するには? 2 2022/05/17 21:16
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
帳票フォームでのあるコンボボックスに連動するコンボボックスの作成について
その他(データベース)
-
-
4
ACCESSでコンボボックスにSQLで抽出した値を表示したい
その他(データベース)
-
5
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
8
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
9
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
10
Accessフォームで詳細内の任意の行へSetFocus
Excel(エクセル)
-
11
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
12
サブフォームのイベント取得
Visual Basic(VBA)
-
13
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
14
サブフォームの新規レコードに移動したい アクセス
Access(アクセス)
-
15
Access フォーム上でコンボボックスの値を更新したときにレコードセットは更新できないと表示される
その他(データベース)
-
16
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
17
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
18
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
19
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
20
YES/NO型の値
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでフォームのスクロールバー...
-
VBAにてメッセージボックスを最...
-
アクセスVBA フォームのス...
-
リストボックスをクリックする...
-
ディスプレイ解像度より大きな...
-
VB.net(VB)で、フォームにExcel...
-
Googleフォーム・複数人の申し...
-
accessで2つ以上のフォームを起...
-
アクセス・別フォームの新規レ...
-
Accessでフォームから別フォー...
-
サブフォームの行ごとにコンボ...
-
メッセージボックスの背景色
-
PDFフォームに本日の日付を自動...
-
子フォームから親フォームのオ...
-
csvに保存しているデータをURL...
-
AccessVBAで入力有無のチェック
-
毎日新聞「女の気持ち」匿名希...
-
ASP.NETとC#でWebフォームを呼...
-
Access:ストアドプロシージャ...
-
Accessでサブフォームの合計を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
VB.net(VB)で、フォームにExcel...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
サブフォームの新規レコードに...
-
Accessでフォームから別フォー...
-
accessで2つ以上のフォームを起...
-
サブフォームの行ごとにコンボ...
-
フォーム上の全てのコントロー...
-
アクセスVBA フォームのス...
-
VBA リストボックスをダブルク...
-
サブフォームのイベント取得
-
メッセージボックスの背景色
-
PDFフォームに本日の日付を自動...
-
VBAでフォームのスクロールバー...
-
Access 無操作の場合、自動で閉...
-
アクセス フォームが存在する...
-
VBプログラムの終了
-
メインフォームからサブフォー...
-
ユーザーフォーム上にアイコン...
おすすめ情報