- ベストアンサー
access 表形式のフォームの複数条件検索
- access 表形式のフォームの複数条件検索の方法について教えてください。
- Comboボックスを2つ、3つ組み合わせた検索方法を知りたいです。
- 現在は学年の検索ができていますが、他の条件を組み合わせる方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 最後のIF文では、各コンボボックスやテキストボックス が未設定の場合なので、 If IsNull(Me!cmb学年) And IsNull(Me!cmb組) And IsNull(Me!tx名前) Then strFilter = "" End If のように、 strFilter = "" として、この場合はすべてを表示するというのもいいのですが、 その場合はすべて表示するというメッセージを出しておけば、 混乱がなくなるので、 If IsNull(Me!cmb学年) And IsNull(Me!cmb組) And IsNull(Me!tx名前) Then strFilter = "" MsgBox "条件が未設定なのですべてを表示します" End If のようにするのがいいかもしれません。 そのあたりは都合のいいように設定 してください。
その他の回答 (1)
- piroin654
- ベストアンサー率75% (692/917)
ひたすら、条件を組み合わせるだけだと思いますが。 たとえば、 学年を表示するコンボボックスを「cmb学年」 組を表示するコンボボックスを「cmb組」 名前を書き込むテキストボックスを「tx名前」 とします。 えーっと、テキストボックスは別に他意があって テキストボックスにしたわけではありません。 コンボボックスでも構いません。 一応、各コントロールで、データが選択されているか、 あるいは書き込まれているかによって、その組合せ ほどIF文でフィルタに使う条件を設定します。 なお、各コンボボックスやテキストボックスの値は 文字型としています。数値型があるのならば、 少し変数を「"」などでの囲み方が違うので 補足をしてください。 Private Sub コマンド0_Click() Dim strFilter As String If Not IsNull(Me!cmb学年) And Not IsNull(Me!cmb組) And Not IsNull(Me!tx名前) Then strFilter = "[学年] Like '" & Me![cmb学年] & "' AND [組] Like '" & Me![cmb組] & "' AND [名前] Like '" & Me![tx名前] & "'" End If If Not IsNull(Me!cmb学年) And Not IsNull(Me!cmb組) And IsNull(Me!tx名前) Then strFilter = "[学年] Like '" & Me![cmb学年] & "' AND [組] Like '" & Me![cmb組] & "'" End If If Not IsNull(Me!cmb学年) And IsNull(Me!cmb組) And Not IsNull(Me!tx名前) Then strFilter = "[学年] Like '" & Me![cmb学年] & "' AND [名前] Like '" & Me![tx名前] & "'" End If If IsNull(Me!cmb学年) And Not IsNull(Me!cmb組) And Not IsNull(Me!tx名前) Then strFilter = "[組] Like '" & Me![cmb組] & "' AND [名前] Like '" & Me![tx名前] & "'" End If If Not IsNull(Me!cmb学年) And IsNull(Me!cmb組) And IsNull(Me!tx名前) Then strFilter = "[学年] Like '" & Me![cmb学年] & "'" End If If IsNull(Me!cmb学年) And IsNull(Me!cmb組) And Not IsNull(Me!tx名前) Then strFilter = "[名前] Like '" & Me![tx名前] & "'" End If If IsNull(Me!cmb学年) And Not IsNull(Me!cmb組) And IsNull(Me!tx名前) Then strFilter = "[組] Like '" & Me![cmb組] & "'" End If If IsNull(Me!cmb学年) And IsNull(Me!cmb組) And IsNull(Me!tx名前) Then Exit Sub End If Me.Filter = strFilter Me.FilterOn = True End Sub
お礼
ありがとうございました。 うまく動作しました。これを基に勉強させていただきます。