小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

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