• ベストアンサー

実行時エラー3001「引数が間違った型、許容範囲外

VBAのADOです。 このフィルタの文字列、どう改善すればいいか教えてください。 名前フィールドが「test」か「共通」でなおかつ、 対象外フィールドが0のみ抽出したいのですが 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になります。 対象外フィールドのデータ型はYes/No型です。 rs.Filter = "名前 = 'test' or 名前 = '共通' and 対象外 = " & 0 rs.Filter = "名前 = 'test' or 名前 = '共通' and 対象外 = 0" どちらもダメでした。

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

  • ベストアンサー
回答No.1

rs.Filter = "(名前 = 'test' and 対象外 = 0) or (名前 = '共通' and 対象外 = 0)" だと? @酔

MCHKVFKOYLLTU
質問者

お礼

ありがとうございました。

関連するQ&A

  • 「引数が間違った型、許容範囲外、または競合しています。」で考えられる原因は?

    アクセス2003です。 ADOを使用してテーブルにフィルタをかけたいのですが 「引数が間違った型、許容範囲外、または競合しています。」となってしまいます。 コードはこれです↓ Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\○○\Desktop\○○.mdb" Set rs = New ADODB.Recordset rs.Open "テーブル1", cn, adOpenStatic, adLockPessimistic rs.Filter = "進捗=" & "未" rs.MoveFirst MsgBox rs("進捗") rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ・「rs.Filter = "進捗=" & "未" 」の部分でなぜか上記のエラーになります。 ・違うフィールドなら問題なくできます。 ・存在しないフィールド名なら 「実行時エラー 3265 要求された名前、または序数に対する項目がコレクションで見つかりません。」 となります。 ・テーブル1に「進捗」というフィールドは存在し、データ型はテキスト型です。 何かわかる方ご回答いただければ幸いです。

  • アクセスADO シングルコーテーションを含む抽出

    テーブルに例えば、 「I's」という文字があり、これをADOを抽出する際は、フィルタでどういう文字列を作ればよろしいでしょうか? rs.Filter = "フィールド1 = 'I'''s'" rs.Filter = "フィールド1 = 'I's'" rs.Filter = "フィールド1 = 'I" '"s'" ’コメントになってしまう 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 が発生します。 よろしくお願いします。

  • ADOでのBetweenの使い方がわかりません。

    VBAです。 rs.Filter = "日付 Between #2016/1/1# And #" & Date & "#" これって何が間違ってますか? ADOでのBetweenの使い方がわかりません。 今年を抽出したいです。 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になります。

  • adoでBetween は使えないのでしょうか?

    ADOで期間で抽出したいのですが rs.Open strテーブル, cn, adOpenStatic, adLockPessimistic rs.Filter = "計上日 = #2015/01/01#" は問題なく通るのですが、 rs.Open strテーブル, cn, adOpenStatic, adLockPessimistic rs.Filter = "計上日 Between #2015/01/01# And #2015/01/31#" だと 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 と言うエラーになります。 adoでBetween は使えないのでしょうか?

  • ADOでBetweenを使ってフィルタをする時

    ADOでBetweenを使ってフィルタをする時 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になってしまいます。 rs.Filter = "取引日 = Between #2013/1/1# And #2013/1/31#" rs.Filter = "取引日 = Between '#2013/1/1# And #2013/1/31#'" rs.Filter = "取引日 Between #2013/1/1# And #2013/1/31#" 全部だめだったのですが、どこが変ですか?

  • ADOでNullフィールドの抽出

    VB6.0+ADO2.7で、mdbファイルを扱っています。 .filterプロパティを使ってabcフィールドの値がnullまたは空のテーブルを抽出したく recordset.filter="abc= null or abc=''" としました。この場合は問題ないのですが、更にdefフィールドの条件を追加し recordset.filter="(abc= null or abc='') AND def= 'xyz'" としたところ 「実行時エラー3001 引数が間違った型、許容範囲外、または競合しています。」 というエラーが発生してしまいます。 また、 recordset.filter="abc= null AND def= 'xyz'" 或いは recordset.filter="abc='' AND def= 'xyz'" では問題ありません。 何が悪いのでしょうか? よろしくお願いします。

  • 一度変数に格納すればフィルタができるのですが

    Set cn = CurrentProject.Connection rs.Open "Qクエリ", cn, adOpenKeyset, adLockOptimistic myStr = "(数 = 0) And (名 = 'test') " rs.Filter = myStr なら問題なくフィルタができるのですが、 rs.Filter = "(数 = 0) And (名 = 'test') " とすると、 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になります。 なぜか一度変数に格納すればフィルタができるのですが そんなことありますか? 変数を介さないとエラーになるなんてありますか? エラーの原因は変数を介さない事なのでしょうか? アクセスです。

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

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

  • ADONull以外のレコ-ドの件数を取得するには

    こんばんは。アクセス2007です。 フィールド1がnullになっているレコードがあり、 それをADOで抽出したいのですが、エラーになってしまいます。 コードは下記です。 ---------------------------------------------------------------- Option Compare Database Option Explicit Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim MyFileName As String MyFileName = CurrentProject.FullName cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source= " & MyFileName rs.Open "テーブル1", cn, adOpenForwardOnly, adLockOptimistic ' rs.Filter = "IsNull(フィールド1) = False" 'ダメ ' rs.Filter = "フィールド1 Is Not Null" 'ダメ MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ---------------------------------------------------------------- Filter の部分で、 「実行時エラー 3001 引数が間違った型、許容範囲外、又は競合していますとのエラーが発生します。」 になります。 null以外のレコードを読み取った後、addnewで追加していきたいので、 adLockReadOnlyは使わない方がいいですよね? ご回答よろしくお願いします。

  • ADOでアポストロフィー入りの値をフィルタしたい

    例えばレコードの値が「あああ'ああ」だった場合、 ----------------------------------------------------- Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim MyFileName As String MyFileName = CurrentProject.FullName cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source= " & MyFileName rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic rs.Filter = "フィールド1 = " & "'あああ'ああ'" MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ----------------------------------------------------- とすると 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になってしまいます。 ADOでアポストロフィー入りの値をフィルタする方法を教えてください。