MS Access

AccessでIN演算子をクエリの抽出条件に使うのに苦労

投稿日:

やりたいこと:

非連結のチェックボックスでレコードを選択する – hatena chips

・・・のようなこと。

・フォームのテキストボックスに、’354942-00074747′,’354942-00095716′,’354942-00057735’などのように、受注番号の検索キーワードがセットされるように、あらかじめVBAで作ってある。

・コマンドボタンをクリックすると、クエリの抽出条件に、上記のキーワードがIN演算子でセットされて、検索結果が返ってくる(この場合は3件)。

つまづいたこと:

しかし、うまくいかない。

最初、クエリの抽出条件欄に、
IN ([Forms]![楽天未発送].[txtChkList]) としたがダメで。

以下のようなユーザー関数を別途作って、

[code]
Public Function retOrderNo() As String
r = Replace([Forms]![楽天未発送].[txtChkList], ",", "’,’")
r = Mid(r, 3)
retOrderNo = r & "’"
‘ Debug.Print r & "’"
End Function
[/code]

クエリの抽出条件欄に、
In (RetOrderNO()) や “In (” & RetOrderNO() & “)” としたがやはりダメで。

色々調べていると、BuildCriteria関数を試してみると良さそうなので、使ってみた。
以下のページが参考になった。

パラメータクエリにIn演算子を用いて複数の条件で抽出するための設定 – もう一度学ぶMS-Access

初めてなので慣れていないかもだけど、この関数、イマイチ使い勝手がわからない。
最初、BuildCriteria関数を使いたくなくて、Eval関数だけでやろうとしたが、こんな感じで。
x: Eval([受注番号] In (retOrderNo()))
でも、やっぱりうまくいかない。

最終的には、以下のやり方でうまくいった。

z: Eval(BuildCriteria(“‘” & [受注番号] & “‘”,10,”In (” & retOrderNo() & “)”))

結果オーライだけども、
“‘”のシングルクォーテーションで囲む意味が分からない。
MSのページには、普通にダブルクォーテーションでフィールド名を囲んであったが、同じようにしたら「不明」っているダイアログでエラーが出てうまくいかなかった。

BuildCriteria メソッド (Access) | Microsoft Docs

-MS Access

執筆者:

関連記事

no image

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

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

no image

AccessやExcelで作ったハイパーリンクではChromeブラウザ上のGmailの受信トレイを検索できんかった・・・がShellならできた

Accessのフォームにつくったボタンをクリックしたら、ハイパーリンクに変数がセットされ、その変数でGmailの受信トレイを検索する・・・・といった仕組みを作りたかった。 [code]Private …

no image

フォーム テンプレート

Accessのフォームを作るときに、「フォーム テンプレート」を使う方法があること、知っている人は多いのかな? 既存のフォームにあるテキストボックスの色やサイズなどの設定(プロパティ)を引き継いで、新 …

no image

ドメインのDNSの管理会社を移転したら、BASP21でSMTP送信がエラー

CPIも、BASP21も、どちらもマイナー(笑)なので、誰の役にも立たないかもしれないけど、自分の備忘録として、残します。 これまでCPIでWebもメールも動かしていたが、WebのみをShopifyに …

no image

Accessの複雑な処理のレポート帳票で1ページのみ出力されるはずが2ページ目になぜかページヘッダーが出るトラブルに見舞われ

レポートのデザインビューでいうと上から、レポートヘッダー、ページヘッダー、グループヘッダー、詳細、グループフッター、ページフッター、レポートフッター・・・というような、結構細かいレポートを作っている。 …