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