• ベストアンサー

ADOでNullフィールドの抽出

temtecomai2の回答

回答No.1

.filter = "(abc = null OR def = 'xyz') AND (abc = '' OR def = 'xyz')" みたいに均してみるとか。

MusaGoro
質問者

お礼

temtecomai2様 回答ありがとうございます。 アドバイスの通りしたところ、エラーな無くなりました。 AND条件とOR条件が混在する場合は、このように記述する決まりなのでしょうか?

関連するQ&A

  • ADOでNULLのレコードを抽出したい

    ADOでNULLのレコードを抽出したいのですがうまくできません。 Q全てクエリには、登録日フィールドや登録数フィールドがあります。 登録数フィールドは数値です。 その登録数フィールドがnullのレコードを抽出したいです。 RS.CursorLocation = adUseClient RS.Open "Q全て", cn, adOpenKeyset, adLockOptimistic RS.Sort = "登録日 DESC" RS.Filter = "[登録数] = NULL" RS.Filter = "IsNull(登録数) = True" RS.Filter = "登録数 Is Null" ↑これどれをやってもエラーになります。 対策をお願いします。

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

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

  • アクセス ADO Null以外のレコードの件数を取得したい

    アクセス ADO Null以外のレコードの件数を取得したい テーブルにレコードが100行あり、そのうちNull値は40行あります。(主キーではないです) この時、ADOでNull以外にフィルタをかけたいのですが For i = 1 To RS.RecordCount RS.Filter = "フィールド = '*'" でも RS.Filter = "フィールド = 'Null''" でも、文字列になってしまい、うまくいきません。 RS.Filter = "フィールド " <> 'Null' だとエラーになります。 「<>null」を抽出する方法をご教授願います。

  • 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でFilter

    Access 2002ですが ADOのRecordsetにVBAでフィルターをかけようと思っています。 条件は・・・ RS.Filter = "((場所 ='キッチン') OR (場所 ='台所') OR (場所 ='居間') OR (場所='寝室')) AND (予約状況 ='予約済み')" という感じです。 キッチン、台所、居間、寝室でどれでもいいので予約済みになっている ところを抽出したいのですがエラーになります。 エラー内容を控えてくるのを忘れましたが、これは文法的に不可能でしょうか? なお、アクセスのクエリーだと動きます。

  • VBA ADO 複数条件のフィルタ

    エクセルからアクセスヘADOで接続し、レコードをエクセルに書き出しています。 アクセスのTPWIDには、 「URL」フィールド(テキスト型) 「終了」フィールド(YesNo型) があります。 (主キーは他のフィールド) エクセルVBAで --------------------------------------------------------- Sub test() Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\テーブルのみ.mdb" RS.Open "SELECT * FROM TPWID", CN, adOpenStatic, adLockOptimistic RS.Filter = "終了 = " & False RS.Close: Set RS = Nothing End Sub --------------------------------------------------------- とする分には問題なくできますが、実際行いたい行為は下記なのですが RS.Filter の部分で、 「実行時エラー 3001 引数が間違った型、許容範囲外、又は競合しています」 と言うエラーになってしまいます。 --------------------------------------------------------- Sub test() Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\テーブルのみ.mdb" RS.Open "SELECT * FROM TPWID", CN, adOpenStatic, adLockOptimistic RS.Filter = "URL = '" & "www.yahoo.co.jp" & "' or URL = '" & "www.google.co.jp" & "' And 終了 = " & False RS.Close: Set RS = Nothing End Sub --------------------------------------------------------- RS.Filter = "URL = '" & "www.yahoo.co.jp" & "' or URL = '" & "www.google.co.jp" & "' And 終了 = " & False を RS.Filter = "URL = '" & "www.yahoo.co.jp" & "' and URL = '" & "www.google.co.jp" & "' And 終了 = " & False にすれば、エラーは発生しませんが その次のコードを実行しようとすると 「実行時エラー'3021' BOFとEOFのいずれかTRUEになっていか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。」 となってしまいます。 MsgBox RS.RecordCount で件数を取得したら0件なので、それでエラーになります。 条件としては、 URLフォールドでは ・www.yahoo.co.jp ・www.google.co.jp のどちらかの文字列を含み、なおかつ 終了フィールドにチェックがついてない(値は0) です。 ご教授よろしくお願いします。

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

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

  • 文字型フィールドの数値データの抽出

    mdbファイルを、VB6.0+ADO2.7で扱っています。 文字型フィールドに数値データが入力されたレコードを抽出したいのですが、何かよい方法はないでしょうか? そのフィールドに文字型データが入力されているレコードもあり、それを除外したいのです。 SQLでも、.filterプロパティでも結構です。お知恵を下さい。 よろしくお願いします。