VB.NET MSDEでレコード数を取得するには?


ゴメス  2005-06-15 04:32:05  No: 122657

お疲れ様です。
VB.NET、MSDEを用い、SQLのSELECT COUNT(*)でレコード件数を
取得したいのですが、

Dim rec As New ADODB.Recordset
Dim intCount as Integer

select count(*) from table where col = xxxx

intCount = rec.RecordCount

とすると、必ず取得結果が-1となってしまいます。
ヘルプをみますと、プロバイダがサポートしていない場合、
必ず-1が返るとあるのですが、他に何かレコード件数を
取得する上手い方法はないものでしょうか?

お忙しいところ申し訳ありませんが、ご教授お願いいたします。


魔界の仮面弁士  2005-06-15 04:49:31  No: 122658

どのようにして、Recordsetを作成しましたか?
具体的なコードを提示してください。

Recordset は、CursortLocation / CursorType / LockType によって、
その性質を変化させる事に注意してください。

たとえば、Connection.Execute メソッドで取得した Recordset は、
CursorType = adOpenForwardOnly というモードになります。
adOpenForwardOnly とは、高速化のため、『現在行』だけを保持し、
他の行の情報を取得しないモードです。現在行しかわからないので、
全体の行数も不明です。すなわち、RecordCount = -1 ですね。

RecordCount を使いたい場合には、adOpenKeyset、または adOpenStatic を
指定すれば OK のはずです。試してみてください。

なお、CursorType にはもう一つ、adOpenDynamic というモードがありますが、
これは使わない方が良いでしょう。高機能なのですが、扱いが難しいので。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加