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

Accessで複数の用紙サイズ・向きの帳票を印刷したいが2枚出るとか、思ったようにならないなら

私がAccessで作った会社の業務管理システムは、帳票類がほとんどA4縦の用紙で出力されるようになっている。 しかし、一部の帳票、というか封筒は、長三サイズと、角6サイズをの用紙にしないと、プリントが …

Accessのオブジェクトをデスクトップに作っておくと超便利

結構、知らない人が多いんじゃないかな。 クエリとか、フォームへの直接のリンクを、PCのデスクトップに作れること。 ユーザーがたくさんいて、その中の一部の人には、閲覧はして欲しいけど、編集はして欲しくな …

no image

Accessのフォーム/レポートのコントロール同士をくっつけて桝目状にしたい

レポートを、Excelのような桝目の罫線にしたい。 お客からこんなニーズが多い。 やったことがある人ならわかるけど、これが、なかなか苦労する。 レポートのデザインビューで、いざ個々にコントロールをきち …

no image

Accessでファイル選択ダイアログを開いて選択したExcelファイルの先頭シートを読み込み番号が一致するデータの配送日を本日日付で消し込む処理

ファイル選択ダイアログを開いて、選択したExcelファイルの先頭シートを読み込み、番号が一致するデータの配送日を本日日付で消し込む処理(楽天販売DB.mdb) ダイアログを表示する際には、事前にMic …

Office365にはSharePointリストという表データが保存できる機能がありAccessのリンクテーブルにできる

Office365では、AccessのWebアプリを作れる。 それで今、勉強しているのだが、Office365にはSharePointリストという表データが保存でき、それをAccessのリンクテーブル …