Panoramica del servizio cursore Microsoft per OLE DB

Il servizio cursore Microsoft per OLE DB integra le funzioni di supporto dei cursori dei provider di dati. Di conseguenza, l'utente percepirà funzionalità relativamente uniformi da tutti i provider di dati.

Il servizio cursore rende disponibili le proprietà dinamiche e migliora il comportamento di determinati metodi. Ad esempio, la proprietà dinamica Optimize consente la creazione di indici temporanei per facilitare determinate operazioni, ad esempio il metodo Find.

Il servizio cursore abilita il supporto per l'aggiornamento batch in tutti i casi. Simula inoltre tipi di cursore più idonei, ad esempio i cursori dinamici, quando un provider di dati può fornire solo cursori meno idonei, ad esempio cursori statici.

Parola chiave

Per richiamare questo componente del servizio, impostare la proprietà CursorLocation dell'oggetto Recordset o Connection su adUseClient.

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

Proprietà dinamiche

Quando il servizio cursore OLE DB viene richiamato, le proprietà dinamiche seguenti vengono aggiunte alla raccolta Properties dell'oggetto Recordset. L'elenco completo delle proprietà dinamiche degli oggetti Connection e Recordset è elencato in ADO Dynamic Property Index. I nomi OLE DB proprietà, dove appropriato, sono inclusi tra parentesi dopo il nome della proprietà ADO.

Le modifiche ad alcune proprietà dinamiche non sono visibili all'origine dati sottostante dopo che è stato richiamato il servizio cursore. Ad esempio, l'impostazione della proprietà Timeout comando in un recordset non sarà visibile al provider di dati sottostante.


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).

Se l'applicazione richiede il servizio cursore, ma è necessario impostare proprietà dinamiche nel provider sottostante, impostare le proprietà prima di richiamare il servizio cursore. Le impostazioni delle proprietà dell'oggetto Comando vengono sempre passate al provider di dati sottostante indipendentemente dalla posizione del cursore. Pertanto, è anche possibile usare un oggetto comando per impostare le proprietà in qualsiasi momento.

Nota

La proprietà dinamica DBPROP_SERVERDATAONINSERT non è supportata dal servizio cursore, anche se è supportata dal provider di dati sottostante.

Nome proprietà Descrizione
Ricalcolo automatico (DBPROP_ADC_AUTORECALC) Per i recordset creati con il servizio data shaping, questo valore indica la frequenza con cui vengono calcolate le colonne calcolate e di aggregazione. Il valore predefinito (value=1) è ricalcolare ogni volta che il servizio data shaping determina che i valori sono stati modificati. Se il valore è 0, le colonne calcolate o di aggregazione vengono calcolate solo quando la gerarchia viene compilata inizialmente.
Dimensioni batch (DBPROP_ADC_BATCHSIZE) Indica il numero di istruzioni di aggiornamento che è possibile inviare in batch prima di essere inviate all'archivio dati. Maggiore è il numero di istruzioni in un batch, minore è il numero di round trip all'archivio dati.
Memorizzare nella cache le righe figlio (DBPROP_ADC_CACHECHILDROWS) Per i recordset creati con il servizio data shaping, questo valore indica se i recordset figlio vengono archiviati in una cache per un uso successivo.
Versione del motore di cursore (DBPROP_ADC_CEVER) Indica la versione del servizio cursore in uso.
Mantenere lo stato delle modifiche (DBPROP_ADC_MAINTAINCHANGESTATUS) Indica il testo del comando utilizzato per risincronizzare una o più righe in un join a più tabelle.
Optimize (Ottimizza) Indica se è necessario creare un indice. Se impostato su True, autorizza la creazione temporanea di indici per migliorare l'esecuzione di determinate operazioni.
Nome rimodella Indica il nome dell'oggetto Recordset. È possibile fare riferimento all'interno dei comandi di data shaping correnti o successivi.
Comando risincronizzazione Indica una stringa di comando personalizzata usata dal metodo Resync quando la proprietà Unique Table è impostata.
Catalogo univoco Indica il nome del database contenente la tabella a cui si fa riferimento nella proprietà Tabella univoca.
Schema univoco Indica il nome del proprietario della tabella a cui si fa riferimento nella proprietà Tabella univoca.
tabella univoca Indica il nome di una tabella in un recordset creato da più tabelle che possono essere modificate da inserimenti, aggiornamenti o eliminazioni.
Criteri di aggiornamento (DBPROP_ADC_UPDATECRITERIA) Indica quali campi nella clausola WHERE vengono usati per gestire le collisioni che si verificano durante un aggiornamento.
Aggiorna risincronizzazione (DBPROP_ADC_UPDATERESYNC) Indica se il metodo Resync viene richiamato in modo implicito dopo il metodo UpdateBatch (e il relativo comportamento), quando la proprietà Unique Table è in vigore.

È anche possibile impostare o recuperare una proprietà dinamica specificandone il nome come indice nella raccolta Properties. Ad esempio, ottenere e stampare il valore corrente della proprietà dinamica Optimize, quindi impostare un nuovo valore, come indicato di seguito:

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

Comportamento predefinito delle proprietà

Il servizio cursore OLE DB influisce anche sul comportamento di alcune proprietà predefinite.

Nome proprietà Descrizione
Cursortype Integra i tipi di cursori disponibili per un recordset.
Locktype Integra i tipi di blocchi disponibili per un recordset. Abilita gli aggiornamenti batch.
Sort Specifica uno o più nomi di campo in base ai quali è ordinato il recordset e se ogni campo è ordinato in ordine crescente o decrescente.

Comportamento del metodo

Il servizio cursore per OLE DB abilita o influisce sul comportamento del metodo Append dell'oggetto Field. e i metodi Open, Resync, UpdateBatche Save dell'oggetto Recordset.