• ベストアンサー

ado フィルタで 含まない とするには?

含むなら rs.Filter = "文字列 like '*A*'" でいけるのですが rs.Filter = "文字列 not like '*A*'" だと 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になります。 rs.Filter = "文字列 not like '%A%" でもダメでした。 NOTの位置がおかしいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

普段レコードセットのFilterは使わないので、今更ながら気が付きました。 ヘルプによれば "演算子" は、<、>、<=、>=、<>、=、または LIKE である必要があります となっていて、NOT そのものが無いですね。 NOTの代わりに <> like '*A*' も無駄な足掻きでした。 DAOのRecordsetやフォームのFilter なら、NOT も有効なのですけどねぇ。 #1 さんのリンク先の様にSQLで求めるのがベストかな。 Sub FilterTestDAO() Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("テーブル名", dbOpenSnapshot) rs.Filter = "文字列 not like '*A*'" Set rs = rs.OpenRecordset() rs.MoveLast Debug.Print rs.RecordCount End Sub

PTKIJNDIFUMG
質問者

お礼

adoでフィルタを使うことは諦めます。 daoでやったらできました。 ご回答ありがとうございました。

その他の回答 (1)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

既、回答例ですが http://okwave.jp/qa/q5263578.html のようですね。

PTKIJNDIFUMG
質問者

お礼

無理なようですね。