- ベストアンサー
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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 さて、私も cdma様 と同じ経験をしたことがあります。 ヘルプを見ると、RecordCountプロパティーは、正確にはレコードの件数ではありません。検索したレコードの件数らしいのです。 さて、どうするかですが、 RecordCountプロパティーを見る前に、MoveFirstとMoveLastを使えばよいのです。 -略- Set RS1 = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) RS1.MoveFirst RS1.MoveLast intcount = RS1.RecordCount -略- こうすれば確実にレコード数を取得できると思います。 よろしくお願いします。
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 あんまり詳しくないのですが、、、 Set RS1 = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) '↓これを入れる If Not RS1.EOF Then RS1.MoveLast intcount = RS1.RecordCount で良いかと思います。 RecordCountプロパティのヘルプよれば「ダイナセット タイプ、スナップショット タイプ、または前方スクロール タイプのRecordset オブジェクトのレコード数は、すべてのレコードがアクセスされるまでは RecordCount プロパティを調べてもわかりません。」
お礼
ありがとうございました。 上手く行きました