- ベストアンサー
2つの選択をOr、とAndに分けて操作したい
- 質問文章からセンセーショナルなタイトルを30文字前後で生成
- 現在、考えてorの場合とandの場合とIF文で作ってみましたが、うまくいきません。どうぞお知恵を拝借願えないでしょうか。
- 2つの選択をOr、とAndに分けて操作したい方法について相談です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
いちおう、1から4まで一つに してみました。抽出の状況を 確認してみてください。 Private Sub コマンド13_Click() Dim strFil As String If IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then MsgBox ("コンボボックスの選択がされていません") Exit Sub End If If Not IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then strFil = "[ステータス] ='" & Me![ステータスリスト] & "'" End If If IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then strFil = "[申請内容] = '" & Me.申請リスト & "'" End If If Not IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then If MsgBox("二つの条件でAND検索をしますか", vbYesNo) = vbYes Then MsgBox ("二つの条件でAND検索をします") strFil = "[ステータス] = '" & Me.ステータスリスト & "'and " & "[申請内容]='" & Me.申請リスト & "'" Else MsgBox ("二つの条件でOR検索をします") strFil = "[ステータス] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'" End If End If Me.Filter = strFil Me.FilterOn = True End Sub
その他の回答 (4)
- piroin654
- ベストアンサー率75% (692/917)
If "[ステータス]= '" & Me.[ステータスリスト&] Then Me.Filter = "[ステータス] = Me.申請リスト & " '" Me.FilterOn = True これは、 If "[ステータス]= '" & Me.[ステータスリスト] & Then Me.Filter = "[ステータス] = Me.ステータスリスト & " '" Me.FilterOn = True という、意味ですかね。 一応、したいことは、分かりますが、 >If "[ステータス]= '" & Me.[ステータスリスト] & Then これは、 If Me![ステータス]=Me.[ステータスリスト] Then としても、Accessはスルーしてしまうので、 この場合、Or と And を混在させて検索するのは 無理なので、 1 「ステータスリスト」が選択されずに「申請リスト」 だけが選択されている場合は「申請リスト」に 符合するデータを表示。 (つまり、「ステータスリスト」はNullの状態) 2 「申請リスト」が選択されずに「ステータスリスト」 だけが選択されている場合は「ステータスリスト」に 符合するデータを表示。 (つまり、「申請リスト」はNullの状態) 3 両方選択されている場合にAND検索。 4 両方選択されている場合にOR検索。 が考えられるフィルタのかけ方です。 1から3までは一つのボタンで作成できますが、 4は別個のボタン、またはチェックボックス などでフィルタの切り替えを行なう必要が あります。 なお、4は単にANDをORにするだけですが。 このように、なります。コードは簡単なのですが、 まだ、どういう結果がほしいのか確認ができて いないような気がするのですが、どうでしょうか。 一度、それぞれについて、コードを表示して みますので、確かめてみますか?
- piroin654
- ベストアンサー率75% (692/917)
連投ですみません。 手元ではフローチャートで条件を分岐 させると分かりやすいです。なお、三角や 四角の図は書く必要はなく、単に条件間は 線で結んで分岐させて確認してみてください。 その上で、箇条書きにしてみてください。
補足
何やら自分でも構文が変だと思い書き直してみました。 内容としては、ステータスリストのステータスのみの検索と 申請リストの申請内容のみの検索 そしていままで行ってきた2種類のANDけんさくです。 焦っていたせいか質問がおかしくなってしまいました。すみません。 Private Sub 検証_Click() If "[ステータス]= '" & Me.[ステータスリスト&] Then Me.Filter = "[ステータス] = Me.申請リスト & " '" Me.FilterOn = True If "[申請内容]= '" & Me.[申請リスト&] Then Me.Filter = "[申請内容] = Me.申請リスト & " '" Me.FilterOn = True End If End If Me.Filter = "[ステータス] = '" & Me.ステータスリスト & "'and " & "[申請内容]='" & Me.申請リスト & "'" Me.FilterOn = True End Sub ご助言宜しくお願いいたします。
- piroin654
- ベストアンサー率75% (692/917)
書き忘れましたが、 この条件のときのときにフィルタをかける。 というものを箇条書きにして、それに見合った IF文を構築していくという段取りをとると、見通しが よくなるのですが。そうしないと複雑な条件設定は 単にコードを構築していくと往々にしてはまってしまいます。
- piroin654
- ベストアンサー率75% (692/917)
およそのことは分かりますが、 IF文の入れ子とフィルタのかけ方が、妙なので、 言葉で、箇条書きにしてみては、どうですか? IF文の中にどのような条件のIF文をいれたいのか。
お礼
ドンピシャの回答で驚いています。本当にありがとうございます。ここまで来ると神様みたいに感じちゃいます。後は自分のものにしていきたいと思います。今後とも、宜しくお願い致します。