Oggetto Recordset (ADO)

Rappresenta l'intero set di record di una tabella di base o i risultati di un comando eseguito. In qualsiasi momento, l'oggetto Recordset fa riferimento solo a un singolo record all'interno del set come record corrente.

Commenti

Si usano gli oggetti Recordset per modificare i dati da un provider. Quando si usa ADO, si modificano quasi completamente i dati usando oggetti Recordset . Tutti gli oggetti Recordset sono costituiti da record (righe) e campi (colonne). A seconda della funzionalità supportata dal provider, alcuni metodi o proprietà Recordset potrebbero non essere disponibili.

ADODB. Recordset è il ProgID che deve essere usato per creare un oggetto Recordset . Applicazioni esistenti che fanno riferimento all'ADOR obsoleto. Recordset ProgID continuerà a funzionare senza ricompilazione, ma il nuovo sviluppo dovrebbe fare riferimento ad ADODB. Recordset.

Esistono quattro tipi di cursore diversi definiti in ADO:

  • Cursore dinamico Consente di visualizzare aggiunte, modifiche ed eliminazioni da parte di altri utenti; consente a tutti i tipi di spostamento attraverso il Recordset che non si basa sui segnalibri; e consente i segnalibri se il provider li supporta.

  • Cursore del set di tasti Si comporta come un cursore dinamico, ad eccezione del fatto che impedisce di visualizzare i record aggiunti da altri utenti e impedisce l'accesso ai record eliminati da altri utenti. Le modifiche ai dati da parte di altri utenti saranno comunque visibili. Supporta sempre i segnalibri e consente quindi tutti i tipi di spostamento tramite recordset.

  • Cursore statico Fornisce una copia statica di un set di record da usare per trovare dati o generare report; consente sempre i segnalibri e quindi consente tutti i tipi di spostamento tramite l'oggetto Recordset. Le aggiunte, le modifiche o le eliminazioni da parte di altri utenti non saranno visibili. Si tratta dell'unico tipo di cursore consentito quando si apre un oggetto Recordset lato client.

  • Cursore solo in avanti Consente di scorrere verso l'avanti solo il recordset. Le aggiunte, le modifiche o le eliminazioni da parte di altri utenti non saranno visibili. Ciò migliora le prestazioni in situazioni in cui è necessario eseguire un solo passaggio attraverso un oggetto Recordset.

Impostare la proprietà CursorType prima di aprire l'oggetto Recordset per scegliere il tipo di cursore oppure passare un argomento CursorType con il metodo Open . Alcuni provider non supportano tutti i tipi di cursore. Controllare la documentazione per il provider. Se non si specifica un tipo di cursore, ADO apre un cursore solo in avanti per impostazione predefinita.

Se la proprietà CursorLocation è impostata su adUseClient per aprire un oggetto Recordset, la proprietà UnderlyingValue sugli oggetti Field non è disponibile nell'oggetto Recordset restituito. Quando viene usato con alcuni provider,ad esempio il provider ODBC Microsoft per OLE DB in combinazione con Microsoft SQL Server, è possibile creare oggetti Recordset indipendentemente da un oggetto Connection definito in precedenza passando una stringa di connessione con il metodo Open. ADO crea ancora un oggetto Connection , ma non assegna tale oggetto a una variabile di oggetto. Tuttavia, se si aprono più oggetti Recordset sulla stessa connessione, è necessario creare e aprire in modo esplicito un oggetto Connection ; questo assegna l'oggetto Connection a una variabile oggetto. Se questa variabile di oggetto non viene usata durante l'apertura degli oggetti Recordset , ADO crea un nuovo oggetto Connection per ogni nuovo oggetto Recordset, anche se si passa la stessa stringa di connessione.

È possibile creare tutti gli oggetti Recordset necessari.

Quando si apre un oggetto Recordset, il record corrente viene posizionato nel primo record (se presente) e le proprietà BOF e EOF vengono impostate su False. Se non sono presenti record, le impostazioni delle proprietà BOF e EOF sono True.

È possibile usare i metodi MoveFirst, MoveLast, MoveNext e MovePrevious; metodo Move; e le proprietà AbsolutePosition, AbsolutePage e Filter per riposizionare il record corrente, presupponendo che il provider supporti la funzionalità pertinente. Gli oggetti Recordset forward-only supportano solo il metodo MoveNext . Quando si usano i metodi Move per visitare ogni record (o enumerare l'oggetto Recordset), è possibile usare le proprietà BOF e EOF per determinare se si è spostati oltre l'inizio o la fine del recordset.

Prima di usare qualsiasi funzionalità di un oggetto Recordset , è necessario chiamare il metodo Support nell'oggetto per verificare che la funzionalità sia supportata o disponibile. Non è necessario usare la funzionalità quando il metodo Support restituisce false. Ad esempio, è possibile usare il metodo MovePrevious solo se Recordset.Supports(adMovePrevious) restituisce True. In caso contrario, verrà visualizzato un errore, perché l'oggetto Recordset potrebbe essere stato chiuso e la funzionalità di cui è stato eseguito il rendering non è disponibile nell'istanza. Se una funzionalità a cui si è interessati non è supportata, il supporto restituirà anche false. In questo caso, è consigliabile evitare di chiamare la proprietà o il metodo corrispondente nell'oggetto Recordset .

Gli oggetti Recordset possono supportare due tipi di aggiornamento: immediato e batch. Nell'aggiornamento immediato, tutte le modifiche ai dati vengono scritte immediatamente nell'origine dati sottostante dopo aver chiamato il metodo Update . È anche possibile passare matrici di valori come parametri con i metodi AddNew e Update e aggiornare simultaneamente diversi campi in un record.

Se un provider supporta l'aggiornamento batch, è possibile modificare la cache del provider in più record e quindi trasmetterli in una singola chiamata al database con il metodo UpdateBatch . Ciò si applica alle modifiche apportate con i metodi AddNew, Update e Delete . Dopo aver chiamato il metodo UpdateBatch , è possibile usare la proprietà Status per verificare eventuali conflitti di dati per risolverli.

Nota

Per eseguire una query senza usare un oggetto Command , passare una stringa di query al metodo Open di un oggetto Recordset . Tuttavia, è necessario un oggetto Command quando si vuole rendere persistente il testo del comando ed eseguirlo nuovamente oppure usare parametri di query.

La proprietà Mode regola le autorizzazioni di accesso.

L'insieme Fields è il membro predefinito dell'oggetto Recordset . Di conseguenza, le due istruzioni di codice seguenti sono equivalenti.

Debug.Print objRs.Fields.Item(0)  ' Both statements print   
Debug.Print objRs(0)              '  the Value of Item(0).  

Quando un oggetto Recordset viene passato tra processi, vengono distribuiti solo i valori del set di righe e le proprietà dell'oggetto Recordset vengono ignorate. Durante unmarshalling, il set di righe viene decompresso in un oggetto Recordset appena creato, che imposta anche le relative proprietà sui valori predefiniti.

L'oggetto Recordset è sicuro per lo scripting.

Questa sezione contiene l'argomento seguente.

Vedere anche

Oggetto Connection (ADO)
Raccolta Fields (ADO)
Raccolta Properties (ADO)
Appendice A: Provider