Recordset: bookmark e absolute position (ODBC)

Le informazioni contenute in questo argomento sono valide per le classi ODBC MFC.

Quando si passa attraverso un recordset, spesso è necessario un modo per tornare a un record specifico. Il segnalibro e la posizione assoluta di un record forniscono due metodi di questo tipo.

In questo argomento:

Segnalibri in ODBC MFC

Un segnalibro identifica in modo univoco un record. Quando si passa attraverso un recordset, non è sempre possibile basarsi sulla posizione assoluta di un record perché i record possono essere eliminati dal recordset. Il modo affidabile per tenere traccia della posizione di un record consiste nell'usare il segnalibro. La classe CRecordset fornisce funzioni membro per:

  • Recupero del segnalibro del record corrente, in modo da poterlo salvare in una variabile (GetBookmark).

  • Spostarsi rapidamente in un determinato record specificando il relativo segnalibro, salvato in precedenza in una variabile (SetBookmark).

Nell'esempio seguente viene illustrato come usare queste funzioni membro per contrassegnare il record corrente e tornare in un secondo momento:

// rs is a CRecordset or
// CRecordset-derived object

CDBVariant varRecordToReturnTo;
rs.GetBookmark( varRecordToReturnTo );

// More code in which you
// move to other records

rs.SetBookmark( varRecordToReturnTo );

Non è necessario estrarre il tipo di dati sottostante dall'oggetto CLASSE CDBVariant. Assegnare il valore con GetBookmark e tornare al segnalibro con SetBookmark.

Nota

A seconda del driver ODBC e del tipo di recordset, i segnalibri potrebbero non essere supportati. È possibile determinare facilmente se i segnalibri sono supportati chiamando CRecordset::CanBookmark. Inoltre, se i segnalibri sono supportati, è necessario scegliere in modo esplicito di implementarli specificando l'opzione CRecordset::useBookmarks nella funzione membro CRecordset::Open . È anche necessario controllare la persistenza dei segnalibri dopo determinate operazioni del recordset. Ad esempio, se si usa Requery un recordset, i segnalibri potrebbero non essere più validi. Chiamare CDatabase::GetBookmarkPersistence per verificare se è possibile chiamare SetBookmarkin modo sicuro .

Posizioni assolute in ODBC MFC

Oltre ai segnalibri, la classe CRecordset consente di impostare il record corrente specificando una posizione ordinale. Questo è detto posizionamento assoluto.

Nota

Il posizionamento assoluto non è disponibile nei recordset forward-only. Per altre informazioni sui recordset forward-only, vedere Recordset (ODBC).

Per spostare il puntatore al record corrente usando la posizione assoluta, chiamare CRecordset::SetAbsolutePosition. Quando si passa un valore a SetAbsolutePosition, il record corrispondente a tale posizione ordinale diventa il record corrente.

Nota

La posizione assoluta di un record è potenzialmente inaffidabile. Se l'utente elimina i record dal recordset, la posizione ordinale di qualsiasi record successivo viene modificata. I segnalibri sono il metodo consigliato per lo spostamento del record corrente. Per altre informazioni, vedere Segnalibri in ODBC MFC.

Per altre informazioni sulla navigazione del recordset, vedere Recordset: Scrolling (ODBC).

Vedi anche

Recordset (ODBC)