Accessでフォームからクエリに抽出条件をパラメータで渡すやり方が分からなくて、数時間苦労。
このタイトルがGoogleの肥やしになって、このサイトに来てくれる人が増えれば。。。
要するに私がやりたかったことは、
フォームのテキストボックスに「1,3」のように抽出したい文字を入れて、
それがフォームから呼び出すクエリの抽出条件にセットされて、
1または3のデータが呼び出せればよいのであった。
しかし、やり方が分からない。
最初は正攻法で、in演算子でチャレンジしてみた。
(「in演算子」ではなく、間違えて「in句」と覚えているので、ググるときに気づかずにずいぶん時間を浪費)
クエリの抽出条件に「in([Forms]![期間指定メール送信]![txt数字])」などと入れて、参照先のテキストボックスをフォームに配置して呼んだが、うまくいかない。
Replace関数でカンマをorに変換したりしてみたが、やはりうまくいかない。
そして最後にたどり着いたのは、Instr関数。
こんな感じ
式1: InStr(“,” & [Forms]![期間指定メール送信]![txtメール除外] & “,”,”,” & [コミュニケーション] & “,”)
抽出条件 > 0
参考になったのは以下のサイト。
Access2010でIn演算子をパラメータクエリで記述する方法を教えてください。 – Yahoo!知恵袋
<http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1374008578>
ダブルコーテーションとカンマが多いので分かりにくいが、実際の数字を入れて分かりやすくすると、例えば以下のような式になって、
InStr(‘1,3,’,’1,’)
抽出条件が「1,3,」なので、コミュニケーション・フィールドに「1,」があれば対象になる・・・って意味になる。
わざわざ「,1」のようにカンマから始まっているのはなんでだろうと考えたが、分かった。
人によっては、場合によっては、「3,1」のように検索する場合もあるからだね。
なるほど。
分かりにくいなあ。
でもAccessには他に方法はないみたい(ずいぶん調べた)。
上記の方法を考え出した人も、ずいぶん苦労しただろうなあ・・・。
改めて先人の苦労と残してくれた知恵に感謝。