Microsoft Access 掲示板

コンボボックスの選択肢を絞り込む / 1

1 コメント
views
1

方法としては下記の2つが考えられます。

  1. コンボボックスの値集合ソースのクエリ(SQL)にメインフォームのオプショングループを参照する抽出条件を設定する。

  2. メインフォームのオプショングループの更新後処理でサブフォームのコンボボックスの値集合ソースのSQLを変更する。

オプションの選択肢が「洋or和」「生or焼」だけなら1.の方法がシンプルだと思います。


オプショングループ(opt_洋or和)
 オプションボタン(opt_洋) オプション値: 1
 オプションボタン(opt_和) オプション値: 2

オプショングループ(opt_生or焼)
 オプションボタン(opt_生) オプション値: 1
 オプションボタン(opt_焼) オプション値: 2

コンボボックスの値集合ソースの設定

SELECT * FROM M_商品
WHERE
 洋or和 = Choose(Parent!opt_洋or和,"洋菓子","和菓子")
 AND
 生or焼 = Choose(Parent!opt_生or焼,"生菓子","焼菓子");

メインフォームのオプショングループの更新後処理

Private Sub opt_洋or和_AfterUpdate()
    Me.サブフォーム1.Form!コンボボックス1.Requery
End Sub

サブフォームコントロール名、コンボボックス名は実際のものに変更
opt_生or焼 も同様に。

オプショングループの選択肢に全て(抽出しない)というのを追加するなら抽出条件が複雑になるので2.の方法をとりますね。

 洋,和,全(抽出しない)


オプショングループ(opt_洋or和)
 オプションボタン(opt_洋) オプション値: 1
 オプションボタン(opt_和) オプション値: 2
 オプションボタン(opt_全) オプション値: 3

オプショングループ(opt_生or焼)
 オプションボタン(opt_生) オプション値: 1
 オプションボタン(opt_焼) オプション値: 2
 オプションボタン(opt_全) オプション値: 3

メインフォームのモジュール

Private Sub opt_洋or和_AfterUpdate()
    SetComboBoxRowSource
End Sub

Private Sub opt_洋or和_AfterUpdate()
    SetComboBoxRowSource
End Sub

Private Sub SetComboBoxRowSource()
    Dim stSQL As String

    Select Case Me.opt_洋or和.Value
    Case 1
        stSQL = " AND 洋or和 = '洋菓子'"
    Case 2
        stSQL = " AND 洋or和 = '和菓子'"    
    End Select
    Select Case Me.opt_生or焼.Value
    Case 1
        stSQL = stSQL & " AND 生or焼 = '生菓子'"
    Case 2
        stSQL = stSQL & " AND 生or焼 = '焼菓子'"    
    End Select

    If stSQL = "" Then
        stSQL = "SELECT * FROM  M_商品;" 
    Else
        stSQL = "SELECT * FROM  M_商品 WHERE" & Mid(stSQL, 6) & ";"
    End If

    Me.サブフォーム1.Form!コンボボックス1.RowSource = stSQL

End Sub
通報 ...