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

accessフォームにリストの大分類、小分類があって

【大分類リスト】【小分類リスト】

大分類はテーブルから、項目を読み取っているのですが
小分類の読み取り方に悩んでいます。
小分類テーブルは項目+該当する大分類があるのですが

その大分類によって、選択した項目によって
もう一つのリスト(小分類)の選択出来る項目を変化させていのですが

vbaで、sql文実行
vbaで、クエリ実行
adoで、テーブルから読み取って、ループして該当する項目を追加
みなさんは、どんな方法使いますか?

access2016です。

A 回答 (1件)

こんばんは。



絞り込み検索ってやつですよね?

具体例の提示がないので、よくある例で住所をテーマにしてみます。
簡単に言うと、動的に RecorsSource プロパティーを切り替えてます。

・テーブル構成(添付図左上)
 郵便番号CSVからインポートした「住所マスタ」テーブル。

・テーブルデータ(添付図下)
 約13万弱のレコードがあります。その冒頭の様子。

・検索フォーム(添付図右上)
 配置コントロール1 大分類 都道府県 名前 cboPref
 配置コントロール2 小分類 市区町村 名前 cboCity

・VBA ソース中の SQL について
 1: Group By ~ は重複データを排除しています。
 2: Order By Min([ID]) はデータ並びをID順で保持しています。

添付図がぼやけてないといいけど。では。


' [以下 フォーム1 のソースコード]

Private Sub Form_Load()
  
  Dim sql As String
  sql = "SELECT [pref] " _
    & "FROM [住所マスタ] " _
    & "GROUP BY [pref] " _
    & "ORDER BY MIN([ID]);"
  
  With cboPref '大分類 都道府県
    .ColumnCount = 1
    .BoundColumn = 1
    .RowSourceType = "Table/Query"
    .RowSource = sql
  End With
  With cboCity '小分類 市区町村
    .ColumnCount = 1
    .BoundColumn = 1
    .RowSourceType = "Table/Query"
    .RowSource = ""
  End With

End Sub

Private Sub cboPref_Change()
  
  Dim sql As String
  sql = "SELECT [city] " _
    & "FROM [住所マスタ] " _
    & "WHERE [pref] ='" & Me.cboPref.Value & "' " _
    & "GROUP BY [City] " _
    & "ORDER BY MIN([ID]);"
  
  With cboCity
    .Value = ""
    .RowSource = sql
    .Requery
    .SetFocus
    .Dropdown
  End With
  
End Sub
「access フォーム 大分類、小分類」の回答画像1
    • good
    • 1

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