Oggetto Recordset (ADO)

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

Commenti

Gli oggetti Recordset vengono utilizzati per modificare i dati di un provider. Quando si usa ADO, i dati vengono manipolati quasi interamente 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. Il ProgID del recordset continuerà a funzionare senza ricompilazione, ma il nuovo sviluppo deve fare riferimento ad ADODB. Recordset.

In ADO sono definiti quattro tipi di cursore diversi:

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

  • Cursore keyset 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 di altri utenti saranno ancora visibili. Supporta sempre i segnalibri e pertanto consente tutti i tipi di spostamento tramite il 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 pertanto consente tutti i tipi di spostamento tramite il recordset. Le aggiunte, le modifiche o le eliminazioni da parte di altri utenti non saranno visibili. Questo è l'unico tipo di cursore consentito quando si apre un oggetto Recordset sul lato client.

  • Cursore forward-only Consente di scorrere in avanti solo il recordset. Le aggiunte, le modifiche o le eliminazioni da parte di altri utenti non saranno visibili. In questo modo si migliorano le prestazioni nelle situazioni in cui è necessario eseguire un solo passaggio attraverso un recordset.

Impostare la proprietà CursorType prima di aprire il recordset per scegliere il tipo di cursore o 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 forward-only per impostazione predefinita.

Se la proprietà CursorLocation è impostata su adUseClient per aprire un recordset, la proprietà UnderlyingValue negli oggetti Field non è disponibile nell'oggetto Recordset restituito. Se usato con alcuni provider, ad esempio il provider Microsoft ODBC 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 comunque un oggetto Connection, ma non lo assegna a una variabile oggetto. Tuttavia, se si aprono più oggetti Recordset sulla stessa connessione, è necessario creare e aprire in modo esplicito un oggetto Connection. in modo da assegnare l'oggetto Connection a una variabile oggetto. Se non si usa questa variabile oggetto all'apertura degli oggetti Recordset, ADO crea un nuovo oggetto Connection per ogni nuovo recordset, anche se si passa la stessa stringa di connessione.

È possibile creare tutti gli oggetti Recordset necessari.

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

È possibile usare i metodi MoveFirst, MoveLast, MoveNext e MovePrevious. il metodo Move; e le proprietà AbsolutePosition, AbsolutePagee 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 il recordset), è possibile usare le proprietà BOF ed EOF per determinare se ci si è spostati oltre l'inizio o la fine del recordset.

Prima di usare qualsiasi funzionalità di un oggetto Recordset, è necessario chiamare il metodo Supports sull'oggetto per verificare che la funzionalità sia supportata o disponibile. Non è necessario usare la funzionalità quando il metodo Supports 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à non è più disponibile nell'istanza. Se una funzionalità a cui si è interessati non è supportata, anche Supports restituirà false. In questo caso, è consigliabile evitare di chiamare la proprietà o il metodo corrispondente sull'oggetto Recordset.

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

Se un provider supporta l'aggiornamento in batch, è possibile fare in modo che le modifiche alla cache del provider riscontrino più record e quindi trasmetterle in un'unica chiamata al database con il metodo UpdateBatch. Questo vale per le modifiche apportate con i metodi AddNew, Update e Delete. Dopo aver chiamato il metodo UpdateBatch, è possibile usare la proprietà Status per verificare la presenza di 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 controlla le autorizzazioni di accesso.

La raccolta 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, viene marshalling solo dei valori del set di righe e le proprietà dell'oggetto Recordset vengono ignorate. Durante l'unmarshalling, il set di righe viene decompresso in un oggetto Recordset appena creato, che imposta anche le proprietà su 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