- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一度変数に格納すればフィルタができるのですが)
Accessでフィルタをかける際のエラーについて
このQ&Aのポイント
- Accessでフィルタをかける際に、変数に格納すると正常にフィルタがかかるが、変数を介さないとエラーになる場合があります。
- 具体的には、rs.Filterプロパティを直接指定すると実行時エラーが発生することがあります。
- エラーの原因は変数を介さないことにあり、変数に格納することで正常にフィルタがかかるようになります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Access2010で試しました。 まず、クエリではなくテーブルで行った場合は どちらでも問題なくFilterが掛かりました。 クエリ中にワイルドカード(* ? など)があると ADOの場合クエリのSQL文を、ANSI-92規格として解析するようです。 この場合のワイルドカードは(% _ など)ですから どちらでもエラーにはなりませんでしたが 欲しい結果が得られなくなりました。 クエリはWHERE句で Like *文字* を入れている単純なものです。 http://okwave.jp/qa/q8666067.html の 30246kiku さんによる検証を読んでみてください。 当方では問題のエラーの再現が出来なかったのですが、 クエリ中のSQL文に問題が潜んでいるかもしれません。 なお、ADOではなくて DAO でならエラーにならないかもしれません Sub test() Dim db As Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Qクエリ") mystr = "(数 = 0) And (名 = 'test') " 'rs.Filter = mystr rs.Filter = "(数 = 0) And (名 = 'test') " Do Until rs.EOF Debug.Print rs.Fields(1) rs.MoveNext Loop rs.Close: Set rs = Nothing Set db = Nothing End Sub
お礼
ありがとうございました。