ADOでのクライアント側カーソルとサーバー側カーソル
たとえば、selectしたレコード数を求めるには、以下のコードのようになります。
my $rs = Win32:OLE->new("ADODB.Recordset"); # RecordCountを返すようにする $rs->{CursorLocation} = adUseClient;
CursorLocationプロパティにadUseClient(クライアント側カーソル)を設定すると
ADOは、Cursor Serviceを起動し、取得したデータをクライアント側に持ちます。
そして、そのデータによってRecordCountプロパティにレコード数が設定されます。
一方、CursorLocationプロパティにadUseServer(サーバー側カーソル)を設定すると
ADOは、Cursor Serviceを起動せず、したがって、クライアント側にデータは、ありません。
よって、RecordCountプロパティにレコード数が設定されません。
尚、CursorLocationプロパティのデフォルト値もadUseServerです。
参考:
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_2.aspx