お疲れ様です。
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が返るとあるのですが、他に何かレコード件数を
取得する上手い方法はないものでしょうか?
お忙しいところ申し訳ありませんが、ご教授お願いいたします。
どのようにして、Recordsetを作成しましたか?
具体的なコードを提示してください。
Recordset は、CursortLocation / CursorType / LockType によって、
その性質を変化させる事に注意してください。
たとえば、Connection.Execute メソッドで取得した Recordset は、
CursorType = adOpenForwardOnly というモードになります。
adOpenForwardOnly とは、高速化のため、『現在行』だけを保持し、
他の行の情報を取得しないモードです。現在行しかわからないので、
全体の行数も不明です。すなわち、RecordCount = -1 ですね。
RecordCount を使いたい場合には、adOpenKeyset、または adOpenStatic を
指定すれば OK のはずです。試してみてください。
なお、CursorType にはもう一つ、adOpenDynamic というモードがありますが、
これは使わない方が良いでしょう。高機能なのですが、扱いが難しいので。
ツイート | ![]() |