• ベストアンサー

VB+SQLserverでRecordCount問題

こんばんわ。 VBでMSのSQLサーバに接続しデータをコピーするメンテナンスツールを作っています。 通常、レコードカウントを取得できますが、主キーが設定されていないテーブルの場合、RecordCountが「-1」になります。 このテーブルに主キーを設定しますとちゃんと取得します。 主キーが設定されていない状態で正確にRecordCountを取得する方法はないんでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
noname#5584
noname#5584
回答No.2

使用するOLEDBプロバイダにより、カーソルロケーションが adUseServer ではRecordCountプロパティが正しい値を返さない場合があるはずです。 この場合、adUseClient とすれば、正しい件数を取得できると思います。 しかし、そもそも、件数を取得するだけなら、SQLの集計関数を使用し、 SELCT COUNT (*) としたほうが、オーバーヘッドがはるかに少なくて済みます。 ですので、レコードセットのRecordCountプロパティを参照する方法は一般に推奨されません。 ( DAO.Recordsetの場合、MoveLastしないと、RecordCountプロパティで正しい件数を取得できない、という問題もあります )

zenon55
質問者

お礼

こんばんは。 SELCT COUNT (*)でやりました。 アドバイスを元にいろいろやってみましたがこの方法が一番スマートに思えました。 有難う御座いました。

その他の回答 (1)

回答No.1

自分もこのような現象に悩んだことがあります。 確か,DAOで書いていたものをADOに書き換えた際におこりました。 そのときは,主キーのことまでは頭が回らずに,ORDER BYでソートするとカウントされる場合もありましたが,件数が取得できたり,できなかったり,まちまちなので,結局,レコードセットを全て読んで,変数に件数を入れて件数を取得するという方法を使いました。

関連するQ&A