8

私のMSAccessDBでは、2つのレコードを返す必要があるクエリをVBで実行しています。SQLで実行すると2つのレコードが取得されますが、VBAから実行すると2つのレコードが取得されます。2つのレコードを取得するSQLビューのコードは次のとおりです。

SELECT *
FROM tblWebMeetingData
WHERE [Last Name] LIKE 'Marx';

そして、私がこれをVBAで次のように呼び出すと、次のようになります。

SQL = "SELECT * FROM tblWebMeetingData WHERE [Last Name] LIKE 'Marx';"
Set rst = CurrentDb.OpenRecordset(SQL)  
MsgBox ("Number of records: " & rst.RecordCount)

レコード数に対して1つのレコードを取得します。レコードカウントは、SQLステートメントまたはテーブルから返されたすべてのレコードをカウントすることを想定していませんか?私がここで間違っているのは何ですか?

ありがとう

4

3 に答える 3

25

DAO は、最も単純なクエリを除いて、結果セット全体を一度に取得するわけではありません (パフォーマンスの最適化)。完全な取得と有効なレコード数を強制する rst.MoveLastには、レコードセットを開いた後、取得する前に使用しますrst.RecordCOunt

于 2013-03-10T12:05:14.760 に答える