• ベストアンサー

レコードセット クエリの数と一致しない

アクセスvbaです。 rs.Open "Q_test", cn, adOpenStatic, adLockPessimistic intCnt = rs.RecordCount のようなコードをvbaで作ったのですが、 rs.RecordCountで取得されれる数が 実際のQ_testの数と一致しません。 Q_testの数は30レコードなのに、 rs.RecordCountは50が返ります。 Q_testは抽出条件に Not Like "*あ*" としているのですが VBAでは抽出されてないようです。 なぜ数が一致しないのでしょうか?

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

  • ベストアンサー
回答No.4
KDCLSCUBDMD
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。つづきですが、 ただし、クエリをクリックして単独で開く場合は >Not Like "*あ*" にしないと、正しく表示されません。

KDCLSCUBDMD
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

ADOで抽出条件にワイルドカードを使う場合は、 >Not Like "*あ*" ではなく、 Not Like "%あ%" のように「%」をつかいます。 たぶん、変更すると正しくレコード数が出ると思いますが。

KDCLSCUBDMD
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

http://www.happy2-island.com/access/gogo03/capter00227.shtml RecordCountプロパティの使い方 の解説を読んでみてください、思い当たるふしはありませんか。

KDCLSCUBDMD
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセス 取得される件数が違う

    Q一覧というクエリは実際は300レコードアリ、フィルタ後200レコードになるのに、 VBAで rs.Open "Q一覧", cn, adOpenStatic, adLockPessimistic Debug.Print rs.RecordCount で見れ見ると、 フィルタ前の300件が取得されてしまいます。 なぜフィルタが適用されてないのでしょうか? Q一覧は、 クエリ1とクエリ2を結合させて作ったクエリですが 元々がテーブルではなくクエリだからこの現象が起こるのでしょうか?

  • アクセスでADO 並べ替えが適用できない

    アクセスでADOを使っているのですが、 Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.CursorLocation = adUseClient rs.Open "SELECT * FROM Q1", cn, adOpenStatic, adLockPessimistic rs.Sort = "受付日 DESC" For i = 1 To rs.RecordCount ・ ・ ・ このようなコードを作っていますが、 rs.Sortの部分で、「並べ替えを適用できません」になります。 レコード数は、15000件くらいです。 なぜ並べ替えができないのでしょうか? しょうがないからクエリで最初から並べ替えしておきますが、原因を教えてください。

  • 実行時エラー3021

    For i = 1 To rs.RecordCount 番号 = rs("番号") rs.MoveNext Next こんな感じで、ADOでループしているのですが、 一番最後のレコードで、 実行時エラー3021 「BOFとEOFのいずれかTRUEになっているか、 または現在のレコードが削除されています。 要求された操作には、現在のレコードが必要です。」 が発生します。 rs.Open "SELECT * FROM T全て", cn, adOpenStatic, adLockPessimistic この部分に問題があるのでしょうか? adOpenStatic, adLockPessimistic この部分はコピペで、意味が分からないまま使っています。

  • アクセス ADO レコードの件数がおかしい

    アクセスADOでクエリの行数を取得したいのですが クエリが200行でも100行でも必ず12が返ります。 クエリ1は、一度12行の時にadoで数を取得し、その時は、正しく12が返ったのですが、 行数が変わっても12が返ります。 コードは、 Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM クエリ1", cn, adOpenStatic, adLockPessimistic Debug.Print rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub です。 Debug.Print DCount("*", "クエリ1") だと、正しいレコード数が取得されるのですが、ADOだとおかしいです。 クエリ1のSQL文は、 SELECT Q_作業用.* FROM Q_作業用; のように、別のクエリを持ってきています。 何が原因なのでしょうか? よろしくお願いします。

  • ADOで現在のレコードの次のレコードの値も取得

    ADOで現在のレコードの次のレコードの値も取得するには? アクセスに対してADOでデータを取得しているのですが 例えばテーブルに フィールド1 あああ いいい ううう と入ってる時に、1レコード目のあああの値を取得しているときに、同時に次のレコードのいいいの値も取得することは可能ですか? Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM テーブル1", cn, adOpenStatic, adLockPessimistic For i = 1 To rs.RecordCount MsgBox rs("フィールド1") '現在のレコード MsgBox rs("フィールド1") + 1 '次のレコード rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub これだとダメなようです。 あああ いいい が表示されるようにしたいのですが、どうすればいいか教えてください。

  • ADOでループすると1レコードずつ飛ばしてしまう

    アクセスなのですが Sub test() Set cn = CurrentProject.Connection rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')" For j = 1 To rs.RecordCount rs("URL") = "http" rs.Update rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub このようにして、既存のレコードにフィルタをかけて該当のレコードの値を更新しているのですが rs.MoveNext をいれると、 1レコード目、3レコード目、5レコード目・・・と言う順番になってしまい、 最終的にrs.RecordCountの数を越したレコードを指定してしまい 実行時エラー 3021 「BOFとEOFのいずれかTRUEになっていか、または現のレコードが要求された操作には、現在のレコードが必要です。」 となってしまいます。 だからって rs.MoveNextをいれないと、rs.RecordCountに達するまで、 いつまでも同じレコードをループしてしまいます。 1レコードずつ順番にデータを掴む方法を教えてください。

  • BOF と EOF のいずれかが True になっ

    アクセスVBAです。 rs.Open "Q内容", cn, adOpenStatic, adLockPessimistic For intNo詳細 = 1 To rs.RecordCount Call 詳細テーブル_rs_1行のレコードを生成する rs.MoveNext Next intNo詳細 --------------------------------------------------------- の様に、loopしているのですが、 intNo詳細の最高値が100の場合、100の時に、 「BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。」 と言うエラーになっています。 ADOで更新・削除・追加は行っていません。 テーブルのデータを取得しているだけです。 それなのになぜ最後の値でエラーになるのでしょうか? AbsolutePageとAbsolutePositionは、adPosEOFになっています。

  • 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 複数条件のフィルタが出来ない

    カテゴリ サイズ 牡蠣 大 牡蠣 小 牡蠣 小 のようなクエリ(Qクエリ)があります。 --------------------------------------------------------------------- strカテゴリ="牡蠣" strサイズ="大" Set cn = CurrentProject.Connection rs.Open "Qクエリ", cn, adOpenStatic, adLockPessimistic rs.Filter = "カテゴリ = '" & strカテゴリ & "' And サイズ = '" & strサイズ & "'" Debug.Print rs.RecordCount --------------------------------------------------------------------- とすると、 大は1レコードなのに3が返ります。 更に、 strサイズ="小"にすると0がかります。 ウォッチウインドウで見たら、「大」の時は --------------------------------------------------------------------- : Filter : "カテゴリ = '牡蠣' And サイズ = '大'" : Variant/String : : RecordCount : 3 : Long : --------------------------------------------------------------------- になっています。 どうしてこのような現象が起きるのでしょうか? レコードの「小」がADOだと「大」と読んでいます。 アクセス2010です。

  • adoのWHERE句 クエリだとフィルタされない

    エクセルvbaなのですが、 adoのWHERE句は、テーブルじゃないとダメなのでしょうか? と言うのも、 rs.Open "Q_カテゴリ WHERE 分類 like '%A%'" だと、エラーにならないのですが、抽出もされずに全レコードが対象になってしまいます。 しかし、 rs.Open "T_カテゴリ WHERE 分類 like '%A%'" にすれば、抽出された後のレコード数が取得されます。 エラーにならない事から、オブジェクトは存在してる事は確かなはずですが なぜかフィルタできません。 なぜでしょうか?

このQ&Aのポイント
  • シャープアクオス用リモコン(ERC-TV02)を設定して作動するのですが、一旦電源を切ると再び作動しなくなる問題が発生しています。
  • この問題の解決方法についてご教授ください。
  • エレコム株式会社の製品についての質問です。
回答を見る

専門家に質問してみよう