Microsoft Access 掲示板

コードの説明をお願いします / 3

4 コメント
views
4 フォロー
3
hiroton 2020/07/07 (火) 11:31:54 3dd82@f966d

Mid(myStr, 6)はMid()関数を使った複数の中からいくつかを選ぶときに使うよくある手法ですね。これをそうだと解説しているのはあまり見ない気がします。

謎の数字「6」はLen(" And ") + 1で求められる数値です。(「And」の前後に空白スペースが入っています)

条件が複数選ばれると前後の条件を" And "でつなぐことになりますが、そのままコードにするならば、条件追加の時にはすでに条件があるかどうかをチェックするということになります

ex)前提条件を考えた検索条件の追加コードの一部

'-------------------------------------分類---------------------

  If Not IsNull(大分類) Then
    If myStr <> "" Then myStr = myStr & " And "    '初めての条件でなければ" And "でつなぐ
    myStr = myStr & "大分類 Like '" & 大分類.Value & "'"
  End If

  If Not IsNull(中分類) Then
    If myStr <> "" Then myStr = myStr & " And "    '初めての条件でなければ" And "でつなぐ
    myStr = myStr & "中分類 Like '" & 中分類.Value & "'"
  End If

  If Not IsNull(小分類) Then
    If myStr <> "" Then myStr = myStr & " And "    '初めての条件でなければ" And "でつなぐ
    myStr = myStr & "小分類 Like '" & 小分類.Value & "'"
  End If

:
        DoCmd.OpenForm "F_周知", , , myStr

:

何回も同じことをしているIfが出てきて手間だし読みにくいですね
そこで、最初かどうかにかかわらず、条件にはすべて先頭に" And "をつけておこう、処理の最後に先頭の" And "を削除するようにしようというのがMid(myStr, 6)です

通報 ...