Übersicht über den Microsoft-Cursordienst für OLE DB

Der Microsoft-Cursordienst für OLE DB ergänzt die Cursorunterstützungsfunktionen von Datenanbietern. Für den Benutzer wirkt die Funktionalität daher bei allen Datenanbietern relativ einheitlich.

Der Cursordienst stellt dynamische Eigenschaften zur Verfügung und verbessert das Verhalten bestimmter Methoden. Beispielsweise ermöglicht die dynamische Optimize-Eigenschaft die Erstellung temporärer Indizes, um bestimmte Vorgänge wie die Find-Methode zu unterstützen.

Der Cursordienst bietet in allen Fällen Unterstützung für die Batchaktualisierung. Zudem simuliert er leistungsfähigere Cursortypen (z. B. dynamische Cursor), wenn ein Datenanbieter nur Cursor mit geringerer Leistung (z. B. statische Cursor) bereitstellen kann.

Schlüsselwort

Zum Aufrufen dieser Dienstkomponente legen Sie die CursorLocation-Eigenschaft des Recordset- oder Connection-Objekts auf adUseClient fest.

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

Dynamische Eigenschaften

Wenn der Cursordienst für OLE DB aufgerufen wird, werden der Properties-Sammlung des Recordset-Objekts die folgenden dynamischen Eigenschaften hinzugefügt. Die vollständige Liste der dynamischen Eigenschaften der Connection- und Recordset-Objekte finden Sie unter ADO – Index für dynamische Eigenschaften. Die entsprechenden OLE DB-Eigenschaftsnamen sind, sofern hilfreich, in Klammern nach dem ADO-Eigenschaftsnamen angegeben.

Nachdem der Cursordienst aufgerufen wurde, sind Änderungen an einigen dynamischen Eigenschaften nicht für die zugrunde liegende Datenquelle sichtbar. Wenn Sie beispielsweise die CommandTimeout-Eigenschaft für ein Recordset festlegen, ist dies für den zugrunde liegenden Datenanbieter nicht sichtbar.


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

Falls Ihre Anwendung den Cursordienst erfordert, Sie aber dynamische Eigenschaften für den zugrunde liegenden Anbieter festlegen müssen, legen Sie die Eigenschaften vor dem Aufrufen des Cursordiensts fest. Eigenschafteneinstellungen für ein Command-Objekt werden unabhängig von der Cursorposition immer an den zugrunde liegenden Datenanbieter übergeben. Daher können Sie die Eigenschaften auch jederzeit mithilfe eines Command-Objekts festlegen.

Hinweis

Die dynamische Eigenschaft DBPROP_SERVERDATAONINSERT wird vom Cursordienst nicht unterstützt, auch wenn sie vom zugrunde liegenden Datenanbieter unterstützt wird.

Eigenschaftenname Beschreibung
Automatische Neuberechnung (DBPROP_ADC_AUTORECALC) Bei Recordsets, die mit dem Datenstrukturierungsdienst erstellt wurden, gibt dieser Wert an, wie oft berechnete und aggregierte Spalten berechnet werden. Beim Standardwert (Wert = 1) erfolgt immer dann eine Neuberechnung, wenn der Datenstrukturierungsdienst ermittelt, dass sich die Werte geändert haben. Wenn der Wert 0 ist, werden die berechneten oder aggregierten Spalten nur bei der anfänglichen Erstellung der Hierarchie berechnet.
Batchgröße (DBPROP_ADC_BATCHSIZE) Gibt die Anzahl von UPDATE-Anweisungen an, die im Batch verarbeitet werden können, bevor sie an den Datenspeicher gesendet werden. Je mehr Anweisungen ein Batch enthält, desto weniger Roundtrips zum Datenspeicher werden ausgeführt.
Zwischenspeichern untergeordneter Zeilen (DBPROP_ADC_CACHECHILDROWS) Bei Recordsets, die mit dem Datenstrukturierungsdienst erstellt wurden, gibt dieser Wert an, ob untergeordnete Recordsets zur späteren Verwendung in einem Cache gespeichert werden.
Version der Cursor-Engine (DBPROP_ADC_CEVER) Gibt die verwendete Version des Cursordiensts an.
Änderungsstatus beibehalten (DBPROP_ADC_MAINTAINCHANGESTATUS) Gibt den Text des Befehls an, der zum erneuten Synchronisieren einer oder mehrerer Zeilen in einem Join mehrerer Tabellen verwendet wird.
Optimieren Gibt an, ob ein Index erstellt werden soll. Der Wert True autorisiert die temporäre Erstellung von Indizes, um die Ausführung bestimmter Vorgänge zu verbessern.
Name neugestalten Gibt den Namen des Recordsets an. Auf den Namen kann im aktuellen oder nachfolgenden Befehl oder in Datenstrukturierungsbefehlen verwiesen werden.
Resync-Befehl Gibt eine benutzerdefinierte Befehlszeichenfolge an, die von der Resync-Methode verwendet wird, wenn die UniqueTable-Eigenschaft wirksam ist.
Eindeutiger Katalog Gibt den Namen der Datenbank mit der Tabelle an, auf die die UniqueTable-Eigenschaft verweist.
Eindeutiges Schema Gibt den Namen des Besitzers der Tabelle an, auf die die UniqueTable-Eigenschaft verweist.
Eindeutige Tabelle Gibt den Namen der Tabelle in einem Recordset an, die aus mehreren Tabellen erstellt wurde und durch Einfügungen, Aktualisierungen oder Löschungen geändert werden kann.
Kriterien aktualisieren (DBPROP_ADC_UPDATECRITERIA) Gibt an, welche Felder in der WHERE-Klausel verwendet werden, um Konflikte zu behandeln, die während einer Aktualisierung auftreten.
Neusynchronisierung aktualisieren (DBPROP_ADC_UPDATERESYNC) Gibt an, ob die Resync-Methode implizit nach der UpdateBatch-Methode aufgerufen wird (und bestimmt ihr Verhalten), wenn die UniqueTable-Eigenschaft wirksam ist.

Sie können eine dynamische Eigenschaft auch festlegen oder abrufen, indem Sie ihren Namen als Index für die Properties-Sammlung angeben. Verwenden Sie beispielsweise den folgenden Befehl, um den aktuellen Wert der dynamischen Optimize-Eigenschaft abzurufen und auszugeben und dann einen neuen Wert festzulegen:

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

Verhalten von integrierten Eigenschaften

Der Cursordienst für OLE DB wirkt sich auch auf das Verhalten bestimmter integrierter Eigenschaften aus.

Eigenschaftenname Beschreibung
CursorType Ergänzt die Cursortypen, die für ein Recordset verfügbar sind.
LockType Ergänzt die Sperrentypen, die für ein Recordset verfügbar sind. Aktiviert Batchaktualisierungen.
Sort Gibt einen oder mehrere Feldnamen, nach denen das Recordset sortiert wird, sowie die Sortierreihenfolge (auf- oder absteigend) der einzelnen Felder an.

Methodenverhalten

Der Cursordienst für OLE DB aktiviert oder beeinflusst das Verhalten der Append-Methode des Field-Objekts sowie die Methoden Open, Resync, UpdateBatch und Save des Recordset-Objekts.