Recordset : signets et positions absolues (ODBC)
Cette rubrique s’applique aux classes ODBC MFC.
Lors de la navigation dans un jeu d’enregistrements, vous avez souvent besoin d’un moyen de revenir à un enregistrement particulier. Le signet et la position absolue d’un enregistrement fournissent deux méthodes de ce type.
Cette rubrique explique :
Signets dans ODBC MFC
Un signet identifie de façon unique un enregistrement. Lorsque vous parcourez un jeu d’enregistrements, vous ne pouvez pas toujours compter sur la position absolue d’un enregistrement, car les enregistrements peuvent être supprimés du jeu d’enregistrements. La façon fiable de suivre la position d’un enregistrement consiste à utiliser son signet. La classe CRecordset
fournit des fonctions membres pour :
Obtention du signet de l’enregistrement actif afin de pouvoir l’enregistrer dans une variable (GetBookmark).
Passer rapidement à un enregistrement donné en spécifiant son signet, que vous avez enregistré précédemment dans une variable (SetBookmark).
L’exemple suivant montre comment utiliser ces fonctions membres pour marquer l’enregistrement actif et y revenir ultérieurement :
// 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 );
Vous n’avez pas besoin d’extraire le type de données sous-jacent de l’objet CDBVariant, classe . Affectez la valeur et GetBookmark
revenez à ce signet avec SetBookmark
.
Remarque
En fonction de votre type de jeu d’enregistrements et de pilote ODBC, les signets peuvent ne pas être pris en charge. Vous pouvez facilement déterminer si les signets sont pris en charge en appelant CRecordset ::CanBookmark. En outre, si les signets sont pris en charge, vous devez choisir explicitement de les implémenter en spécifiant l’option CRecordset::useBookmarks
dans la fonction membre CRecordset ::Open . Vous devez également vérifier la persistance des signets après certaines opérations de jeu d’enregistrements. Par exemple, si vous Requery
avez un jeu d’enregistrements, les signets peuvent ne plus être valides. Appelez CDatabase ::GetBookmarkPersistence pour vérifier si vous pouvez appeler SetBookmark
en toute sécurité .
Positions absolues dans ODBC MFC
Outre les signets, la classe CRecordset
vous permet de définir l’enregistrement actif en spécifiant une position ordinale. C’est ce qu’on appelle le positionnement absolu.
Remarque
Le positionnement absolu n’est pas disponible sur les jeux d’enregistrements en avant uniquement. Pour plus d’informations sur les jeux d’enregistrements en transfert uniquement, consultez Recordset (ODBC).
Pour déplacer le pointeur d’enregistrement actuel à l’aide de la position absolue, appelez CRecordset ::SetAbsolutePosition. Lorsque vous passez une valeur à SetAbsolutePosition
, l’enregistrement correspondant à cette position ordinale devient l’enregistrement actif.
Remarque
La position absolue d’un enregistrement est potentiellement non fiable. Si l’utilisateur supprime des enregistrements du jeu d’enregistrements, la position ordinale des enregistrements suivants change. Les signets sont la méthode recommandée pour déplacer l’enregistrement actif. Pour plus d’informations, consultez Signets dans ODBC MFC.
Pour plus d’informations sur la navigation dans le jeu d’enregistrements, consultez Recordset : Défilement (ODBC).