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

執筆者:

関連記事

Accessで複数レコードを1レコードにまとめる(運送会社送り状作成のため

Accessに入れてある楽天の注文データをもとに、運送屋さんの送り状伝票を作ろうと思い立った。 しかし、楽天の注文データは、同一の受注番号で複数の商品に分かれている。 例えば一人の人が3点買い物をした …

no image

Accessで DoCmd.RunSQL を CurrentDb.Executeにしたら、1秒高速化した

処理が遅いので速くして欲しいとの要望があったので、コードを調査。 DoCmd.RunSQL を CurrentDb.Execute に置き換えると非同期で実行されるとの情報を得たので、試す。 結果、6 …

no image

Access2013のWeb機能について(FileMakerと比較して)メモ

ここ数日、MS-Access 2013のWeb機能を勉強していたので、そのメモ。 ■フォームの書式 選択肢があまりに少ない。FMのようにデザインやテーマが用意されていない。 リスト表示のサイズが変更で …

no image

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

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

no image

Excelで使える祝日判定のWebAPIを見つけた

Excelの関数には、曜日を判定できる関数(WEEKDAY)が用意されている。また、表示だけなら書式設定でもできる。しかし祝日となると、関数も何も、用意されていない。 祝日は年により、突然増えたり、「 …