• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つの選択をOr、とAndに分けて操作したい)

2つの選択をOr、とAndに分けて操作したい

このQ&Aのポイント
  • 質問文章からセンセーショナルなタイトルを30文字前後で生成
  • 現在、考えてorの場合とandの場合とIF文で作ってみましたが、うまくいきません。どうぞお知恵を拝借願えないでしょうか。
  • 2つの選択をOr、とAndに分けて操作したい方法について相談です。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.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

chi_ko6262
質問者

お礼

ドンピシャの回答で驚いています。本当にありがとうございます。ここまで来ると神様みたいに感じちゃいます。後は自分のものにしていきたいと思います。今後とも、宜しくお願い致します。

その他の回答 (4)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

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)
回答No.3

連投ですみません。 手元ではフローチャートで条件を分岐 させると分かりやすいです。なお、三角や 四角の図は書く必要はなく、単に条件間は 線で結んで分岐させて確認してみてください。 その上で、箇条書きにしてみてください。

chi_ko6262
質問者

補足

何やら自分でも構文が変だと思い書き直してみました。 内容としては、ステータスリストのステータスのみの検索と 申請リストの申請内容のみの検索 そしていままで行ってきた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)
回答No.2

書き忘れましたが、 この条件のときのときにフィルタをかける。 というものを箇条書きにして、それに見合った IF文を構築していくという段取りをとると、見通しが よくなるのですが。そうしないと複雑な条件設定は 単にコードを構築していくと往々にしてはまってしまいます。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

およそのことは分かりますが、 IF文の入れ子とフィルタのかけ方が、妙なので、 言葉で、箇条書きにしてみては、どうですか? IF文の中にどのような条件のIF文をいれたいのか。

関連するQ&A