MS Access

「抽出条件 フォーム access not in クエリ」とか「forms access in 抽出条件 複数」とかでググっても出てこなかったので、メモ

投稿日:2013年2月28日 更新日:

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には他に方法はないみたい(ずいぶん調べた)。
上記の方法を考え出した人も、ずいぶん苦労しただろうなあ・・・。

改めて先人の苦労と残してくれた知恵に感謝。

-MS Access

執筆者:

関連記事

no image

初めてのSQL Server 2008 R2 Express Editionでつまづいたことの記録

やりたかったことは、 1.Accessのとあるテーブルを、SQL Server 2008にインポートして、複製を作る。 2.上記で作ったテーブルを、AccessからODBCで読め、かつパススルークエリ …

no image

客先で動かしているAccessとFAXの連携システムが昨日から止まっている

これまでのWindowsXP+OutlookExpressであれば問題なかった。 しかし、OSはWindows7になってしまい、メールはWindowsLiveメールになってしまった。 そしてWindo …

no image

Accessでメッセージ内容が無い(のっぺらぼう、OKボタンのみ)エラーメッセージがでる

自分作のモジュールの記述で、以下のように書いている箇所があって、 If rs.EOF = True Then GoTo Err_chkFukuyamaVcr ‘error Else   (中略) また …

no image

Accessで、見積書のような「サブフォームつきフォームを丸々コピー」する方法・・・見つけるのに、四苦八苦。

最初、複雑でかつ読み取り専用のクエリを元にしたフォームをコピーしようとしていたために、 acCmdPasteAppendのラインで「コマンドまたはアクション”追加貼り付け”は無効です」のエラーが出て、 …

no image

Accessでレコードコピー(オートナンバー除く)の決定版のコード!

Accessで、レコードのオートナンバーを除くフィールドを1行、複製(コピー)したくって、Google検索したのだけどなかなか出てこず、しかしやっと見つけた、黄金のソース・・・・。 [VBA] ADO …