Recordset.recordcount(DAO-mdb)

解決


TETE  2005-04-07 14:36:10  No: 120745  IP: [192.*.*.*]

お世話になります。

DAOでmdbファイルに接続しておりまして、レコードの総件数を出力しているのですが、なぜか、1件になります。実際には、20000件程度あるのですが...
AccessのSQLビューに、同じSQL文を入力すると、ちゃんと表示するんですが、
VBで操作すると1件...

どなたか、対処方法をご存知の方、教えてください。

----------中略------------------
Dim DBase As DAO.Database
Dim RecSet As DAO.Recordset
Dim strSQL AS String
Dim hogehoge AS Integer

strSQL = "SELECT * FROM hoge"

Set DBase = DBEngine.Workspaces(0).OpenDatabase(DBPath, True, True)
Set RecSet = DBase.OpenRecordset(strSQL)

hogehoge = Recset.recordcount
--------中略(解放処理)---------------

編集 削除
LESIA  2005-04-07 14:54:25  No: 120746  IP: [192.*.*.*]

以下、ヘルプより抜粋
RecordCountプロパティを使用すると、RecordsetオブジェクトやTableDefオブジェクトで
アクセスされたレコード数を調べることができます。
ダイナセットタイプ、スナップショットタイプ、または前方スクロール タイプの
Recordsetオブジェクトのレコード数は、すべてのレコードがアクセスされるまでは
RecordCountプロパティを調べてもわかりません。
すべてのレコードがアクセスされると、RecordCountプロパティは、Recordsetオブジェクトや
TableDef オブジェクトの削除されていないレコードの総数を示します。
強制的に最後のレコードにアクセスするには、Recordsetオブジェクトに対して
MoveLastメソッドを使用します。

おまけ
http://www.ylw.mmtr.or.jp/~itcarrot/vbscriptsql/dao_excel_05.html

編集 削除
魔界の仮面弁士  2005-04-07 15:07:23  No: 120747  IP: [192.*.*.*]

[エクスパート望月宏一のAccess相談室]
http://www.canalian.com/DenRe/


Vol.3 に、今回の現象(RecordCountの件数)の解説と対処法が載っています。

編集 削除
TETE  2005-04-07 15:21:51  No: 120748  IP: [192.*.*.*]

無事、出力されました。
LESIA様、ありがとうございます。

----------中略------------------
Dim DBase As DAO.Database
Dim RecSet As DAO.Recordset
Dim strSQL AS String
Dim hogehoge AS Integer

strSQL = "SELECT * FROM hoge"

Set DBase = DBEngine.Workspaces(0).OpenDatabase(DBPath, True, True)
Set RecSet = DBase.OpenRecordset(strSQL)

Recset.Movelast   '←追加

hogehoge = Recset.recordcount
--------中略(解放処理)---------------

編集 削除