Microsoft Access 掲示板

テキストボックスでの抽出について

6 コメント
views
4 フォロー

御世話になります。
フォーム詳細にある テキストボックス検索月 の値で フォーム内の テキストボックス月のデータの抽出をしたいと思い
Private Sub 検索月_AfterUpdate()

    Me.Filter = "月 like'#" & 検索月 & "#'"
    Me.FilterOn = True

End Sub
と記述したのですが
パラメーターの入力ボックスが表示され 月 の値を求められてしまうのですがどこが記述間違いなのでしょうか?画像1

igaguri
作成: 2019/05/27 (月) 08:39:56
通報 ...
1
shige 2019/05/27 (月) 09:10:42 d1a4b@b63e8

Me.Filter = "月 like'#" & 検索月 & "#'"

Me.Filter = "月 like'#" & me.検索月 & "#'" では?

2
shige 2019/05/27 (月) 09:11:56 d1a4b@b63e8

Me.Filter = "月 like #" & Me.検索月 & "#"    'も不要ですね

3
igaguri 2019/05/27 (月) 11:03:04 32a1e@d14a6

ありがとうございます。
パラメーターの入力ボックスが表示されてしまいます。

4
名前なし 2019/05/27 (月) 14:36:14 1b7fd@f966d

filterはレコードソースのフィールドに対して働きます。
テキストボックス「月」のコントロールソースは「月」になってますか?

以下、以前からの質問の延長であると想定した回答です。

Me.Filter = "[入出庫日 を月でグループ化] = '" & Me.検索月 & "'"

ではどうでしょう?

その他あれこれ
1.[入出庫日 を月でグループ化]
フィールド名に半角スペースが入っている場合は[]で囲む必要があります。煩雑になるのでフィールド名に半角スペースは使わないと決めてしまうといいと思います。

2.like
like演算子はワイルドカードを用いた比較に必要な演算子です。完全一致でいい今回は「=」でいいと思います。

3.#(~)#
データの種類を指定する囲み文字ですが、format関数で出力した結果は文字列型になるので文字列同士の比較となるよう「'(~)'」のようにシングルクォーテーションで囲みましょう。

5
名前なし 2019/05/27 (月) 15:47:45 1b7fd@f966d >> 4

あぁ、よく見たら最初の式はちゃんとシングルクォーテーションでくくった形になってますね。3.は問題ありませんでした。訂正します。

ただ、「#」は不要です。
like演算子を使った時の「#」は何でもいい1文字の数字となるので、最初の式では例えば「0April 20180」~「9April 20189」の100パターンに一致するものを抽出するという設定になります。

6
igaguri 2019/05/27 (月) 16:27:56 32a1e@d14a6

ありがとうございました。無事に抽出できました。
また、細かな点を別途ご指摘いただきましてありがとうございます。
皆様からご教授いただいたモノをメモにして整理させていただいています。