dポイントプレゼントキャンペーン実施中!

こんばんわ。

VBでMSのSQLサーバに接続しデータをコピーするメンテナンスツールを作っています。

通常、レコードカウントを取得できますが、主キーが設定されていないテーブルの場合、RecordCountが「-1」になります。

このテーブルに主キーを設定しますとちゃんと取得します。

主キーが設定されていない状態で正確にRecordCountを取得する方法はないんでしょうか?

宜しくお願い致します。

A 回答 (2件)

使用するOLEDBプロバイダにより、カーソルロケーションが adUseServer ではRecordCountプロパティが正しい値を返さない場合があるはずです。


この場合、adUseClient とすれば、正しい件数を取得できると思います。

しかし、そもそも、件数を取得するだけなら、SQLの集計関数を使用し、

SELCT COUNT (*)

としたほうが、オーバーヘッドがはるかに少なくて済みます。
ですので、レコードセットのRecordCountプロパティを参照する方法は一般に推奨されません。

( DAO.Recordsetの場合、MoveLastしないと、RecordCountプロパティで正しい件数を取得できない、という問題もあります )
    • good
    • 0
この回答へのお礼

こんばんは。

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

有難う御座いました。

お礼日時:2003/11/19 23:20

自分もこのような現象に悩んだことがあります。


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!