• ベストアンサー

Recordcountについて

ACCESS97を使用しています。 テーブルAの項目1の中で、テキスト1に入力した値をキーに SELECTし そのデータ件数を知りたいのです。 しかし、下記のようにすると、0件の時はintcountは 0 になるのですが 1以上の場合、複数でも intcountは 1になります。 1件と 2件以上が区別できません。 何故でしょうか? Set db = CurrentDb() strSQL = "SELECT * FROM テーブルA WHERE " strSQL = strSQL + "項目1='" & Me.テキスト1 & "';" Set RS1 = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) intcount = RS1.RecordCount If (intcount = 0) Then Me.テキスト2 = "使用無し" ElseIf (intcount = 1) Then Me.テキスト2 = "1件使用" ElseIf (intcount > 1) Then Me.テキスト2 = "複数使用" End If

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

  • ベストアンサー
  • mam_00
  • ベストアンサー率50% (5/10)
回答No.2

こんばんは。 さて、私も cdma様 と同じ経験をしたことがあります。 ヘルプを見ると、RecordCountプロパティーは、正確にはレコードの件数ではありません。検索したレコードの件数らしいのです。 さて、どうするかですが、 RecordCountプロパティーを見る前に、MoveFirstとMoveLastを使えばよいのです。      -略- Set RS1 = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) RS1.MoveFirst RS1.MoveLast intcount = RS1.RecordCount      -略- こうすれば確実にレコード数を取得できると思います。 よろしくお願いします。

cdma
質問者

お礼

ありがとうございました。 上手く行きました

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 あんまり詳しくないのですが、、、 Set RS1 = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) '↓これを入れる If Not RS1.EOF Then RS1.MoveLast intcount = RS1.RecordCount で良いかと思います。 RecordCountプロパティのヘルプよれば「ダイナセット タイプ、スナップショット タイプ、または前方スクロール タイプのRecordset オブジェクトのレコード数は、すべてのレコードがアクセスされるまでは RecordCount プロパティを調べてもわかりません。」

関連するQ&A