次の方法で共有


Microsoft Cursor Service for OLE DB (ADO サービス コンポーネント)

適用先: Access 2013、Office 2013

Microsoft Cursor Service for OLE DB は、データ プロバイダーのカーソル サポート機能を補完します。 その結果、すべてのデータ プロバイダーで機能の統一感が向上します。

Cursor Service は、動的プロパティを利用可能にして特定のメソッドの動作を拡張します。 たとえば、動的プロパティ Optimize を使用すると、一時インデックスの作成が可能になり、 Find メソッドなどの特定の操作が容易になります。

Cursor Service を使用すると、あらゆる場合にバッチ更新が実行できるようになります。 また、静的カーソルのみを提供するデータ プロバイダーでも、動的カーソルなどの、より機能的なカーソルを模擬的に利用できるようにします。

Keyword

このサービス コンポーネントを呼び出すには、Recordset オブジェクトまたは Connection オブジェクトの CursorLocation プロパティを adUseClient に設定します。

connection.CursorLocation=adUseClientrecordset.CursorLocation=adUseClient

動的プロパティ

Cursor Service for OLE DB を呼び出すと、次に示す動的プロパティが Recordset オブジェクトの Properties コレクションに追加されます。 Connection オブジェクトおよび Recordset オブジェクトのすべての動的プロパティの一覧については、「 ADO の動的プロパティ インデックス」を参照してください。 対応する OLE DB プロパティ名がある場合は、ADO プロパティ名の後にかっこで囲んで示しています。

Cursor Service を呼び出した後、動的プロパティを変更しても、基になるデータ ソースで認識されない場合があります。 たとえば、RecordsetCommand Time out プロパティを設定しても、基になるデータ プロバイダーには認識されません。

... 
Recordset1.CursorLocation = adUseClient 'invokes cursor service 
Recordset1.Open "authors", _ 
 "Provider=SQLOLEDB;Data Source=DBServer;User Id=usr;" & _ 
 "Password=pwd;Initial Catalog=pubs;",,adCmdTable 
Recordset1.Properties.Item("Command Time out") = 50 
' 'Command Time out' property on DBServer is still default (30). 
... 

アプリケーションが Cursor Service を必要とし、基になるプロバイダーの動的プロパティを設定する必要がある場合は、Cursor Service を呼び出す前に動的プロパティを設定します。 コマンド オブジェクトのプロパティの設定値は、カーソルの位置に関係なく、常に基になるデータ プロバイダーに渡されます。 したがって、いつでも、コマンド オブジェクトを使用してプロパティを設定することもできます。

注:

動的プロパティ DBPROP_SERVERDATAONINSERT は、基になるデータ プロバイダーでサポートされている場合でも、カーソル サービスではサポートされません。

プロパティ名

説明

Auto Recalc
(DBPROP_ADC_AUTORECALC)

Data Shaping Service で作成されたレコードセットの場合、この値は計算列および集計列の計算頻度を示します。 既定値 (1) の場合は、Data Shaping Service で値の変更が確認されるたびに再計算が行われます。 この値が 0 の場合は、階層が最初に構築されたときにのみ計算列または集計列が計算されます。

Batch Size
(DBPROP_ADC_BATCHSIZE)

データ ストアに送信するまでにバッチ処理できる更新ステートメントの数を示します。 1 回のバッチ処理に含めるステートメント数が多いほど、データ ストアとのやり取りの回数が少なくなります。

Cache Child Rows
(DBPROP_ADC_CACHECHILDROWS)

Data Shaping Service で作成されたレコードセットの場合、この値は、子レコードセットを後で使用できるようにキャッシュに保存しておくかどうかを示します。

Cursor Engine Version
(DBPROP_ADC_CEVER)

使用する Cursor Service のバージョンを示します。

Maintain Change Status
(DBPROP_ADC_MAINTAINCHANGESTATUS)

複数のテーブルの結合で、行を再同期化するために使用するコマンドのテキストを示します。

最適化

インデックスを作成するかどうかを示します。 True に設定すると、特定の操作の実行速度を向上させるために一時的なインデックスの作成が許可されます。

Reshape Name

Recordset の名前を示します。 現在またはそれ以降のデータ シェイプ コマンドで参照される場合があります。

Resync Command

Unique Table プロパティが有効である場合に、Resync メソッドで使用されるカスタム コマンド文字列を示します。

Unique Catalog

Unique Table プロパティで参照されるテーブルを格納しているデータベースの名前を示します。

Unique Schema

Unique Table プロパティで参照されるテーブルの所有者の名前を示します。

Unique Table

挿入、更新、または削除によって変更された可能性がある複数のテーブルから作成された Recordset 内の 1 つのテーブル名を示します。

Update Criteria
(DBPROP_ADC_UPDATECRITERIA)

更新時に発生する競合の処理に使用される WHERE 句のフィールドを示します。

Update Resync(DBPROP_ADC_UPDATERESYNC)

Unique Table プロパティが有効である場合に、UpdateBatch メソッド (およびその動作) の後に、Resync メソッドを暗黙に呼び出すかどうかを示します。

動的プロパティの名前を Properties コレクションのインデックスとして指定して、動的プロパティを設定または取得することもできます。 たとえば、Optimize 動的プロパティの値を取得して出力した後、新しい値を設定するには、次のように指定します。

 
Debug.Print rs.Properties("Optimize") 
rs.Properties("Optimize") = True 

組み込みプロパティの動作

Cursor Service for OLE DB は、特定の組み込みプロパティの動作にも影響を与えます。

プロパティ名

説明

CursorType

Recordset で利用可能なカーソルの種類を補完します。

Locktype

Recordset で利用可能なロックの種類を補完します。 一括更新を可能にします。

Sort

Recordset の並べ替えに使用するフィールド名、および各フィールドの並べ替え順序が昇順か降順かを指定します。

メソッドの動作

Cursor Service for OLE DB は、Field オブジェクトの Append メソッドや、Recordset オブジェクトの Open メソッド、Resync メソッド、UpdateBatch メソッド、および Save メソッドにも影響を与えます。