• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADONull以外のレコ-ドの件数を取得するには)

ADONull以外のレコ-ド件数取得方法とエラー対処法

このQ&Aのポイント
  • ADONull以外のレコ-ドの件数を取得する方法やエラー対処法について教えてください。質問文章のコードを使用して、フィールド1がnullでないレコードの件数を取得しようとしていますが、実行時エラーが発生してしまいます。
  • フィールド1がnullでないレコードの件数を取得するために、ADODBを使用したコードを作成していますが、実行時エラーが発生してしまいます。「実行時エラー 3001 引数が間違った型、許容範囲外、又は競合しています」というエラーメッセージが表示されます。
  • null以外のレコードを読み取った後にaddnewで追加したい場合、adLockReadOnlyを使用しない方が良いです。フィールド1の値がnullでないレコードの件数を取得する方法やエラー対処法について教えてください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

試しにやってみましたが、Filterの前に色々とハードルがありました。ご参考まで。なお、当方Access2010です。 Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset 'cn.Open "Provider =...だと、「データベースを開けない状態、またはロックできない状態」のエラーになることあり。 '新たなインスタンスを作ろうとするため Set cn = CurrentProject.Connection 'これを指定しないと、rs.RecordCountが正しい値を戻さない rs.CursorLocation = adUseClient rs.Open "テーブル名", cn, adOpenForwardOnly, adLockOptimistic rs.Filter = "フィールド名<>null" MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub

sdfkhewrqa
質問者

お礼

'cn.Open "Provider =...はあまり使わない方がいいようですね。 しかし自身ではなく別のデータベースに繋ぎたい時は困りますね。 'cn.Open "Provider =... を Set cn = CurrentProject.Connection に変えて、 rs.CursorLocation = adUseClient を追加したら rs.Filter = "フィールド名<>null" で値が取得できました。 しかし、 rs.Filter = "IsNull(フィールド1) = False" 'ダメ rs.Filter = "フィールド1 Is Not Null" 'ダメ はダメなのですね。 rs.CursorLocation = adUseClient は並べ替えをする時に使うものだと思っていたのですが 他にも用途があるのですね。 無事解決しました。 ありがとうございました。