お世話になります。
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
--------中略(解放処理)---------------
以下、ヘルプより抜粋
RecordCountプロパティを使用すると、RecordsetオブジェクトやTableDefオブジェクトで
アクセスされたレコード数を調べることができます。
ダイナセットタイプ、スナップショットタイプ、または前方スクロール タイプの
Recordsetオブジェクトのレコード数は、すべてのレコードがアクセスされるまでは
RecordCountプロパティを調べてもわかりません。
すべてのレコードがアクセスされると、RecordCountプロパティは、Recordsetオブジェクトや
TableDef オブジェクトの削除されていないレコードの総数を示します。
強制的に最後のレコードにアクセスするには、Recordsetオブジェクトに対して
MoveLastメソッドを使用します。
おまけ
http://www.ylw.mmtr.or.jp/~itcarrot/vbscriptsql/dao_excel_05.html
[エクスパート望月宏一のAccess相談室]
http://www.canalian.com/DenRe/
Vol.3 に、今回の現象(RecordCountの件数)の解説と対処法が載っています。
無事、出力されました。
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
--------中略(解放処理)---------------