CDaoRecordset, classe
Représente un ensemble d'enregistrements sélectionnés à partir d'une source de données.
Remarque
L’objet d’accès aux données (DAO) est pris en charge via Office 2013. DAO 3.6 est la version finale et est obsolète.
Syntaxe
class CDaoRecordset : public CObject
Membres
Constructeurs publics
Nom | Description |
---|---|
CDaoRecordset ::CDaoRecordset | Construit un objet CDaoRecordset . |
Méthodes publiques
Nom | Description |
---|---|
CDaoRecordset ::AddNew | Prépare l’ajout d’un nouvel enregistrement. Appelez La mise à jour pour terminer l’ajout. |
CDaoRecordset ::CanAppend | Retourne une valeur différente de zéro si de nouveaux enregistrements peuvent être ajoutés au jeu d’enregistrements via la fonction membre AddNew . |
CDaoRecordset ::CanBookmark | Retourne une valeur différente de zéro si le jeu d’enregistrements prend en charge les signets. |
CDaoRecordset ::CancelUpdate | Annule les mises à jour en attente en raison d’une opération Edit ou AddNew . |
CDaoRecordset ::CanRestart | Retourne une valeur différente de zéro si Requery peut être appelé pour réexécuter la requête du jeu d’enregistrements. |
CDaoRecordset ::CanScroll | Retourne une valeur différente de zéro si vous pouvez faire défiler les enregistrements. |
CDaoRecordset ::CanTransact | Retourne une valeur différente de zéro si la source de données prend en charge les transactions. |
CDaoRecordset ::CanUpdate | Retourne une valeur différente de zéro si le jeu d’enregistrements peut être mis à jour (vous pouvez ajouter, mettre à jour ou supprimer des enregistrements). |
CDaoRecordset ::Close | Ferme le jeu d’enregistrements. |
CDaoRecordset ::D elete | Supprime l’enregistrement actif du jeu d’enregistrements. Vous devez faire défiler explicitement vers un autre enregistrement après la suppression. |
CDaoRecordset ::D oFieldExchange | Appelé pour échanger des données (dans les deux sens) entre les membres de données de champ du jeu d’enregistrements et l’enregistrement correspondant sur la source de données. Implémente l’échange de champs d’enregistrement DAO (DFX). |
CDaoRecordset ::Edit | Prépare les modifications apportées à l’enregistrement actif. Appel Update pour terminer la modification. |
CDaoRecordset ::FillCache | Remplit tout ou partie d’un cache local pour un objet recordset qui contient des données d’une source de données ODBC. |
CDaoRecordset ::Find | Localise le premier, suivant, précédent ou dernier emplacement d’une chaîne particulière dans un jeu d’enregistrements de type feuille de réponse dynamique qui satisfait aux critères spécifiés et rend cet enregistrement actif. |
CDaoRecordset ::FindFirst | Localise le premier enregistrement d’un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané qui satisfait aux critères spécifiés et rend cet enregistrement l’enregistrement actif. |
CDaoRecordset ::FindLast | Localise le dernier enregistrement dans un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané qui satisfait aux critères spécifiés et rend cet enregistrement l’enregistrement actif. |
CDaoRecordset ::FindNext | Localise l’enregistrement suivant dans un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané qui satisfait aux critères spécifiés et rend cet enregistrement l’enregistrement actif. |
CDaoRecordset ::FindPrev | Recherche l’enregistrement précédent dans un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané qui satisfait aux critères spécifiés et rend cet enregistrement l’enregistrement actif. |
CDaoRecordset ::GetAbsolutePosition | Retourne le numéro d’enregistrement de l’enregistrement actif d’un objet recordset. |
CDaoRecordset ::GetBookmark | Retourne une valeur qui représente le signet sur un enregistrement. |
CDaoRecordset ::GetCacheSize | Retourne une valeur qui spécifie le nombre d’enregistrements dans un jeu d’enregistrements de type feuille de réponse dynamique contenant des données à mettre en cache localement à partir d’une source de données ODBC. |
CDaoRecordset ::GetCacheStart | Retourne une valeur qui spécifie le signet du premier enregistrement dans le jeu d’enregistrements à mettre en cache. |
CDaoRecordset ::GetCurrentIndex | Retourne un CString nom contenant l’index le plus récemment utilisé sur un type CDaoRecordset table indexé. |
CDaoRecordset ::GetDateCreated | Retourne la date et l’heure de création de la table de base sous-jacente à un CDaoRecordset objet |
CDaoRecordset ::GetDateLastUpdated | Retourne la date et l’heure de la modification la plus récente apportée à la conception d’une table de base sous-jacente à un CDaoRecordset objet. |
CDaoRecordset ::GetDefaultDBName | Retourne le nom de la source de données par défaut. |
CDaoRecordset ::GetDefaultSQL | Appelé pour obtenir la chaîne SQL par défaut à exécuter. |
CDaoRecordset ::GetEditMode | Retourne une valeur qui indique l’état de modification de l’enregistrement actif. |
CDaoRecordset ::GetFieldCount | Retourne une valeur qui représente le nombre de champs d’un jeu d’enregistrements. |
CDaoRecordset ::GetFieldInfo | Retourne des types d’informations spécifiques sur les champs du jeu d’enregistrements. |
CDaoRecordset ::GetFieldValue | Retourne la valeur d’un champ dans un jeu d’enregistrements. |
CDaoRecordset ::GetIndexCount | Récupère le nombre d’index d’une table sous-jacente à un jeu d’enregistrements. |
CDaoRecordset ::GetIndexInfo | Retourne différents types d’informations sur un index. |
CDaoRecordset ::GetLastModifiedBookmark | Permet de déterminer l’enregistrement le plus récemment ajouté ou mis à jour. |
CDaoRecordset ::GetLockingMode | Retourne une valeur qui indique le type de verrouillage qui est en vigueur pendant la modification. |
CDaoRecordset ::GetName | Retourne un CString nom contenant le jeu d’enregistrements. |
CDaoRecordset ::GetParamValue | Récupère la valeur actuelle du paramètre spécifié stocké dans l’objet DAOParameter sous-jacent. |
CDaoRecordset ::GetPercentPosition | Retourne la position de l’enregistrement actif sous la forme d’un pourcentage du nombre total d’enregistrements. |
CDaoRecordset ::GetRecordCount | Retourne le nombre d’enregistrements accessibles dans un objet recordset. |
CDaoRecordset ::GetSQL | Obtient la chaîne SQL utilisée pour sélectionner des enregistrements pour le jeu d’enregistrements. |
CDaoRecordset ::GetType | Appelé pour déterminer le type d’un jeu d’enregistrements : type table, type dynaset ou type d’instantané. |
CDaoRecordset ::GetValidationRule | Retourne une CString valeur contenant la valeur qui valide les données à mesure qu’elles sont entrées dans un champ. |
CDaoRecordset ::GetValidationText | Récupère le texte affiché lorsqu’une règle de validation n’est pas satisfaite. |
CDaoRecordset ::IsBOF | Retourne une valeur différente de zéro si le jeu d’enregistrements a été positionné avant le premier enregistrement. Il n’y a pas d’enregistrement actif. |
CDaoRecordset ::IsDeleted | Retourne une valeur différente de zéro si le jeu d’enregistrements est positionné sur un enregistrement supprimé. |
CDaoRecordset ::IsEOF | Retourne une valeur différente de zéro si le jeu d’enregistrements a été positionné après le dernier enregistrement. Il n’y a pas d’enregistrement actif. |
CDaoRecordset ::IsFieldDirty | Retourne une valeur différente de zéro si le champ spécifié dans l’enregistrement actif a été modifié. |
CDaoRecordset ::IsFieldNull | Retourne une valeur différente de zéro si le champ spécifié dans l’enregistrement actif est Null (sans valeur). |
CDaoRecordset ::IsFieldNullable | Retourne une valeur différente de zéro si le champ spécifié dans l’enregistrement actif peut être défini sur Null (sans valeur). |
CDaoRecordset ::IsOpen | Retourne une valeur différente de zéro si Open a été appelé précédemment. |
CDaoRecordset ::Move | Positionne le jeu d’enregistrements sur un nombre spécifié d’enregistrements de l’enregistrement actif dans les deux sens. |
CDaoRecordset ::MoveFirst | Positionne l’enregistrement actif sur le premier enregistrement dans le jeu d’enregistrements. |
CDaoRecordset ::MoveLast | Positionne l’enregistrement actif sur le dernier enregistrement dans le jeu d’enregistrements. |
CDaoRecordset ::MoveNext | Positionne l’enregistrement actif sur l’enregistrement suivant dans le jeu d’enregistrements . |
CDaoRecordset ::MovePrev | Positionne l’enregistrement actif sur l’enregistrement précédent dans le jeu d’enregistrements. |
CDaoRecordset ::Open | Crée un jeu d’enregistrements à partir d’une table, d’une feuille de réponse dynamique ou d’un instantané. |
CDaoRecordset ::Requery | Exécute à nouveau la requête du jeu d’enregistrements pour actualiser les enregistrements sélectionnés. |
CDaoRecordset ::Seek | Localise l’enregistrement dans un objet recordset de type table indexé qui satisfait aux critères spécifiés pour l’index actif et rend cet enregistrement l’enregistrement actif. |
CDaoRecordset ::SetAbsolutePosition | Définit le numéro d’enregistrement de l’enregistrement actif d’un objet recordset. |
CDaoRecordset ::SetBookmark | Positionne le jeu d’enregistrements sur un enregistrement contenant le signet spécifié. |
CDaoRecordset ::SetCacheSize | Définit une valeur qui spécifie le nombre d’enregistrements dans un jeu d’enregistrements de type feuille de réponse dynamique contenant des données à mettre en cache localement à partir d’une source de données ODBC. |
CDaoRecordset ::SetCacheStart | Définit une valeur qui spécifie le signet du premier enregistrement dans le jeu d’enregistrements à mettre en cache. |
CDaoRecordset ::SetCurrentIndex | Appelé pour définir un index sur un jeu d’enregistrements de type table. |
CDaoRecordset ::SetFieldDirty | Marque le champ spécifié dans l’enregistrement actif comme modifié. |
CDaoRecordset ::SetFieldNull | Définit la valeur du champ spécifié dans l’enregistrement actif sur Null (sans valeur). |
CDaoRecordset ::SetFieldValue | Définit la valeur d’un champ dans un jeu d’enregistrements. |
CDaoRecordset ::SetFieldValueNull | Définit la valeur d’un champ dans un jeu d’enregistrements sur Null. (sans valeur). |
CDaoRecordset ::SetLockingMode | Définit une valeur qui indique le type de verrouillage à mettre en vigueur lors de la modification. |
CDaoRecordset ::SetParamValue | Définit la valeur actuelle du paramètre spécifié stocké dans l’objet DAOParameter sous-jacent |
CDaoRecordset ::SetParamValueNull | Définit la valeur actuelle du paramètre spécifié sur Null (sans valeur). |
CDaoRecordset ::SetPercentPosition | Définit la position de l’enregistrement actif sur un emplacement correspondant à un pourcentage du nombre total d’enregistrements dans un jeu d’enregistrements. |
CDaoRecordset ::Update | Termine une AddNew opération en Edit enregistrant les données nouvelles ou modifiées sur la source de données. |
Membres de données publics
Nom | Description |
---|---|
CDaoRecordset ::m_bCheckCacheForDirtyFields | Contient un indicateur indiquant si les champs sont automatiquement marqués comme modifiés. |
CDaoRecordset ::m_nFields | Contient le nombre de membres de données de champ dans la classe recordset et le nombre de colonnes sélectionnées par le jeu d’enregistrements de la source de données. |
CDaoRecordset ::m_nParams | Contient le nombre de membres de données de paramètre dans la classe recordset : nombre de paramètres passés avec la requête du jeu d’enregistrements |
CDaoRecordset ::m_pDAORecordset | Pointeur vers l’interface DAO sous-jacente à l’objet recordset. |
CDaoRecordset ::m_pDatabase | Base de données source pour ce jeu de résultats. Contient un pointeur vers un objet CDaoDatabase . |
CDaoRecordset ::m_strFilter | Contient une chaîne utilisée pour construire une instruction SQL WHERE . |
CDaoRecordset ::m_strSort | Contient une chaîne utilisée pour construire une instruction SQL ORDER BY . |
Notes
Les objets appelés « recordsets », CDaoRecordset
sont disponibles sous les trois formes suivantes :
Les recordsets de type table représentent une table de base que vous pouvez utiliser pour examiner, ajouter, modifier ou supprimer des enregistrements d’une seule table de base de données.
Les recordsets de type Dynaset sont le résultat d’une requête qui peut avoir des enregistrements pouvant être mis à jour. Ces jeux d’enregistrements sont un ensemble d’enregistrements que vous pouvez utiliser pour examiner, ajouter, modifier ou supprimer des enregistrements d’une table ou d’une table de base de données sous-jacente. Les recordsets de type Dynaset peuvent contenir des champs d’une ou plusieurs tables d’une base de données.
Les jeux d’enregistrements de type instantané sont une copie statique d’un ensemble d’enregistrements que vous pouvez utiliser pour rechercher des données ou générer des rapports. Ces recordsets peuvent contenir des champs d’une ou plusieurs tables d’une base de données, mais ne peuvent pas être mis à jour.
Chaque forme de jeu d’enregistrements représente un ensemble d’enregistrements fixes au moment de l’ouverture du jeu d’enregistrements. Lorsque vous faites défiler vers un enregistrement dans un jeu d’enregistrements de type table ou un jeu d’enregistrements de type dynaset, il reflète les modifications apportées à l’enregistrement après l’ouverture du jeu d’enregistrements, par d’autres utilisateurs ou par d’autres recordsets dans votre application. (Impossible de mettre à jour un jeu d’enregistrements de type instantané.) Vous pouvez utiliser CDaoRecordset
directement ou dériver une classe recordset spécifique à l’application à partir de CDaoRecordset
. Vous pouvez ensuite :
Faites défiler les enregistrements.
Définissez un index et recherchez rapidement des enregistrements à l’aide de Seek (jeux d’enregistrements de type table uniquement).
Recherchez des enregistrements basés sur une comparaison de chaînes : « < », « <= », « = », « >="ou « > » (jeux d’enregistrements de type dynaset et de type d’instantané).
Mettez à jour les enregistrements et spécifiez un mode de verrouillage (à l’exception des jeux d’enregistrements de type instantané).
Filtrez le jeu d’enregistrements pour limiter les enregistrements qu’il sélectionne parmi ceux disponibles sur la source de données.
Triez le jeu d’enregistrements.
Paramétrez le jeu d’enregistrements pour personnaliser sa sélection avec des informations non connues jusqu’au moment de l’exécution.
La classe CDaoRecordset
fournit une interface similaire à celle de la classe CRecordset
. La principale différence est que la classe CDaoRecordset
accède aux données via un objet DAO (Data Access Object) basé sur OLE. La classe CRecordset
accède au SGBD par le biais d’Open Database Connectivity (ODBC) et d’un pilote ODBC pour ce SGBD.
Remarque
Les classes de base de données DAO sont distinctes des classes de base de données MFC basées sur Open Database Connectivity (ODBC). Tous les noms de classes de base de données DAO ont le préfixe « CDao ». Vous pouvez toujours accéder aux sources de données ODBC avec les classes DAO ; les classes DAO offrent généralement des fonctionnalités supérieures, car elles sont spécifiques au moteur de base de données Microsoft Jet.
Vous pouvez utiliser CDaoRecordset
directement ou dériver une classe à partir de CDaoRecordset
. Pour utiliser une classe recordset dans les deux cas, ouvrez une base de données et construisez un objet recordset, en transmettant au constructeur un pointeur vers votre CDaoDatabase
objet. Vous pouvez également construire un CDaoRecordset
objet et laisser MFC créer un objet temporaire CDaoDatabase
pour vous. Appelez ensuite la fonction membre Open du jeu d’enregistrements, en spécifiant si l’objet est un jeu d’enregistrements de type table, un jeu d’enregistrements de type dynaset ou un jeu d’enregistrements de type instantané. L’appel Open
sélectionne les données de la base de données et récupère le premier enregistrement.
Utilisez les fonctions membres de l’objet et les membres de données pour faire défiler les enregistrements et les exploiter. Les opérations disponibles varient selon que l’objet est un jeu d’enregistrements de type table, un jeu d’enregistrements de type dynaset ou un jeu d’enregistrements de type instantané, et s’il est mis à jour ou en lecture seule. Cela dépend de la capacité de la base de données ou de la source de données ODBC (Open Database Connectivity). Pour actualiser les enregistrements qui ont peut-être été modifiés ou ajoutés depuis l’appelOpen
, appelez la fonction membre Requery de l’objet. Appelez la fonction membre de Close
l’objet et détruisez l’objet lorsque vous avez terminé avec celui-ci.
CDaoRecordset
utilise l’échange de champs d’enregistrement DAO (DFX) pour prendre en charge la lecture et la mise à jour des champs d’enregistrement par le biais de membres C++ de type sécurisé de votre CDaoRecordset
classe ou CDaoRecordset
dérivée. Vous pouvez également implémenter une liaison dynamique de colonnes dans une base de données sans utiliser le mécanisme DFX à l’aide de GetFieldValue et de SetFieldValue.
Pour plus d’informations, consultez la rubrique « Recordset Object » dans l’aide de DAO.
Hiérarchie d'héritage
CDaoRecordset
Spécifications
En-tête : afxdao.h
CDaoRecordset ::AddNew
Appelez cette fonction membre pour ajouter un nouvel enregistrement à un jeu d’enregistrements de type table ou de type dynaset.
virtual void AddNew();
Notes
Les champs de l’enregistrement sont initialement Null. (Dans la terminologie de la base de données, Null signifie « sans valeur » et n’est pas identique à NULL en C++.) Pour terminer l’opération, vous devez appeler la fonction membre Update . Update
enregistre vos modifications dans la source de données.
Attention
Si vous modifiez un enregistrement, puis faites défiler vers un autre enregistrement sans appeler Update
, vos modifications sont perdues sans avertissement.
Si vous ajoutez un enregistrement à un jeu d’enregistrements de type dynaset en appelant AddNew, l’enregistrement est visible dans le jeu d’enregistrements et inclus dans la table sous-jacente où il devient visible par les nouveaux CDaoRecordset
objets.
La position du nouvel enregistrement dépend du type de jeu d’enregistrements :
- Dans un jeu d’enregistrements de type dynaset, où le nouvel enregistrement est inséré n’est pas garanti. Ce comportement a changé avec Microsoft Jet 3.0 pour des raisons de performances et de concurrence. Si votre objectif est de faire de l’enregistrement actif l’enregistrement que vous venez d’ajouter, obtenez le signet du dernier enregistrement modifié et passez à ce signet :
rs.SetBookmark(rs.GetLastModifiedBookmark());
- Dans un jeu d’enregistrements de type table pour lequel un index a été spécifié, les enregistrements sont retournés dans leur emplacement approprié dans l’ordre de tri. Si aucun index n’a été spécifié, de nouveaux enregistrements sont retournés à la fin du jeu d’enregistrements.
Enregistrement actif avant que vous n’utilisiez AddNew
reste actif. Si vous souhaitez rendre le nouvel enregistrement actif et que l’ensemble d’enregistrements prend en charge les signets, appelez SetBookmark au signet identifié par le paramètre de propriété LastModified de l’objet recordset DAO sous-jacent. Cela est utile pour déterminer la valeur des champs compteur (incrément automatique) dans un enregistrement ajouté. Pour plus d’informations, consultez GetLastModifiedBookmark.
Si la base de données prend en charge les transactions, vous pouvez faire partie de votre AddNew
appel d’une transaction. Pour plus d’informations sur les transactions, consultez la classe CDaoWorkspace. Vous devez appeler CDaoWorkspace ::BeginTrans avant d’appeler AddNew
.
Il est illégal d’appeler AddNew
un jeu d’enregistrements dont Open
la fonction membre n’a pas été appelée. A CDaoException
est levée si vous appelez AddNew
un jeu d’enregistrements qui ne peut pas être ajouté. Vous pouvez déterminer si le jeu d’enregistrements peut être mis à jour en appelant CanAppend.
Le framework marque les membres de données de champ modifiés pour s’assurer qu’ils seront écrits dans l’enregistrement sur la source de données par le mécanisme d’échange de champs d’enregistrement DAO (DFX). La modification de la valeur d’un champ définit généralement le champ sale automatiquement. Vous devrez donc rarement appeler SetFieldDirty vous-même, mais vous pouvez parfois vous assurer que les colonnes sont explicitement mises à jour ou insérées indépendamment de la valeur du membre de données de champ. Le mécanisme DFX utilise également l’utilisation de PSEUDO NULL. Pour plus d’informations, consultez CDaoFieldExchange ::m_nOperation.
Si le mécanisme de double mise en mémoire tampon n’est pas utilisé, la modification de la valeur du champ ne définit pas automatiquement le champ comme étant sale. Dans ce cas, il est nécessaire de définir explicitement le champ sale. L’indicateur contenu dans m_bCheckCacheForDirtyFields contrôle cette vérification automatique des champs.
Remarque
Si les enregistrements sont mis en mémoire tampon double (autrement dit, la vérification automatique des champs est activée), l’appel CancelUpdate
restaure les variables membres sur les valeurs qu’ils avaient avant AddNew
ou Edit
a été appelées.
Pour plus d’informations, consultez les rubriques « AddNew Method », « CancelUpdate Method », « LastModified Property » et « EditMode Property » dans L’aide DAO.
CDaoRecordset ::CanAppend
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements ouvert précédemment vous permet d’ajouter de nouveaux enregistrements en appelant la fonction membre AddNew .
BOOL CanAppend() const;
Valeur de retour
Différent de zéro si le jeu d’enregistrements autorise l’ajout de nouveaux enregistrements ; sinon 0. CanAppend
renvoie 0 si vous avez ouvert le jeu d’enregistrements en lecture seule.
Notes
Pour plus d’informations, consultez la rubrique « Append Method » dans L’aide de DAO.
CDaoRecordset ::CanBookmark
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements ouvert précédemment vous permet de marquer individuellement les enregistrements à l’aide de signets.
BOOL CanBookmark();
Valeur de retour
Différent de zéro si le jeu d’enregistrements prend en charge les signets, sinon 0.
Notes
Si vous utilisez des recordsets basés entièrement sur les tables du moteur de base de données Microsoft Jet, les signets peuvent être utilisés à l’exception des recordsets de type instantané marqués comme des jeux d’enregistrements de défilement vers l’avant uniquement. D’autres produits de base de données (sources de données ODBC externes) peuvent ne pas prendre en charge les signets.
Pour plus d’informations, consultez la rubrique « Propriété bookmarkable » dans l’aide de DAO.
CDaoRecordset ::CancelUpdate
La CancelUpdate
fonction membre annule les mises à jour en attente en raison d’une opération Edit ou AddNew .
virtual void CancelUpdate();
Notes
Par exemple, si une application appelle la Edit
fonction ou AddNew
membre et n’a pas appelé Update
, CancelUpdate
annule les modifications apportées après Edit
ou AddNew
a été appelée.
Remarque
Si les enregistrements sont mis en mémoire tampon double (autrement dit, la vérification automatique des champs est activée), l’appel CancelUpdate
restaure les variables membres sur les valeurs qu’ils avaient avant AddNew
ou Edit
a été appelées.
Si aucune opération n’est Edit
AddNew
en attente, CancelUpdate
MFC lève une exception. Appelez la fonction membre GetEditMode pour déterminer s’il existe une opération en attente qui peut être annulée.
Pour plus d’informations, consultez la rubrique « CancelUpdate Method » dans l’aide de DAO.
CDaoRecordset ::CanRestart
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements autorise le redémarrage de sa requête (pour actualiser ses enregistrements) en appelant la Requery
fonction membre.
BOOL CanRestart();
Valeur de retour
Différent de zéro si Requery
vous pouvez appeler pour réexécuter la requête du jeu d’enregistrements, sinon 0.
Notes
Les recordsets de type table ne prennent pas en charge Requery
.
Si Requery
ce n’est pas pris en charge, appelez Fermer , puis Ouvrez pour actualiser les données. Vous pouvez appeler Requery
pour mettre à jour la requête de paramètre sous-jacente d’un objet recordset après la modification des valeurs de paramètre.
Pour plus d’informations, consultez la rubrique « Restartable Property » dans l’aide de DAO.
CDaoRecordset ::CanScroll
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements autorise le défilement.
BOOL CanScroll() const;
Valeur de retour
Différent de zéro si vous pouvez faire défiler les enregistrements, sinon 0.
Notes
Si vous appelez Open avec dbForwardOnly
, le jeu d’enregistrements ne peut faire défiler que vers l’avant.
Pour plus d’informations, consultez la rubrique « Positionnement du pointeur d’enregistrement actuel avec DAO » dans l’aide de DAO.
CDaoRecordset ::CanTransact
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements autorise les transactions.
BOOL CanTransact();
Valeur de retour
Différent de zéro si la source de données sous-jacente prend en charge les transactions, sinon 0.
Notes
Pour plus d’informations, consultez la rubrique « Transactions Property » dans l’aide de DAO.
CDaoRecordset ::CanUpdate
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements peut être mis à jour.
BOOL CanUpdate() const;
Valeur de retour
Différent de zéro si le jeu d’enregistrements peut être mis à jour (ajouter, mettre à jour et supprimer des enregistrements), sinon 0.
Notes
Un recordset peut être en lecture seule si la source de données sous-jacente est en lecture seule ou si vous avez spécifié dbReadOnly
pour nOptions lorsque vous avez appelé Ouvrir pour le jeu d’enregistrements.
Pour plus d’informations, consultez les rubriques « AddNew Method », « Edit Method », « Delete Method », « Update Method » et « Updatable Property » dans L’aide de DAO.
CDaoRecordset ::CDaoRecordset
Construit un objet CDaoRecordset
.
CDaoRecordset(CDaoDatabase* pDatabase = NULL);
Paramètres
pDatabase
Contient un pointeur vers un objet CDaoDatabase ou la valeur NULL. S’il n’est pas NULL et que la fonction membre de l’objet CDaoDatabase
n’a pas été appelée pour la connecter à la source de données, le jeu d’enregistrements tente de l’ouvrir pour vous pendant son propre appel Open.Open
Si vous passez NULL, un CDaoDatabase
objet est construit et connecté pour vous à l’aide des informations de source de données que vous avez spécifiées si vous avez dérivé votre classe recordset à partir CDaoRecordset
de .
Notes
Vous pouvez utiliser CDaoRecordset
directement ou dériver une classe spécifique à l’application à partir de CDaoRecordset
. Vous pouvez utiliser ClassWizard pour dériver vos classes recordset.
Remarque
Si vous dérivez une CDaoRecordset
classe, votre classe dérivée doit fournir son propre constructeur. Dans le constructeur de votre classe dérivée, appelez le constructeur CDaoRecordset::CDaoRecordset
, en lui transmettant les paramètres appropriés.
Passez NULL à votre constructeur recordset pour avoir un CDaoDatabase
objet construit et connecté automatiquement pour vous. Il s’agit d’un raccourci utile qui ne vous oblige pas à construire et à connecter un CDaoDatabase
objet avant de construire votre jeu d’enregistrements. Si l’objet CDaoDatabase
n’est pas ouvert, un objet CDaoWorkspace est également créé pour vous qui utilise l’espace de travail par défaut. Pour plus d’informations, consultez CDaoDatabase ::CDaoDatabase.
CDaoRecordset ::Close
La fermeture d’un CDaoRecordset
objet le supprime de la collection d’ensembles d’enregistrements ouverts dans la base de données associée.
virtual void Close();
Notes
Étant donné que Close
ne détruit pas l’objet CDaoRecordset
, vous pouvez réutiliser l’objet en appelant Open
la même source de données ou une autre source de données.
Toutes les instructions AddNew ou Edit en attente sont annulées et toutes les transactions en attente sont restaurées. Si vous souhaitez conserver des ajouts ou des modifications en attente, appelez Update avant d’appeler Close
chaque jeu d’enregistrements.
Vous pouvez appeler Open
à nouveau après l’appel Close
. Cela vous permet de réutiliser l’objet recordset. Une meilleure alternative consiste à appeler Requery, si possible.
Pour plus d’informations, consultez la rubrique « Fermer la méthode » dans l’aide de DAO.
CDaoRecordset ::D elete
Appelez cette fonction membre pour supprimer l’enregistrement actif dans un objet recordset de type dynaset ouvert ou de type table.
virtual void Delete();
Notes
Une fois la suppression réussie, les membres de données de champ du jeu d’enregistrements sont définis sur une valeur Null et vous devez appeler explicitement l’une des fonctions membres de navigation du jeu d’enregistrements ( Move, Seek, SetBookmark, et ainsi de suite) pour quitter l’enregistrement supprimé. Lorsque vous supprimez des enregistrements d’un jeu d’enregistrements, il doit y avoir un enregistrement actif dans le jeu d’enregistrements avant d’appeler Delete
; sinon, MFC lève une exception.
Delete
supprime l’enregistrement actif et le rend inaccessible. Bien que vous ne puissiez pas modifier ou utiliser l’enregistrement supprimé, il reste actif. Une fois que vous passez à un autre enregistrement, toutefois, vous ne pouvez pas rendre l’enregistrement supprimé à nouveau actif.
Attention
Le jeu d’enregistrements doit être mis à jour et il doit y avoir un enregistrement valide actif dans le jeu d’enregistrements lorsque vous appelez Delete
. Par exemple, si vous supprimez un enregistrement, mais que vous ne faites pas défiler vers un nouvel enregistrement avant d’appeler Delete
à nouveau, Delete
lève une exception CDaoException.
Vous pouvez annuler la suppression d’un enregistrement si vous utilisez des transactions et que vous appelez la fonction membre CDaoWorkspace ::Rollback . Si la table de base est la table principale dans une relation de suppression en cascade, la suppression de l’enregistrement actif peut également supprimer un ou plusieurs enregistrements dans une table étrangère. Pour plus d’informations, consultez la définition « suppression en cascade » dans l’aide de DAO.
Contrairement AddNew
à et Edit
, un appel à Delete
n’est pas suivi d’un appel à Update
.
Pour plus d’informations, consultez les rubriques « AddNew Method », « Edit Method », « Delete Method », « Update Method » et « Updatable Property » dans L’aide de DAO.
CDaoRecordset ::D oFieldExchange
L’infrastructure appelle cette fonction membre pour échanger automatiquement des données entre les membres de données de champ de votre objet recordset et les colonnes correspondantes de l’enregistrement actif sur la source de données.
virtual void DoFieldExchange(CDaoFieldExchange* pFX);
Paramètres
Pfx
Contient un pointeur vers un CDaoFieldExchange
objet. L’infrastructure a déjà configuré cet objet pour spécifier un contexte pour l’opération d’échange de champs.
Notes
Il lie également vos membres de données de paramètre, le cas échéant, aux espaces réservés de paramètres dans la chaîne d’instruction SQL pour la sélection du jeu d’enregistrements. L’échange de données de champ, appelée DAO record field exchange (DFX), fonctionne dans les deux sens : des membres de données de champ de l’objet recordset aux champs de l’enregistrement sur la source de données, et de l’enregistrement de la source de données à l’objet recordset. Si vous liez dynamiquement des colonnes, vous n’êtes pas obligé d’implémenter DoFieldExchange
.
La seule action que vous devez normalement entreprendre pour implémenter DoFieldExchange
pour votre classe recordset dérivée consiste à créer la classe avec ClassWizard et à spécifier les noms et les types de données des membres de données de champ. Vous pouvez également ajouter du code à ce que ClassWizard écrit pour spécifier des membres de données de paramètre. Si tous les champs doivent être liés dynamiquement, cette fonction est inactive, sauf si vous spécifiez des membres de données de paramètre.
Lorsque vous déclarez votre classe recordset dérivée avec ClassWizard, l’Assistant écrit un remplacement pour DoFieldExchange
vous, qui ressemble à l’exemple suivant :
void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
pFX->SetFieldType(CDaoFieldExchange::param);
DFX_Text(pFX, _T("Param"), m_strParam);
pFX->SetFieldType(CDaoFieldExchange::outputColumn);
DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
DFX_Text(pFX, _T("LastName"), m_LastName);
DFX_Short(pFX, _T("Age"), m_Age);
DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
DFX_DateTime(pFX, _T("termination_date"), m_termination_date);
CDaoRecordset::DoFieldExchange(pFX);
}
CDaoRecordset ::Edit
Appelez cette fonction membre pour autoriser les modifications apportées à l’enregistrement actif.
virtual void Edit();
Notes
Une fois que vous appelez la Edit
fonction membre, les modifications apportées aux champs de l’enregistrement actif sont copiées dans la mémoire tampon de copie. Après avoir apporté les modifications souhaitées à l’enregistrement, appelez Update
pour enregistrer vos modifications. Edit
enregistre les valeurs des membres de données du jeu d’enregistrements. Si vous appelez Edit
, apportez des modifications, puis appelez Edit
à nouveau, les valeurs de l’enregistrement sont restaurées sur ce qu’elles étaient avant le premier Edit
appel.
Attention
Si vous modifiez un enregistrement, puis effectuez une opération qui se déplace vers un autre enregistrement sans appeler Update
d’abord, vos modifications sont perdues sans avertissement. En outre, si vous fermez le jeu d’enregistrements ou la base de données parente, votre enregistrement modifié est ignoré sans avertissement.
Dans certains cas, vous pouvez mettre à jour une colonne en la rendant Null (contenant aucune donnée). Pour ce faire, appelez SetFieldNull
avec un paramètre true pour marquer le champ Null ; cela entraîne également la mise à jour de la colonne. Si vous souhaitez qu’un champ soit écrit dans la source de données même si sa valeur n’a pas changé, appelez SetFieldDirty
avec un paramètre TRUE. Cela fonctionne même si le champ a la valeur Null.
Le framework marque les membres de données de champ modifiés pour s’assurer qu’ils seront écrits dans l’enregistrement sur la source de données par le mécanisme d’échange de champs d’enregistrement DAO (DFX). La modification de la valeur d’un champ définit généralement le champ sale automatiquement. Vous devrez donc rarement appeler SetFieldDirty vous-même, mais vous pouvez parfois vous assurer que les colonnes sont explicitement mises à jour ou insérées indépendamment de la valeur du membre de données de champ. Le mécanisme DFX utilise également l’utilisation de PSEUDO NULL. Pour plus d’informations, consultez CDaoFieldExchange ::m_nOperation.
Si le mécanisme de double mise en mémoire tampon n’est pas utilisé, la modification de la valeur du champ ne définit pas automatiquement le champ comme étant sale. Dans ce cas, il est nécessaire de définir explicitement le champ sale. L’indicateur contenu dans m_bCheckCacheForDirtyFields contrôle cette vérification automatique des champs.
Lorsque l’objet recordset est pessimistement verrouillé dans un environnement multiutilisateur, l’enregistrement reste verrouillé à partir du moment Edit
où il est utilisé jusqu’à la fin de la mise à jour. Si le jeu d’enregistrements est verrouillé de manière optimiste, l’enregistrement est verrouillé et comparé à l’enregistrement pré-modifié juste avant sa mise à jour dans la base de données. Si l’enregistrement a changé depuis que vous avez appelé Edit
, l’opération Update
échoue et MFC lève une exception. Vous pouvez modifier le mode de verrouillage avec SetLockingMode
.
Remarque
Le verrouillage optimiste est toujours utilisé sur les formats de base de données externes, tels que ODBC et ISAM installable.
L’enregistrement actif reste actif après l’appel Edit
. Pour appeler Edit
, il doit y avoir un enregistrement actif. S’il n’existe aucun enregistrement actif ou si le jeu d’enregistrements ne fait pas référence à un objet recordset de type table ouvert ou de type dynaset, une exception se produit. L’appel Edit
entraîne la levée d’une CDaoException
exception dans les conditions suivantes :
Il n’y a pas d’enregistrement actif.
La base de données ou le jeu d’enregistrements est en lecture seule.
Aucun champ de l’enregistrement n’est modifiable.
La base de données ou le jeu d’enregistrements a été ouvert pour une utilisation exclusive par un autre utilisateur.
Un autre utilisateur a verrouillé la page contenant votre enregistrement.
Si la source de données prend en charge les transactions, vous pouvez effectuer la Edit
partie d’appel d’une transaction. Vous devez appeler avant d’appeler CDaoWorkspace::BeginTrans
Edit
et après l’ouverture du jeu d’enregistrements. L’appel CDaoWorkspace::CommitTrans
n’est pas un substitut à l’appel Update
pour terminer l’opération Edit
. Pour plus d’informations sur les transactions, consultez la classe CDaoWorkspace
.
Pour plus d’informations, consultez les rubriques « AddNew Method », « Edit Method », « Delete Method », « Update Method » et « Updatable Property » dans L’aide de DAO.
CDaoRecordset ::FillCache
Appelez cette fonction membre pour mettre en cache un nombre spécifié d’enregistrements à partir du jeu d’enregistrements.
void FillCache(
long* pSize = NULL,
COleVariant* pBookmark = NULL);
Paramètres
Psize
Spécifie le nombre de lignes à remplir dans le cache. Si vous omettez ce paramètre, la valeur est déterminée par le paramètre de propriété CacheSize de l’objet DAO sous-jacent.
pBookmark
COleVariant spécifiant un signet. Le cache est rempli à partir de l’enregistrement indiqué par ce signet. Si vous omettez ce paramètre, le cache est rempli à partir de l’enregistrement indiqué par la propriété CacheStart de l’objet DAO sous-jacent.
Notes
La mise en cache améliore les performances d’une application qui récupère ou récupère des données à partir d’un serveur distant. Un cache est un espace dans la mémoire locale qui contient les données les plus récemment extraites du serveur en supposant que les données seront probablement demandées à nouveau pendant l’exécution de l’application. Lorsque des données sont demandées, le moteur de base de données Microsoft Jet vérifie d’abord le cache des données au lieu de les extraire du serveur, ce qui prend plus de temps. L’utilisation de la mise en cache des données sur des sources de données non ODBC n’a aucun effet, car les données ne sont pas enregistrées dans le cache.
Au lieu d’attendre que le cache soit rempli avec des enregistrements à mesure qu’ils sont récupérés, vous pouvez remplir explicitement le cache à tout moment en appelant la FillCache
fonction membre. Il s’agit d’un moyen plus rapide de remplir le cache, car FillCache
récupère plusieurs enregistrements à la fois au lieu d’un à la fois. Par exemple, pendant que chaque écran d’enregistrements est affiché, vous pouvez appeler votre application FillCache
pour récupérer le prochain écran des enregistrements.
Toute base de données ODBC accessible avec des objets recordset peut avoir un cache local. Pour créer le cache, ouvrez un objet recordset à partir de la source de données distante, puis appelez les SetCacheSize
fonctions membres du SetCacheStart
jeu d’enregistrements. Si lSize et lBookmark créent une plage en partie ou en dehors de la plage spécifiée et SetCacheSize
SetCacheStart
, la partie du jeu d’enregistrements en dehors de cette plage est ignorée et n’est pas chargée dans le cache. Si FillCache
les demandes dépassent le nombre d’enregistrements dans la source de données distante, seuls les enregistrements restants sont récupérés et aucune exception n’est levée.
Les enregistrements récupérés à partir du cache ne reflètent pas les modifications apportées simultanément aux données sources par d’autres utilisateurs.
FillCache
récupère uniquement les enregistrements non déjà mis en cache. Pour forcer une mise à jour de toutes les données mises en cache, appelez la SetCacheSize
fonction membre avec un paramètre lSize égal à 0, appelez SetCacheSize
à nouveau avec le paramètre lSize égal à la taille du cache que vous avez demandé à l’origine, puis appelez FillCache
.
Pour plus d’informations, consultez la rubrique « FillCache Method » dans L’aide de DAO.
CDaoRecordset ::Find
Appelez cette fonction membre pour localiser une chaîne particulière dans un jeu d’enregistrements de type feuille de réponse dynamique ou d’instantané à l’aide d’un opérateur de comparaison.
virtual BOOL Find(
long lFindType,
LPCTSTR lpszFilter);
Paramètres
lFindType
Valeur indiquant le type d’opération Rechercher souhaitée. Les valeurs possibles sont les suivantes :
AFX_DAO_NEXT Rechercher l’emplacement suivant d’une chaîne correspondante.
AFX_DAO_PREV Rechercher l’emplacement précédent d’une chaîne correspondante.
AFX_DAO_FIRST Rechercher le premier emplacement d’une chaîne correspondante.
AFX_DAO_LAST Rechercher le dernier emplacement d’une chaîne correspondante.
lpszFilter
Expression de chaîne (comme la clause WHERE dans une instruction SQL sans le mot WHERE) utilisée pour localiser l’enregistrement. Par exemple :
rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));
Valeur de retour
Différent de zéro si des enregistrements correspondants sont trouvés, sinon 0.
Notes
Vous trouverez la première, la suivante, la précédente ou la dernière instance de la chaîne. Find
est une fonction virtuelle, de sorte que vous pouvez la remplacer et ajouter votre propre implémentation. Les FindFirst
fonctions , , FindLast
FindNext
et FindPrev
membres appellent la Find
fonction membre. Vous pouvez donc utiliser Find
pour contrôler le comportement de toutes les opérations De recherche.
Pour localiser un enregistrement dans un jeu d’enregistrements de type table, appelez la fonction membre Seek .
Conseil
Plus l’ensemble d’enregistrements que vous avez est petit, plus il est efficace Find
. En général, et en particulier avec les données ODBC, il est préférable de créer une requête qui récupère uniquement les enregistrements souhaités.
Pour plus d’informations, consultez la rubrique « FindFirst, FindLast, FindNext, FindPrevious Methods » dans l’aide de DAO.
CDaoRecordset ::FindFirst
Appelez cette fonction membre pour rechercher le premier enregistrement qui correspond à une condition spécifiée.
BOOL FindFirst(LPCTSTR lpszFilter);
Paramètres
lpszFilter
Expression de chaîne (comme la clause WHERE dans une instruction SQL sans le mot WHERE) utilisée pour localiser l’enregistrement.
Valeur de retour
Différent de zéro si des enregistrements correspondants sont trouvés, sinon 0.
Notes
La FindFirst
fonction membre commence sa recherche à partir du début du jeu d’enregistrements et recherche à la fin du jeu d’enregistrements.
Si vous souhaitez inclure tous les enregistrements dans votre recherche (pas seulement ceux qui répondent à une condition spécifique) utilisez l’une des opérations Move pour passer de l’enregistrement à l’enregistrement. Pour localiser un enregistrement dans un jeu d’enregistrements de type table, appelez la Seek
fonction membre.
Si un enregistrement correspondant aux critères n’est pas localisé, le pointeur d’enregistrement actif est indéterminé et FindFirst
retourne zéro. Si le jeu d’enregistrements contient plusieurs enregistrements qui répondent aux critères, FindFirst
localise la première occurrence, FindNext
localise l’occurrence suivante, etc.
Attention
Si vous modifiez l’enregistrement actif, veillez à enregistrer les modifications en appelant la Update
fonction membre avant de passer à un autre enregistrement. Si vous passez à un autre enregistrement sans mise à jour, vos modifications sont perdues sans avertissement.
Les Find
fonctions membres effectuent une recherche à partir de l’emplacement et dans la direction spécifiée dans le tableau suivant :
Opérations de recherche | Début | Direction de la recherche |
---|---|---|
FindFirst |
Début du jeu d’enregistrements | Fin du jeu d’enregistrements |
FindLast |
Fin du jeu d’enregistrements | Début du jeu d’enregistrements |
FindNext |
Enregistrement actif | Fin du jeu d’enregistrements |
FindPrevious |
Enregistrement actif | Début du jeu d’enregistrements |
Remarque
Lorsque vous appelez FindLast
, le moteur de base de données Microsoft Jet remplit entièrement votre jeu d’enregistrements avant de commencer la recherche, si ce n’est pas déjà fait. La première recherche peut prendre plus de temps que les recherches suivantes.
L’utilisation de l’une des opérations De recherche n’est pas la même que l’appel MoveFirst
ou MoveNext
, toutefois, ce qui rend simplement le premier enregistrement actif ou suivant sans spécifier de condition. Vous pouvez suivre une opération Rechercher avec une opération Déplacer.
Gardez à l’esprit ce qui suit lors de l’utilisation des opérations De recherche :
Si
Find
la valeur est renvoyée différente de zéro, l’enregistrement actif n’est pas défini. Dans ce cas, vous devez positionner le pointeur d’enregistrement actuel vers un enregistrement valide.Vous ne pouvez pas utiliser une opération Find avec un jeu d’enregistrements de type instantané de défilement vers l’avant uniquement.
Vous devez utiliser le format de date des États-Unis (mois-jour-année) lorsque vous recherchez des champs contenant des dates, même si vous n’utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, les enregistrements correspondants peuvent ne pas être trouvés.
Lorsque vous utilisez des bases de données ODBC et des feuilles de réponse dynamique volumineuses, vous pouvez découvrir que l’utilisation des opérations De recherche est lente, en particulier lorsque vous utilisez des jeux d’enregistrements volumineux. Vous pouvez améliorer les performances à l’aide de requêtes SQL avec des clauses ORDERBY ou WHERE personnalisées, des requêtes de paramètres ou
CDaoQuerydef
des objets qui récupèrent des enregistrements indexés spécifiques.
Pour plus d’informations, consultez la rubrique « FindFirst, FindLast, FindNext, FindPrevious Methods » dans l’aide de DAO.
CDaoRecordset ::FindLast
Appelez cette fonction membre pour rechercher le dernier enregistrement qui correspond à une condition spécifiée.
BOOL FindLast(LPCTSTR lpszFilter);
Paramètres
lpszFilter
Expression de chaîne (comme la clause WHERE dans une instruction SQL sans le mot WHERE) utilisée pour localiser l’enregistrement.
Valeur de retour
Différent de zéro si des enregistrements correspondants sont trouvés, sinon 0.
Notes
La FindLast
fonction membre commence sa recherche à la fin du jeu d’enregistrements et recherche vers l’arrière vers le début du jeu d’enregistrements.
Si vous souhaitez inclure tous les enregistrements dans votre recherche (pas seulement ceux qui répondent à une condition spécifique) utilisez l’une des opérations Move pour passer de l’enregistrement à l’enregistrement. Pour localiser un enregistrement dans un jeu d’enregistrements de type table, appelez la Seek
fonction membre.
Si un enregistrement correspondant aux critères n’est pas localisé, le pointeur d’enregistrement actif est indéterminé et FindLast
retourne zéro. Si le jeu d’enregistrements contient plusieurs enregistrements qui répondent aux critères, FindFirst
localise la première occurrence, FindNext
localise l’occurrence suivante après la première occurrence, etc.
Attention
Si vous modifiez l’enregistrement actif, veillez à enregistrer les modifications en appelant la Update
fonction membre avant de passer à un autre enregistrement. Si vous passez à un autre enregistrement sans mise à jour, vos modifications sont perdues sans avertissement.
L’utilisation de l’une des opérations De recherche n’est pas la même que l’appel MoveFirst
ou MoveNext
, toutefois, ce qui rend simplement le premier enregistrement actif ou suivant sans spécifier de condition. Vous pouvez suivre une opération Rechercher avec une opération Déplacer.
Gardez à l’esprit ce qui suit lors de l’utilisation des opérations De recherche :
Si
Find
la valeur est renvoyée différente de zéro, l’enregistrement actif n’est pas défini. Dans ce cas, vous devez positionner le pointeur d’enregistrement actuel vers un enregistrement valide.Vous ne pouvez pas utiliser une opération Find avec un jeu d’enregistrements de type instantané de défilement vers l’avant uniquement.
Vous devez utiliser le format de date des États-Unis (mois-jour-année) lorsque vous recherchez des champs contenant des dates, même si vous n’utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, les enregistrements correspondants peuvent ne pas être trouvés.
Lorsque vous utilisez des bases de données ODBC et des feuilles de réponse dynamique volumineuses, vous pouvez découvrir que l’utilisation des opérations De recherche est lente, en particulier lorsque vous utilisez des jeux d’enregistrements volumineux. Vous pouvez améliorer les performances à l’aide de requêtes SQL avec des clauses ORDERBY ou WHERE personnalisées, des requêtes de paramètres ou
CDaoQuerydef
des objets qui récupèrent des enregistrements indexés spécifiques.
Pour plus d’informations, consultez la rubrique « FindFirst, FindLast, FindNext, FindPrevious Methods » dans l’aide de DAO.
CDaoRecordset ::FindNext
Appelez cette fonction membre pour rechercher l’enregistrement suivant qui correspond à une condition spécifiée.
BOOL FindNext(LPCTSTR lpszFilter);
Paramètres
lpszFilter
Expression de chaîne (comme la clause WHERE dans une instruction SQL sans le mot WHERE) utilisée pour localiser l’enregistrement.
Valeur de retour
Différent de zéro si des enregistrements correspondants sont trouvés, sinon 0.
Notes
La FindNext
fonction membre commence sa recherche à l’enregistrement actif et recherche à la fin du jeu d’enregistrements.
Si vous souhaitez inclure tous les enregistrements dans votre recherche (pas seulement ceux qui répondent à une condition spécifique) utilisez l’une des opérations Move pour passer de l’enregistrement à l’enregistrement. Pour localiser un enregistrement dans un jeu d’enregistrements de type table, appelez la Seek
fonction membre.
Si un enregistrement correspondant aux critères n’est pas localisé, le pointeur d’enregistrement actif est indéterminé et FindNext
retourne zéro. Si le jeu d’enregistrements contient plusieurs enregistrements qui répondent aux critères, FindFirst
localise la première occurrence, FindNext
localise l’occurrence suivante, etc.
Attention
Si vous modifiez l’enregistrement actif, veillez à enregistrer les modifications en appelant la Update
fonction membre avant de passer à un autre enregistrement. Si vous passez à un autre enregistrement sans mise à jour, vos modifications sont perdues sans avertissement.
L’utilisation de l’une des opérations De recherche n’est pas la même que l’appel MoveFirst
ou MoveNext
, toutefois, ce qui rend simplement le premier enregistrement actif ou suivant sans spécifier de condition. Vous pouvez suivre une opération Rechercher avec une opération Déplacer.
Gardez à l’esprit ce qui suit lors de l’utilisation des opérations De recherche :
Si
Find
la valeur est renvoyée différente de zéro, l’enregistrement actif n’est pas défini. Dans ce cas, vous devez positionner le pointeur d’enregistrement actuel vers un enregistrement valide.Vous ne pouvez pas utiliser une opération Find avec un jeu d’enregistrements de type instantané de défilement vers l’avant uniquement.
Vous devez utiliser le format de date des États-Unis (mois-jour-année) lorsque vous recherchez des champs contenant des dates, même si vous n’utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, les enregistrements correspondants peuvent ne pas être trouvés.
Lorsque vous utilisez des bases de données ODBC et des feuilles de réponse dynamique volumineuses, vous pouvez découvrir que l’utilisation des opérations De recherche est lente, en particulier lorsque vous utilisez des jeux d’enregistrements volumineux. Vous pouvez améliorer les performances à l’aide de requêtes SQL avec des clauses ORDERBY ou WHERE personnalisées, des requêtes de paramètres ou
CDaoQuerydef
des objets qui récupèrent des enregistrements indexés spécifiques.
Pour plus d’informations, consultez la rubrique « FindFirst, FindLast, FindNext, FindPrevious Methods » dans l’aide de DAO.
CDaoRecordset ::FindPrev
Appelez cette fonction membre pour rechercher l’enregistrement précédent qui correspond à une condition spécifiée.
BOOL FindPrev(LPCTSTR lpszFilter);
Paramètres
lpszFilter
Expression de chaîne (comme la clause WHERE dans une instruction SQL sans le mot WHERE) utilisée pour localiser l’enregistrement.
Valeur de retour
Différent de zéro si des enregistrements correspondants sont trouvés, sinon 0.
Notes
La FindPrev
fonction membre commence sa recherche au niveau de l’enregistrement actif et recherche vers l’arrière vers le début du jeu d’enregistrements.
Si vous souhaitez inclure tous les enregistrements dans votre recherche (pas seulement ceux qui répondent à une condition spécifique) utilisez l’une des opérations Move pour passer de l’enregistrement à l’enregistrement. Pour localiser un enregistrement dans un jeu d’enregistrements de type table, appelez la Seek
fonction membre.
Si un enregistrement correspondant aux critères n’est pas localisé, le pointeur d’enregistrement actif est indéterminé et FindPrev
retourne zéro. Si le jeu d’enregistrements contient plusieurs enregistrements qui répondent aux critères, FindFirst
localise la première occurrence, FindNext
localise l’occurrence suivante, etc.
Attention
Si vous modifiez l’enregistrement actif, veillez à enregistrer les modifications en appelant la Update
fonction membre avant de passer à un autre enregistrement. Si vous passez à un autre enregistrement sans mise à jour, vos modifications sont perdues sans avertissement.
L’utilisation de l’une des opérations De recherche n’est pas la même que l’appel MoveFirst
ou MoveNext
, toutefois, ce qui rend simplement le premier enregistrement actif ou suivant sans spécifier de condition. Vous pouvez suivre une opération Rechercher avec une opération Déplacer.
Gardez à l’esprit ce qui suit lors de l’utilisation des opérations De recherche :
Si
Find
la valeur est renvoyée différente de zéro, l’enregistrement actif n’est pas défini. Dans ce cas, vous devez positionner le pointeur d’enregistrement actuel vers un enregistrement valide.Vous ne pouvez pas utiliser une opération Find avec un jeu d’enregistrements de type instantané de défilement vers l’avant uniquement.
Vous devez utiliser le format de date des États-Unis (mois-jour-année) lorsque vous recherchez des champs contenant des dates, même si vous n’utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, les enregistrements correspondants peuvent ne pas être trouvés.
Lorsque vous utilisez des bases de données ODBC et des feuilles de réponse dynamique volumineuses, vous pouvez découvrir que l’utilisation des opérations De recherche est lente, en particulier lorsque vous utilisez des jeux d’enregistrements volumineux. Vous pouvez améliorer les performances à l’aide de requêtes SQL avec des clauses ORDERBY ou WHERE personnalisées, des requêtes de paramètres ou
CDaoQuerydef
des objets qui récupèrent des enregistrements indexés spécifiques.
Pour plus d’informations, consultez la rubrique « FindFirst, FindLast, FindNext, FindPrevious Methods » dans l’aide de DAO.
CDaoRecordset ::GetAbsolutePosition
Retourne le numéro d’enregistrement de l’enregistrement actif d’un objet recordset.
long GetAbsolutePosition();
Valeur de retour
Entier compris entre 0 et le nombre d’enregistrements dans le jeu d’enregistrements. Correspond à la position ordinale de l’enregistrement actif dans le jeu d’enregistrements.
Notes
La valeur de propriété AbsolutePosition de l’objet DAO sous-jacent est basée sur zéro ; un paramètre de 0 fait référence au premier enregistrement dans le jeu d’enregistrements. Vous pouvez déterminer le nombre d’enregistrements renseignés dans le jeu d’enregistrements en appelant GetRecordCount. L’appel GetRecordCount
peut prendre un certain temps, car il doit accéder à tous les enregistrements pour déterminer le nombre.
S’il n’y a pas d’enregistrement actif, comme s’il n’y a pas d’enregistrements dans le jeu d’enregistrements, - 1 est retourné. Si l’enregistrement actif est supprimé, la valeur de la propriété AbsolutePosition n’est pas définie et MFC lève une exception si elle est référencée. Pour les recordsets de type dynaset, de nouveaux enregistrements sont ajoutés à la fin de la séquence.
Remarque
Cette propriété n’est pas destinée à être utilisée comme numéro d’enregistrement de substitution. Les signets sont toujours le moyen recommandé de conserver et de revenir à une position donnée et sont la seule façon de positionner l’enregistrement actif sur tous les types d’objets recordset. En particulier, la position d’un enregistrement donné change lorsque les enregistrements précédents sont supprimés. Il n’existe pas non plus d’assurance qu’un enregistrement donné aura la même position absolue si le jeu d’enregistrements est recréé, car l’ordre des enregistrements individuels au sein d’un jeu d’enregistrements n’est pas garanti, sauf s’il est créé avec une instruction SQL à l’aide d’une clause ORDERBY .
Remarque
Cette fonction membre est valide uniquement pour les jeux d’enregistrements de type feuille de réponse dynamique et de type instantané.
Pour plus d’informations, consultez la rubrique « AbsolutePosition Property » dans L’aide de DAO.
CDaoRecordset ::GetBookmark
Appelez cette fonction membre pour obtenir la valeur de signet dans un enregistrement particulier.
COleVariant GetBookmark();
Valeur de retour
Retourne une valeur représentant le signet sur l’enregistrement actif.
Notes
Lorsqu’un objet recordset est créé ou ouvert, chacun de ses enregistrements a déjà un signet unique s’il les prend en charge. Appel CanBookmark
pour déterminer si un jeu d’enregistrements prend en charge les signets.
Vous pouvez enregistrer le signet pour l’enregistrement actif en affectant la valeur du signet à un COleVariant
objet. Pour revenir rapidement à cet enregistrement après le passage à un autre enregistrement, appelez SetBookmark
avec un paramètre correspondant à la valeur de cet COleVariant
objet.
Remarque
L’appel de Requery modifie les signets DAO.
Pour plus d’informations, consultez la rubrique « Bookmark Property » dans l’aide de DAO.
CDaoRecordset ::GetCacheSize
Appelez cette fonction membre pour obtenir le nombre d’enregistrements mis en cache.
long GetCacheSize();
Valeur de retour
Valeur qui spécifie le nombre d’enregistrements dans un jeu d’enregistrements de type feuille de réponse dynamique contenant des données à mettre en cache localement à partir d’une source de données ODBC.
Notes
La mise en cache des données améliore les performances d’une application qui récupère des données à partir d’un serveur distant via des objets recordset de type dynaset. Un cache est un espace dans la mémoire locale qui contient les données les plus récemment récupérées du serveur au cas où les données sont demandées à nouveau pendant l’exécution de l’application. Lorsque des données sont demandées, le moteur de base de données Microsoft Jet vérifie d’abord le cache des données demandées au lieu de les récupérer à partir du serveur, ce qui prend plus de temps. Les données qui ne proviennent pas d’une source de données ODBC ne sont pas enregistrées dans le cache.
Toute source de données ODBC, telle qu’une table jointe, peut avoir un cache local.
Pour plus d’informations, consultez la rubrique « CacheSize, CacheStart Properties » dans l’aide de DAO.
CDaoRecordset ::GetCacheStart
Appelez cette fonction membre pour obtenir la valeur de signet du premier enregistrement du jeu d’enregistrements à mettre en cache.
COleVariant GetCacheStart();
Valeur de retour
Qui COleVariant
spécifie le signet du premier enregistrement dans le jeu d’enregistrements à mettre en cache.
Notes
Le moteur de base de données Microsoft Jet demande des enregistrements dans la plage de cache à partir du cache et demande des enregistrements en dehors de la plage de cache du serveur.
Remarque
Les enregistrements récupérés à partir du cache ne reflètent pas les modifications apportées simultanément aux données sources par d’autres utilisateurs.
Pour plus d’informations, consultez la rubrique « CacheSize, CacheStart Properties » dans l’aide de DAO.
CDaoRecordset ::GetCurrentIndex
Appelez cette fonction membre pour déterminer l’index actuellement utilisé dans un objet de type CDaoRecordset
table indexé.
CString GetCurrentIndex();
Valeur de retour
Contenant CString
le nom de l’index actuellement utilisé avec un jeu d’enregistrements de type table. Retourne une chaîne vide si aucun index n’a été défini.
Notes
Cet index est la base de l’ordre des enregistrements dans un jeu d’enregistrements de type table et est utilisé par la fonction membre Seek pour localiser les enregistrements.
Un CDaoRecordset
objet peut avoir plusieurs index, mais peut utiliser un seul index à la fois (bien qu’un objet CDaoTableDef puisse avoir plusieurs index définis dessus).
Pour plus d’informations, consultez la rubrique « Index Object » et la définition « current index » dans DAO Help.
CDaoRecordset ::GetDateCreated
Appelez cette fonction membre pour récupérer la date et l’heure de création d’une table de base.
COleDateTime GetDateCreated();
Valeur de retour
Objet COleDateTime contenant la date et l’heure de création de la table de base.
Notes
Les paramètres de date et d’heure sont dérivés de l’ordinateur sur lequel la table de base a été créée.
Pour plus d’informations, consultez la rubrique « DateCreated, LastUpdated Properties » dans l’aide de DAO.
CDaoRecordset ::GetDateLastUpdated
Appelez cette fonction membre pour récupérer la date et l’heure de la dernière mise à jour du schéma.
COleDateTime GetDateLastUpdated();
Valeur de retour
Objet COleDateTime contenant la date et l’heure de la dernière mise à jour de la structure de table de base (schéma).
Notes
Les paramètres de date et d’heure sont dérivés de l’ordinateur sur lequel la structure de table de base (schéma) a été mise à jour pour la dernière fois.
Pour plus d’informations, consultez la rubrique « DateCreated, LastUpdated Properties » dans l’aide de DAO.
CDaoRecordset ::GetDefaultDBName
Appelez cette fonction membre pour déterminer le nom de la base de données pour ce jeu d’enregistrements.
virtual CString GetDefaultDBName();
Valeur de retour
Qui CString
contient le chemin d’accès et le nom de la base de données à partir de laquelle ce jeu d’enregistrements est dérivé.
Notes
Si un recordset est créé sans pointeur vers CDaoDatabase, ce chemin est utilisé par le jeu d’enregistrements pour ouvrir la base de données par défaut. Par défaut, cette fonction retourne une chaîne vide. Lorsque ClassWizard dérive un nouveau jeu d’enregistrements CDaoRecordset
, il crée cette fonction pour vous.
L’exemple suivant illustre l’utilisation de la double barre oblique inverse (\\) dans la chaîne, comme il est nécessaire que la chaîne soit interprétée correctement.
CString CCustSet::GetDefaultDBName()
{
return _T("c:\\mydir\\datasrc.mdb");
}
CDaoRecordset ::GetDefaultSQL
L’infrastructure appelle cette fonction membre pour obtenir l’instruction SQL par défaut sur laquelle le jeu d’enregistrements est basé.
virtual CString GetDefaultSQL();
Valeur de retour
Qui CString
contient l’instruction SQL par défaut.
Notes
Il peut s’agir d’un nom de table ou d’une instruction SQL SELECT .
Vous définissez indirectement l’instruction SQL par défaut en déclarant votre classe recordset avec ClassWizard et ClassWizard effectue cette tâche pour vous.
Si vous transmettez une chaîne SQL Null à Open, cette fonction est appelée pour déterminer le nom de la table ou SQL pour votre jeu d’enregistrements.
CDaoRecordset ::GetEditMode
Appelez cette fonction membre pour déterminer l’état de modification, qui est l’une des valeurs suivantes :
short GetEditMode();
Valeur de retour
Retourne une valeur qui indique l’état de modification de l’enregistrement actif.
Notes
Valeur | Description |
---|---|
dbEditNone |
Aucune opération d’édition n’est en cours. |
dbEditInProgress |
Edit a été appelé. |
dbEditAdd |
AddNew a été appelé. |
Pour plus d’informations, consultez la rubrique « EditMode Property » dans L’aide de DAO.
CDaoRecordset ::GetFieldCount
Appelez cette fonction membre pour récupérer le nombre de champs (colonnes) définis dans le jeu d’enregistrements.
short GetFieldCount();
Valeur de retour
Nombre de champs dans le jeu d’enregistrements.
Notes
Pour plus d’informations, consultez la rubrique « Count Property » dans l’aide de DAO.
CDaoRecordset ::GetFieldInfo
Appelez cette fonction membre pour obtenir des informations sur les champs d’un jeu d’enregistrements.
void GetFieldInfo(
int nIndex,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetFieldInfo(
LPCTSTR lpszName,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Paramètres
nIndex
Index de base zéro du champ prédéfini dans la collection Fields du jeu d’enregistrements, pour la recherche par index.
fieldinfo
Référence à une structure CDaoFieldInfo .
dwInfoOptions
Options qui spécifient les informations sur le jeu d’enregistrements à récupérer. Les options disponibles sont répertoriées ici, ainsi que ce qu’elles entraînent le retour de la fonction. Pour optimiser les performances, récupérez uniquement le niveau d’informations dont vous avez besoin :
AFX_DAO_PRIMARY_INFO
(Par défaut) Nom, Type, Taille, AttributsAFX_DAO_SECONDARY_INFO
Informations principales, plus : position ordinale, Obligatoire, Autoriser la longueur zéro, Collating Order, Foreign Name, Source Field, Source TableAFX_DAO_ALL_INFO
Informations primaires et secondaires, plus : valeur par défaut, règle de validation, texte de validation
lpszName
Nom du champ.
Notes
Une version de la fonction vous permet de rechercher un champ par index. L’autre version vous permet de rechercher un champ par nom.
Pour obtenir une description des informations retournées, consultez la structure CDaoFieldInfo . Cette structure comporte des membres qui correspondent aux éléments d’informations répertoriés ci-dessus dans la description de dwInfoOptions. Lorsque vous demandez des informations à un niveau, vous obtenez également des informations pour tous les niveaux antérieurs.
Pour plus d’informations, consultez la rubrique « Attributes Property » dans L’aide de DAO.
CDaoRecordset ::GetFieldValue
Appelez cette fonction membre pour récupérer des données dans un jeu d’enregistrements.
virtual void GetFieldValue(
LPCTSTR lpszName,
COleVariant& varValue);
virtual void GetFieldValue(
int nIndex,
COleVariant& varValue);
virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);
Paramètres
lpszName
Pointeur vers une chaîne qui contient le nom d’un champ.
varValue
Référence à un COleVariant
objet qui stocke la valeur d’un champ.
nIndex
Index de base zéro du champ dans la collection Fields du jeu d’enregistrements, pour la recherche par index.
Valeur de retour
Les deux versions de GetFieldValue
ce qui retournent une valeur retournent un objet COleVariant qui contient la valeur d’un champ.
Notes
Vous pouvez rechercher un champ par nom ou par position ordinale.
Remarque
Il est plus efficace d’appeler l’une des versions de cette fonction membre qui prend une COleVariant
référence d’objet en tant que paramètre, plutôt que d’appeler une version qui retourne un COleVariant
objet. Les dernières versions de cette fonction sont conservées pour une compatibilité descendante.
Utilisez GetFieldValue
et SetFieldValue pour lier dynamiquement des champs au moment de l’exécution plutôt que de lier statiquement des colonnes à l’aide du mécanisme DoFieldExchange .
GetFieldValue
et le DoFieldExchange
mécanisme peut être combiné pour améliorer les performances. Par exemple, utilisez GetFieldValue
pour récupérer une valeur dont vous avez besoin uniquement à la demande et affecter cet appel à un bouton « Plus d’informations » dans l’interface.
Pour plus d’informations, consultez les rubriques « Objet de champ » et « Value Property » dans l’aide de DAO.
CDaoRecordset ::GetIndexCount
Appelez cette fonction membre pour déterminer le nombre d’index disponibles sur le jeu d’enregistrements de type table.
short GetIndexCount();
Valeur de retour
Nombre d’index dans le jeu d’enregistrements de type table.
Notes
GetIndexCount
est utile pour effectuer une boucle dans tous les index dans le jeu d’enregistrements. À cet effet, utilisez GetIndexCount
avec GetIndexInfo
. Si vous appelez cette fonction membre sur des jeux d’enregistrements de type dynaset ou de type instantané, MFC lève une exception.
Pour plus d’informations, consultez la rubrique « Attributes Property » dans L’aide de DAO.
CDaoRecordset ::GetIndexInfo
Appelez cette fonction membre pour obtenir différents types d’informations sur un index défini dans la table de base sous-jacente à un jeu d’enregistrements.
void GetIndexInfo(
int nIndex,
CDaoIndexInfo& indexinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetIndexInfo(
LPCTSTR lpszName,
CDaoIndexInfo& indexinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Paramètres
nIndex
Index de base zéro dans la collection Indexes de la table, pour rechercher par position numérique.
indexinfo
Référence à une structure CDaoIndexInfo .
dwInfoOptions
Options qui spécifient les informations sur l’index à récupérer. Les options disponibles sont répertoriées ici, ainsi que ce qu’elles entraînent le retour de la fonction. Pour optimiser les performances, récupérez uniquement le niveau d’informations dont vous avez besoin :
AFX_DAO_PRIMARY_INFO
(Par défaut) Nom, Informations de champ, ChampsAFX_DAO_SECONDARY_INFO
Informations principales, plus : Primary, Unique, Clustered, IgnoreNulls, Required, ForeignAFX_DAO_ALL_INFO
Informations primaires et secondaires, plus : Nombre distinct
lpszName
Pointeur vers le nom de l’objet d’index, pour rechercher par nom.
Notes
Une version de la fonction vous permet de rechercher un index par sa position dans la collection. L’autre version vous permet de rechercher un index par nom.
Pour obtenir une description des informations retournées, consultez la structure CDaoIndexInfo . Cette structure comporte des membres qui correspondent aux éléments d’informations répertoriés ci-dessus dans la description de dwInfoOptions. Lorsque vous demandez des informations à un niveau, vous obtenez également des informations pour tous les niveaux antérieurs.
Pour plus d’informations, consultez la rubrique « Attributes Property » dans L’aide de DAO.
CDaoRecordset ::GetLastModifiedBookmark
Appelez cette fonction membre pour récupérer le signet de l’enregistrement récemment ajouté ou mis à jour.
COleVariant GetLastModifiedBookmark();
Valeur de retour
Contenant COleVariant
un signet qui indique le dernier enregistrement ajouté ou modifié.
Notes
Lorsqu’un objet recordset est créé ou ouvert, chacun de ses enregistrements a déjà un signet unique s’il les prend en charge. Appelez GetBookmark pour déterminer si le jeu d’enregistrements prend en charge les signets. Si le jeu d’enregistrements ne prend pas en charge les signets, un CDaoException
objet est levée.
Lorsque vous ajoutez un enregistrement, il apparaît à la fin du jeu d’enregistrements et n’est pas l’enregistrement actif. Pour rendre le nouvel enregistrement actif, appelez et appelez-le GetLastModifiedBookmark
SetBookmark
pour revenir à l’enregistrement nouvellement ajouté.
Pour plus d’informations, consultez la rubrique « LastModified Property » dans L’aide de DAO.
CDaoRecordset ::GetLockingMode
Appelez cette fonction membre pour déterminer le type de verrouillage en vigueur pour le jeu d’enregistrements.
BOOL GetLockingMode();
Valeur de retour
Différent de zéro si le type de verrouillage est pessimiste, sinon 0 pour le verrouillage d’enregistrement optimiste.
Notes
Lorsque le verrouillage pessimiste est en vigueur, la page de données contenant l’enregistrement que vous modifiez est verrouillée dès que vous appelez la fonction Modifier le membre. La page est déverrouillée lorsque vous appelez la fonction Membre Update ou Close ou l’une des opérations Move ou Find.
Lorsque le verrouillage optimiste est en vigueur, la page de données contenant l’enregistrement est verrouillée uniquement lorsque l’enregistrement est mis à jour avec la Update
fonction membre.
Lorsque vous utilisez des sources de données ODBC, le mode de verrouillage est toujours optimiste.
Pour plus d’informations, consultez les rubriques « LockEdits Property » et « Locking Behavior in Multiuser Applications » dans L’aide de DAO.
CDaoRecordset ::GetName
Appelez cette fonction membre pour récupérer le nom du jeu d’enregistrements.
CString GetName();
Valeur de retour
Contenant CString
le nom du jeu d’enregistrements.
Notes
Le nom du jeu d’enregistrements doit commencer par une lettre et peut contenir un maximum de 40 caractères. Il peut inclure des nombres et des caractères de soulignement, mais ne peut pas inclure de ponctuation ou d’espaces.
Pour plus d’informations, consultez la rubrique « Name Property » dans L’aide de DAO.
CDaoRecordset ::GetParamValue
Appelez cette fonction membre pour récupérer la valeur actuelle du paramètre spécifié stocké dans l’objet DAOParameter sous-jacent.
virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);
Paramètres
nIndex
Position numérique du paramètre dans l’objet DAOParameter sous-jacent.
lpszName
Nom du paramètre dont vous souhaitez obtenir la valeur.
Valeur de retour
Objet de la classe COleVariant qui contient la valeur du paramètre.
Notes
Vous pouvez accéder au paramètre par nom ou par sa position numérique dans la collection.
Pour plus d’informations, consultez la rubrique « Parameter Object » dans l’aide de DAO.
CDaoRecordset ::GetPercentPosition
Lorsque vous utilisez un jeu d’enregistrements de type dynaset ou de type instantané, si vous appelez GetPercentPosition
avant de remplir entièrement le jeu d’enregistrements, la quantité de déplacement est relative au nombre d’enregistrements accessibles comme indiqué en appelant GetRecordCount.
float GetPercentPosition();
Valeur de retour
Nombre compris entre 0 et 100 qui indique l’emplacement approximatif de l’enregistrement actif dans l’objet recordset en fonction d’un pourcentage des enregistrements dans le jeu d’enregistrements.
Notes
Vous pouvez passer au dernier enregistrement en appelant MoveLast pour terminer la population de tous les jeux d’enregistrements, mais cela peut prendre beaucoup de temps.
Vous pouvez appeler GetPercentPosition
les trois types d’objets recordset, y compris les tables sans index. Toutefois, vous ne pouvez pas appeler GetPercentPosition
des instantanés de défilement vers l’avant uniquement ou sur un jeu d’enregistrements ouvert à partir d’une requête directe sur une base de données externe. S’il n’y a pas d’enregistrement actif ou si l’enregistrement actif a été supprimé, un CDaoException
enregistrement est levée.
Pour plus d’informations, consultez la rubrique « PercentPosition Property » dans l’aide de DAO.
CDaoRecordset ::GetRecordCount
Appelez cette fonction membre pour savoir combien d’enregistrements d’un jeu d’enregistrements ont été consultés.
long GetRecordCount();
Valeur de retour
Retourne le nombre d’enregistrements accessibles dans un objet recordset.
Notes
GetRecordCount
n’indique pas le nombre d’enregistrements contenus dans un jeu d’enregistrements de type dynaset ou de type instantané tant que tous les enregistrements n’ont pas été consultés. Cet appel de fonction membre peut prendre beaucoup de temps.
Une fois le dernier enregistrement accédé, la valeur de retour indique le nombre total d’enregistrements non supprimés dans le jeu d’enregistrements. Pour forcer l’accès au dernier enregistrement, appelez la fonction membre ou FindLast
l’ensemble MoveLast
d’enregistrements. Vous pouvez également utiliser un nombre SQL pour déterminer le nombre approximatif d’enregistrements retournés par votre requête.
Lorsque votre application supprime des enregistrements dans un jeu d’enregistrements de type dynaset, la valeur de retour des GetRecordCount
diminutions. Toutefois, les enregistrements supprimés par d’autres utilisateurs ne sont pas reflétés GetRecordCount
tant que l’enregistrement actif n’est pas positionné sur un enregistrement supprimé. Si vous exécutez une transaction qui affecte le nombre d’enregistrements et restaurez par la suite la transaction, GetRecordCount
le nombre réel d’enregistrements restants ne reflète pas le nombre réel d’enregistrements restants.
La valeur d’un jeu d’enregistrements de GetRecordCount
type instantané n’est pas affectée par les modifications apportées aux tables sous-jacentes.
La valeur d’un GetRecordCount
jeu d’enregistrements de type table reflète le nombre approximatif d’enregistrements de la table et est affectée immédiatement à mesure que les enregistrements de table sont ajoutés et supprimés.
Un jeu d’enregistrements sans enregistrement retourne la valeur 0. Lorsque vous utilisez des tables jointes ou des bases de données ODBC, GetRecordCount
retourne toujours - 1. L’appel de GetRecordCount
la Requery
fonction membre sur un jeu d’enregistrements réinitialise la valeur de la même manière que si la requête a été réexécutée.
Pour plus d’informations, consultez la rubrique « RecordCount Property » dans l’aide de DAO.
CDaoRecordset ::GetSQL
Appelez cette fonction membre pour obtenir l’instruction SQL utilisée pour sélectionner les enregistrements du jeu d’enregistrements lorsqu’il a été ouvert.
CString GetSQL() const;
Valeur de retour
Qui CString
contient l’instruction SQL.
Notes
Il s’agit généralement d’une instruction SQL SELECT .
La chaîne retournée par GetSQL
est généralement différente de n’importe quelle chaîne que vous avez peut-être passée au jeu d’enregistrements dans le paramètre lpszSQL à la fonction membre Open . Cela est dû au fait que le jeu d’enregistrements construit une instruction SQL complète en fonction de ce à quoi vous avez passé Open
, de ce que vous avez spécifié avec ClassWizard et de ce que vous avez peut-être spécifié dans les membres de données m_strFilter et m_strSort .
Remarque
Appelez cette fonction membre uniquement après l’appel Open
.
Pour plus d’informations, consultez la rubrique « SQL Property » dans l’aide de DAO.
CDaoRecordset ::GetType
Appelez cette fonction membre après avoir ouvert le jeu d’enregistrements pour déterminer le type de l’objet recordset.
short GetType();
Valeur de retour
Une des valeurs suivantes qui indique le type d’un jeu d’enregistrements :
dbOpenTable
Jeu d’enregistrements de type tabledbOpenDynaset
Jeu d’enregistrements de type DynasetdbOpenSnapshot
Jeu d’enregistrements de type instantané
Notes
Pour plus d’informations, consultez la rubrique « Type Property » dans L’aide de DAO.
CDaoRecordset ::GetValidationRule
Appelez cette fonction membre pour déterminer la règle utilisée pour valider les données.
CString GetValidationRule();
Valeur de retour
Objet CString
contenant une valeur qui valide les données d’un enregistrement à mesure qu’elles sont modifiées ou ajoutées à une table.
Notes
Cette règle est basée sur du texte et est appliquée chaque fois que la table sous-jacente est modifiée. Si les données ne sont pas légales, MFC lève une exception. Le message d’erreur retourné est le texte de la propriété ValidationText de l’objet de champ sous-jacent, le cas échéant, ou le texte de l’expression spécifiée par la propriété ValidationRule de l’objet de champ sous-jacent. Vous pouvez appeler GetValidationText pour obtenir le texte du message d’erreur.
Par exemple, un champ d’un enregistrement qui nécessite le jour du mois peut avoir une règle de validation telle que « DAY BETWEEN 1 AND 31 ».
Pour plus d’informations, consultez la rubrique « ValidationRule Property » dans L’aide de DAO.
CDaoRecordset ::GetValidationText
Appelez cette fonction membre pour récupérer le texte de la propriété ValidationText de l’objet de champ sous-jacent.
CString GetValidationText();
Valeur de retour
Objet CString
contenant le texte du message affiché si la valeur d’un champ ne satisfait pas à la règle de validation de l’objet de champ sous-jacent.
Notes
Pour plus d’informations, consultez la rubrique « ValidationText Property » dans l’aide de DAO.
CDaoRecordset ::IsBOF
Appelez cette fonction membre avant de faire défiler l’enregistrement vers l’enregistrement pour savoir si vous avez disparu avant le premier enregistrement du jeu d’enregistrements.
BOOL IsBOF() const;
Valeur de retour
Différent de zéro si le jeu d’enregistrements ne contient aucun enregistrement ou si vous avez fait défiler vers l’arrière avant le premier enregistrement ; sinon 0.
Notes
Vous pouvez également appeler IsBOF
avec IsEOF
pour déterminer si le jeu d’enregistrements contient des enregistrements ou est vide. Immédiatement après l’appel Open
, si le jeu d’enregistrements ne contient aucun enregistrement, IsBOF
retourne un nombre différent de zéro. Lorsque vous ouvrez un jeu d’enregistrements qui a au moins un enregistrement, le premier enregistrement est l’enregistrement actif et IsBOF
retourne 0.
Si le premier enregistrement est l’enregistrement actif et que vous appelez MovePrev
, IsBOF
retourne par la suite un résultat différent de zéro. Si IsBOF
elle retourne un nombre différent de zéro et que vous appelez MovePrev
, une exception est levée. Si IsBOF
cette propriété renvoie une valeur différente de zéro, l’enregistrement actif n’est pas défini et toute action nécessitant un enregistrement actif entraîne une exception.
Effet des méthodes spécifiques sur IsBOF
et IsEOF
des paramètres :
L’appel
Open*
en interne effectue le premier enregistrement dans le jeu d’enregistrements l’enregistrement actif en appelantMoveFirst
. Par conséquent, l’appelOpen
sur un jeu d’enregistrements vide provoqueIsBOF
etIsEOF
retourne non zéro. (Consultez le tableau suivant pour connaître le comportement d’un échecMoveFirst
ouMoveLast
d’un appel.)Toutes les opérations de déplacement qui localisent correctement un enregistrement provoquent à la fois
IsBOF
etIsEOF
retournent 0.Un
AddNew
appel suivi d’unUpdate
appel qui insère correctement un nouvel enregistrement entraîneIsBOF
le retour 0, mais uniquement s’ilIsEOF
n’est pas encore différent de zéro. L’état de l’étatIsEOF
reste toujours inchangé. Comme défini par le moteur de base de données Microsoft Jet, le pointeur d’enregistrement actuel d’un jeu d’enregistrements vide se trouve à la fin d’un fichier, de sorte que tout nouvel enregistrement est inséré après l’enregistrement actif.Tout
Delete
appel, même s’il supprime le seul enregistrement restant d’un jeu d’enregistrements, ne modifie pas la valeur ouIsBOF
IsEOF
.
Ce tableau indique les opérations de déplacement autorisées avec différentes combinaisons de IsBOF
/ IsEOF
.
State | MoveFirst, MoveLast | MovePrev, Move < 0 |
Move 0 | MoveNext, Move > 0 |
---|---|---|---|---|
IsBOF =non égal à zéro,IsEOF =0 |
Autorisé | Exception | Exception | Autorisé |
IsBOF =0,IsEOF =non égal à zéro |
Autorisé(e) | Autorisé | Exception | Exception |
Les deux non-zéro | Exception | Exception | Exception | Exception |
0 | Autorisé(e) | Autorisé | Autorisé | Autorisé |
L’autorisation d’une opération move ne signifie pas que l’opération localisera correctement un enregistrement. Il indique simplement qu’une tentative d’exécution de l’opération move spécifiée est autorisée et ne génère pas d’exception. La valeur des fonctions membres et IsEOF
des IsBOF
fonctions peut changer suite à la tentative de déplacement.
L’effet des opérations de déplacement qui ne localisent pas d’enregistrement sur la valeur et IsBOF
IsEOF
les paramètres est indiqué dans le tableau suivant.
Opérations | IsBOF | IsEOF |
---|---|---|
MoveFirst , MoveLast |
Non différent de zéro | Non différent de zéro |
Move 0 |
Aucun changement | Aucun changement |
MovePrev , Move < 0 |
Non différent de zéro | Aucun changement |
MoveNext , Move > 0 |
Aucun changement | Non différent de zéro |
Pour plus d’informations, consultez la rubrique « BOF, EOF Properties » dans L’aide de DAO.
CDaoRecordset ::IsDeleted
Appelez cette fonction membre pour déterminer si l’enregistrement actif a été supprimé.
BOOL IsDeleted() const;
Valeur de retour
Différent de zéro si le jeu d’enregistrements est positionné sur un enregistrement supprimé ; sinon 0.
Notes
Si vous faites défiler vers un enregistrement et IsDeleted
retourne TRUE (différent de zéro), vous devez faire défiler vers un autre enregistrement avant de pouvoir effectuer d’autres opérations d’ensemble d’enregistrements.
Remarque
Vous n’avez pas besoin de vérifier l’état supprimé des enregistrements dans un jeu d’enregistrements de type instantané ou table. Étant donné que les enregistrements ne peuvent pas être supprimés d’un instantané, il n’est pas nécessaire d’appeler IsDeleted
. Pour les recordsets de type table, les enregistrements supprimés sont réellement supprimés du jeu d’enregistrements. Une fois qu’un enregistrement a été supprimé, par vous, par un autre utilisateur ou dans un autre jeu d’enregistrements, vous ne pouvez pas faire défiler vers cet enregistrement. Par conséquent, il n’est pas nécessaire d’appeler IsDeleted
.
Lorsque vous supprimez un enregistrement d’une feuille de réponse dynamique, il est supprimé du jeu d’enregistrements et vous ne pouvez pas faire défiler vers cet enregistrement. Toutefois, si un enregistrement d’une feuille de réponse dynamique est supprimé par un autre utilisateur ou dans un autre jeu d’enregistrements basé sur la même table, IsDeleted
retourne TRUE lorsque vous faites défiler l’enregistrement ultérieurement vers cet enregistrement.
Pour plus d’informations, consultez les rubriques « Delete Method », « LastModified Property » et « EditMode Property » dans l’aide de DAO.
CDaoRecordset ::IsEOF
Appelez cette fonction membre lorsque vous faites défiler l’enregistrement pour savoir si vous avez dépassé le dernier enregistrement du jeu d’enregistrements.
BOOL IsEOF() const;
Valeur de retour
Différent de zéro si le jeu d’enregistrements ne contient aucun enregistrement ou si vous avez fait défiler au-delà du dernier enregistrement ; sinon 0.
Notes
Vous pouvez également appeler IsEOF
pour déterminer si le jeu d’enregistrements contient des enregistrements ou est vide. Immédiatement après l’appel Open
, si le jeu d’enregistrements ne contient aucun enregistrement, IsEOF
retourne un nombre différent de zéro. Lorsque vous ouvrez un jeu d’enregistrements qui a au moins un enregistrement, le premier enregistrement est l’enregistrement actif et IsEOF
retourne 0.
Si le dernier enregistrement est l’enregistrement actif lorsque vous appelez MoveNext
, IsEOF
retourne par la suite un résultat différent de zéro. Si IsEOF
elle retourne un nombre différent de zéro et que vous appelez MoveNext
, une exception est levée. Si IsEOF
cette propriété renvoie une valeur différente de zéro, l’enregistrement actif n’est pas défini et toute action nécessitant un enregistrement actif entraîne une exception.
Effet des méthodes spécifiques sur IsBOF
et IsEOF
des paramètres :
L’appel
Open
en interne effectue le premier enregistrement dans le jeu d’enregistrements l’enregistrement actif en appelantMoveFirst
. Par conséquent, l’appelOpen
sur un jeu d’enregistrements vide provoqueIsBOF
etIsEOF
retourne non zéro. (Consultez le tableau suivant pour connaître le comportement d’un appel ayant échouéMoveFirst
.)Toutes les opérations de déplacement qui localisent correctement un enregistrement provoquent à la fois
IsBOF
etIsEOF
retournent 0.Un
AddNew
appel suivi d’unUpdate
appel qui insère correctement un nouvel enregistrement entraîneIsBOF
le retour 0, mais uniquement s’ilIsEOF
n’est pas encore différent de zéro. L’état de l’étatIsEOF
reste toujours inchangé. Comme défini par le moteur de base de données Microsoft Jet, le pointeur d’enregistrement actuel d’un jeu d’enregistrements vide se trouve à la fin d’un fichier, de sorte que tout nouvel enregistrement est inséré après l’enregistrement actif.Tout
Delete
appel, même s’il supprime le seul enregistrement restant d’un jeu d’enregistrements, ne modifie pas la valeur ouIsBOF
IsEOF
.
Ce tableau indique les opérations de déplacement autorisées avec différentes combinaisons de IsBOF
/ IsEOF
.
State | MoveFirst, MoveLast | MovePrev, Move < 0 |
Move 0 | MoveNext, Move > 0 |
---|---|---|---|---|
IsBOF =non égal à zéro,IsEOF =0 |
Autorisé | Exception | Exception | Autorisé |
IsBOF =0,IsEOF =non égal à zéro |
Autorisé(e) | Autorisé | Exception | Exception |
Les deux non-zéro | Exception | Exception | Exception | Exception |
0 | Autorisé(e) | Autorisé | Autorisé | Autorisé |
L’autorisation d’une opération move ne signifie pas que l’opération localisera correctement un enregistrement. Il indique simplement qu’une tentative d’exécution de l’opération move spécifiée est autorisée et ne génère pas d’exception. La valeur des fonctions membres et IsEOF
des IsBOF
fonctions peut changer en raison de la tentative de déplacement.
L’effet des opérations de déplacement qui ne localisent pas d’enregistrement sur la valeur et IsBOF
IsEOF
les paramètres est indiqué dans le tableau suivant.
Opérations | IsBOF | IsEOF |
---|---|---|
MoveFirst , MoveLast |
Non différent de zéro | Non différent de zéro |
Move 0 |
Aucun changement | Aucun changement |
MovePrev , Move < 0 |
Non différent de zéro | Aucun changement |
MoveNext , Move > 0 |
Aucun changement | Non différent de zéro |
Pour plus d’informations, consultez la rubrique « BOF, EOF Properties » dans L’aide de DAO.
CDaoRecordset ::IsFieldDirty
Appelez cette fonction membre pour déterminer si le membre de données de champ spécifié d’une feuille de réponse dynamique a été marqué comme étant « sale » (modifié).
BOOL IsFieldDirty(void* pv);
Paramètres
Pv
Pointeur vers le membre de données de champ dont vous souhaitez vérifier l’état, ou NULL pour déterminer si l’un des champs est incorrect.
Valeur de retour
Différent de zéro si le membre de données de champ spécifié est marqué comme étant sale ; sinon 0.
Notes
Les données de tous les membres de données de champ sale sont transférées vers l’enregistrement sur la source de données lorsque l’enregistrement actif est mis à jour par un appel à la Update
fonction membre de CDaoRecordset
(après un appel à ou AddNew
).Edit
Avec cette connaissance, vous pouvez effectuer d’autres étapes, telles que le membre de données de champ sans indicateur pour marquer la colonne afin qu’elle ne soit pas écrite dans la source de données.
IsFieldDirty
est implémenté par le biais DoFieldExchange
de .
CDaoRecordset ::IsFieldNull
Appelez cette fonction membre pour déterminer si le membre de données de champ spécifié d’un recordset a été marqué comme Null.
BOOL IsFieldNull(void* pv);
Paramètres
Pv
Pointeur vers le membre de données de champ dont l’état vous souhaitez vérifier ou NULL pour déterminer si l’un des champs est Null.
Valeur de retour
Différent de zéro si le membre de données de champ spécifié est marqué comme Null ; sinon 0.
Notes
(Dans la terminologie de la base de données, Null signifie « sans valeur » et n’est pas identique à NULL en C++.) Si un membre de données de champ est marqué comme Null, il est interprété comme une colonne de l’enregistrement actif pour laquelle il n’existe aucune valeur.
Remarque
Dans certaines situations, l’utilisation IsFieldNull
peut être inefficace, car l’exemple de code suivant illustre :
COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;
// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
rs.GetFieldValue(nField, varValue);
// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
varValue.Attach(varNewVal); // do something
Remarque
Si vous utilisez la liaison d’enregistrement dynamique, sans dériver CDaoRecordset
, veillez à utiliser VT_NULL comme indiqué dans l’exemple.
CDaoRecordset ::IsFieldNullable
Appelez cette fonction membre pour déterminer si le membre de données de champ spécifié est « nullable » (peut être défini sur une valeur Null ; C++ NULL n’est pas identique à Null, ce qui, dans la terminologie de la base de données, signifie « sans valeur »).
BOOL IsFieldNullable(void* pv);
Paramètres
Pv
Pointeur vers le membre de données de champ dont l’état vous souhaitez vérifier ou NULL pour déterminer si l’un des champs est Null.
Valeur de retour
Différent de zéro si le membre de données de champ spécifié peut être rendu Null ; sinon 0.
Notes
Un champ qui ne peut pas être Null doit avoir une valeur. Si vous tentez de définir un tel champ sur Null lors de l’ajout ou de la mise à jour d’un enregistrement, la source de données rejette l’ajout ou la mise à jour et Update
lève une exception. L’exception se produit lorsque vous appelez Update
, et non lorsque vous appelez SetFieldNull
.
CDaoRecordset ::IsOpen
Appelez cette fonction membre pour déterminer si le jeu d’enregistrements est ouvert.
BOOL IsOpen() const;
Valeur de retour
Différent de zéro si la fonction membre ou Requery
l’objet Open
recordset a été appelée précédemment et que le jeu d’enregistrements n’a pas été fermé ; sinon, 0.
Notes
CDaoRecordset ::m_bCheckCacheForDirtyFields
Contient un indicateur indiquant si les champs mis en cache sont automatiquement marqués comme étant incorrects (modifiés) et Null.
Notes
L’indicateur a la valeur TRUE par défaut. Le paramètre de ce membre de données contrôle l’ensemble du mécanisme de mise en mémoire tampon double. Si vous définissez l’indicateur sur TRUE, vous pouvez désactiver la mise en cache sur un champ par champ à l’aide du mécanisme DFX. Si vous définissez l’indicateur sur FALSE, vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Définissez ce membre de données avant d’appeler Open
. Ce mécanisme est principalement destiné à faciliter l’utilisation. Les performances peuvent être plus lentes en raison de la double mise en mémoire tampon des champs à mesure que des modifications sont apportées.
CDaoRecordset ::m_nFields
Contient le nombre de membres de données de champ dans la classe recordset et le nombre de colonnes sélectionnées par le jeu d’enregistrements de la source de données.
Notes
Le constructeur de la classe recordset doit initialiser m_nFields
avec le nombre correct de champs liés statiquement. ClassWizard écrit cette initialisation lorsque vous l’utilisez pour déclarer votre classe recordset. Vous pouvez également l’écrire manuellement.
L’infrastructure utilise ce nombre pour gérer l’interaction entre les membres de données de champ et les colonnes correspondantes de l’enregistrement actif sur la source de données.
Remarque
Ce nombre doit correspondre au nombre de colonnes de sortie inscrites DoFieldExchange
après un appel au SetFieldType
paramètre CDaoFieldExchange::outputColumn
.
Vous pouvez lier des colonnes dynamiquement par le biais de CDaoRecordset::GetFieldValue
et CDaoRecordset::SetFieldValue
. Si vous le faites, vous n’avez pas besoin d’incrémenter le nombre m_nFields
pour refléter le nombre d’appels de fonction DFX dans votre DoFieldExchange
fonction membre.
CDaoRecordset ::m_nParams
Contient le nombre de membres de données de paramètre dans la classe recordset : nombre de paramètres passés avec la requête du jeu d’enregistrements.
Notes
Si votre classe recordset a des membres de données de paramètre, le constructeur de la classe doit initialiser m_nParams avec le nombre correct. La valeur de m_nParams par défaut est 0. Si vous ajoutez des membres de données de paramètre ( que vous devez faire manuellement), vous devez également ajouter manuellement une initialisation dans le constructeur de classe pour refléter le nombre de paramètres (qui doivent être au moins aussi volumineux que le nombre d’espaces réservés « » dans votre chaîne m_strFilter ou m_strSort ).
L’infrastructure utilise ce nombre lorsqu’il paramétre la requête du jeu d’enregistrements.
Remarque
Ce nombre doit correspondre au nombre de « params » inscrits DoFieldExchange
après un appel au SetFieldType
paramètre CFieldExchange::param
.
Pour plus d’informations, consultez la rubrique « Parameter Object » dans l’aide de DAO.
CDaoRecordset ::m_pDAORecordset
Contient un pointeur vers l’interface OLE de l’objet recordset DAO sous-jacent à l’objet CDaoRecordset
.
Notes
Utilisez ce pointeur si vous devez accéder directement à l’interface DAO.
Pour plus d’informations, consultez la rubrique « Recordset Object » dans l’aide de DAO.
CDaoRecordset ::m_pDatabase
Contient un pointeur vers l’objet CDaoDatabase
via lequel le jeu d’enregistrements est connecté à une source de données.
Notes
Cette variable est définie de deux façons. En règle générale, vous passez un pointeur vers un objet déjà ouvert CDaoDatabase
lorsque vous construisez l’objet recordset. Si vous passez la valeur NULL à la place, CDaoRecordset
crée un CDaoDatabase
objet pour vous et l’ouvre. Dans les deux cas, CDaoRecordset
stocke le pointeur dans cette variable.
Normalement, vous n’aurez pas besoin directement d’utiliser le pointeur stocké dans m_pDatabase
. Toutefois, si vous écrivez vos propres extensions CDaoRecordset
, vous devrez peut-être utiliser le pointeur. Par exemple, vous aurez peut-être besoin du pointeur si vous lèvez votre propre CDaoException
(s).
Pour plus d’informations, consultez la rubrique « Objet de base de données » dans l’aide DAO.
CDaoRecordset ::m_strFilter
Contient une chaîne utilisée pour construire la clause WHERE d’une instruction SQL.
Notes
Il n’inclut pas le mot réservé WHERE pour filtrer le jeu d’enregistrements. L’utilisation de ce membre de données n’est pas applicable aux jeux d’enregistrements de type table. L’utilisation de n’a aucun effet lors de m_strFilter
l’ouverture d’un jeu d’enregistrements à l’aide d’un CDaoQueryDef
pointeur.
Utilisez le format de date américain (mois-jour-année) lorsque vous filtrez des champs contenant des dates, même si vous n’utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, les données peuvent ne pas être filtrées comme prévu.
Pour plus d’informations, consultez la rubrique « Filtrer la propriété » dans l’aide de DAO.
CDaoRecordset ::m_strSort
Contient une chaîne contenant la clause ORDERBY d’une instruction SQL sans les mots réservés ORDERBY.
Notes
Vous pouvez trier sur des objets recordset de type feuille de réponse dynamique et d’instantané.
Vous ne pouvez pas trier les objets recordset de type table. Pour déterminer l’ordre de tri d’un jeu d’enregistrements de type table, appelez SetCurrentIndex.
L’utilisation de m_strSort n’a aucun effet lors de l’ouverture d’un jeu d’enregistrements à l’aide d’un CDaoQueryDef
pointeur.
Pour plus d’informations, consultez la rubrique « Trier la propriété » dans l’aide de DAO.
CDaoRecordset ::Move
Appelez cette fonction membre pour positionner les enregistrements lRows du jeu d’enregistrements à partir de l’enregistrement actif.
virtual void Move(long lRows);
Paramètres
lRows
Nombre d’enregistrements à déplacer vers l’avant ou vers l’arrière. Les valeurs positives avancent vers la fin du jeu d’enregistrements. Les valeurs négatives se déplacent vers l’arrière, vers le début.
Notes
Vous pouvez avancer ou reculer. Move( 1 )
équivaut à MoveNext
, et Move( -1 )
équivaut à MovePrev
.
Attention
L’appel d’une des Move
fonctions lève une exception si le jeu d’enregistrements n’a pas d’enregistrements. En général, appelez à la fois IsBOF
et IsEOF
avant une opération Move pour déterminer si le jeu d’enregistrements contient des enregistrements. Après avoir appelé Open
ou Requery
, appelez ou IsEOF
IsBOF
.
Remarque
Si vous avez fait défiler le début ou la fin du jeu d’enregistrements ( IsBOF
ou IsEOF
retourne un nombre différent de zéro), un appel pour Move
lever un CDaoException
.
Remarque
Si vous appelez l’une des Move
fonctions pendant que l’enregistrement actif est mis à jour ou ajouté, les mises à jour sont perdues sans avertissement.
Lorsque vous appelez Move
un instantané de défilement vers l’avant uniquement, le paramètre lRows doit être un entier positif et les signets ne sont pas autorisés. Vous pouvez donc avancer uniquement.
Pour effectuer le premier enregistrement, le dernier, le suivant ou l’enregistrement précédent dans un jeu d’enregistrements, appelez l’enregistrement actif, appelez la fonction membreMoveLast
MoveNext
, ou MovePrev
la MoveFirst
fonction membre.
Pour plus d’informations, consultez les rubriques « Move Method » et « MoveFirst, MoveLast, MoveNext, MovePrevious Methods » dans L’aide de DAO.
CDaoRecordset ::MoveFirst
Appelez cette fonction membre pour créer le premier enregistrement dans le jeu d’enregistrements (le cas échéant) l’enregistrement actif.
void MoveFirst();
Notes
Vous n’avez pas besoin d’appeler MoveFirst
immédiatement après avoir ouvert le jeu d’enregistrements. À ce stade, le premier enregistrement (le cas échéant) est automatiquement l’enregistrement actif.
Attention
L’appel d’une des Move
fonctions lève une exception si le jeu d’enregistrements n’a pas d’enregistrements. En général, appelez à la fois IsBOF
et IsEOF
avant une opération Move pour déterminer si le jeu d’enregistrements contient des enregistrements. Après avoir appelé Open
ou Requery
, appelez ou IsEOF
IsBOF
.
Remarque
Si vous appelez l’une des Move
fonctions pendant que l’enregistrement actif est mis à jour ou ajouté, les mises à jour sont perdues sans avertissement.
Utilisez les fonctions pour passer de l’enregistrement Move
à l’enregistrement sans appliquer de condition. Utilisez les opérations De recherche pour localiser les enregistrements dans un objet recordset de type feuille de réponse dynamique ou de type instantané qui satisfait à une certaine condition. Pour localiser un enregistrement dans un objet recordset de type table, appelez Seek
.
Si le jeu d’enregistrements fait référence à un jeu d’enregistrements de type table, le mouvement suit l’index actuel de la table. Vous pouvez définir l’index actuel à l’aide de la propriété Index de l’objet DAO sous-jacent. Si vous ne définissez pas l’index actuel, l’ordre des enregistrements retournés n’est pas défini.
Si vous appelez MoveLast
un objet recordset basé sur une requête SQL ou querydef, la requête est forcée à terminer et l’objet recordset est entièrement rempli.
Vous ne pouvez pas appeler la fonction ou MovePrev
membre MoveFirst
avec un instantané de défilement vers l’avant uniquement.
Pour déplacer la position de l’enregistrement actif dans un objet recordset, un nombre spécifique d’enregistrements vers l’avant ou vers l’arrière, appelez Move
.
Pour plus d’informations, consultez les rubriques « Move Method » et « MoveFirst, MoveLast, MoveNext, MovePrevious Methods » dans L’aide de DAO.
CDaoRecordset ::MoveLast
Appelez cette fonction membre pour effectuer le dernier enregistrement (le cas échéant) dans le jeu d’enregistrements l’enregistrement actif.
void MoveLast();
Notes
Attention
L’appel d’une des Move
fonctions lève une exception si le jeu d’enregistrements n’a pas d’enregistrements. En général, appelez à la fois IsBOF
et IsEOF
avant une opération Move pour déterminer si le jeu d’enregistrements contient des enregistrements. Après avoir appelé Open
ou Requery
, appelez ou IsEOF
IsBOF
.
Remarque
Si vous appelez l’une des Move
fonctions pendant que l’enregistrement actif est mis à jour ou ajouté, les mises à jour sont perdues sans avertissement.
Utilisez les fonctions pour passer de l’enregistrement Move
à l’enregistrement sans appliquer de condition. Utilisez les opérations De recherche pour localiser les enregistrements dans un objet recordset de type feuille de réponse dynamique ou de type instantané qui satisfait à une certaine condition. Pour localiser un enregistrement dans un objet recordset de type table, appelez Seek
.
Si le jeu d’enregistrements fait référence à un jeu d’enregistrements de type table, le mouvement suit l’index actuel de la table. Vous pouvez définir l’index actuel à l’aide de la propriété Index de l’objet DAO sous-jacent. Si vous ne définissez pas l’index actuel, l’ordre des enregistrements retournés n’est pas défini.
Si vous appelez MoveLast
un objet recordset basé sur une requête SQL ou querydef, la requête est forcée à terminer et l’objet recordset est entièrement rempli.
Pour déplacer la position de l’enregistrement actif dans un objet recordset, un nombre spécifique d’enregistrements vers l’avant ou vers l’arrière, appelez Move
.
Pour plus d’informations, consultez les rubriques « Move Method » et « MoveFirst, MoveLast, MoveNext, MovePrevious Methods » dans L’aide de DAO.
CDaoRecordset ::MoveNext
Appelez cette fonction membre pour créer l’enregistrement suivant dans le jeu d’enregistrements l’enregistrement actif.
void MoveNext();
Notes
Il est recommandé d’appeler IsBOF
avant de tenter de passer à l’enregistrement précédent. Un appel pour MovePrev
lever une valeur si IsBOF
elle renvoie une CDaoException
valeur différente de zéro, indiquant que vous avez déjà fait défiler l’enregistrement avant le premier enregistrement ou qu’aucun enregistrement n’a été sélectionné par le jeu d’enregistrements.
Attention
L’appel d’une des Move
fonctions lève une exception si le jeu d’enregistrements n’a pas d’enregistrements. En général, appelez à la fois IsBOF
et IsEOF
avant une opération Move pour déterminer si le jeu d’enregistrements contient des enregistrements. Après avoir appelé Open
ou Requery
, appelez ou IsEOF
IsBOF
.
Remarque
Si vous appelez l’une des Move
fonctions pendant que l’enregistrement actif est mis à jour ou ajouté, les mises à jour sont perdues sans avertissement.
Utilisez les fonctions pour passer de l’enregistrement Move
à l’enregistrement sans appliquer de condition. Utilisez les opérations De recherche pour localiser les enregistrements dans un objet recordset de type feuille de réponse dynamique ou de type instantané qui satisfait à une certaine condition. Pour localiser un enregistrement dans un objet recordset de type table, appelez Seek
.
Si le jeu d’enregistrements fait référence à un jeu d’enregistrements de type table, le mouvement suit l’index actuel de la table. Vous pouvez définir l’index actuel à l’aide de la propriété Index de l’objet DAO sous-jacent. Si vous ne définissez pas l’index actuel, l’ordre des enregistrements retournés n’est pas défini.
Pour déplacer la position de l’enregistrement actif dans un objet recordset, un nombre spécifique d’enregistrements vers l’avant ou vers l’arrière, appelez Move
.
Pour plus d’informations, consultez les rubriques « Move Method » et « MoveFirst, MoveLast, MoveNext, MovePrevious Methods » dans L’aide de DAO.
CDaoRecordset ::MovePrev
Appelez cette fonction membre pour faire de l’enregistrement précédent dans le jeu d’enregistrements l’enregistrement actif.
void MovePrev();
Notes
Il est recommandé d’appeler IsBOF
avant de tenter de passer à l’enregistrement précédent. Un appel pour MovePrev
lever une valeur si IsBOF
elle renvoie une CDaoException
valeur différente de zéro, indiquant que vous avez déjà fait défiler l’enregistrement avant le premier enregistrement ou qu’aucun enregistrement n’a été sélectionné par le jeu d’enregistrements.
Attention
L’appel d’une des Move
fonctions lève une exception si le jeu d’enregistrements n’a pas d’enregistrements. En général, appelez à la fois IsBOF
et IsEOF
avant une opération Move pour déterminer si le jeu d’enregistrements contient des enregistrements. Après avoir appelé Open
ou Requery
, appelez ou IsEOF
IsBOF
.
Remarque
Si vous appelez l’une des Move
fonctions pendant que l’enregistrement actif est mis à jour ou ajouté, les mises à jour sont perdues sans avertissement.
Utilisez les fonctions pour passer de l’enregistrement Move
à l’enregistrement sans appliquer de condition. Utilisez les opérations De recherche pour localiser les enregistrements dans un objet recordset de type feuille de réponse dynamique ou de type instantané qui satisfait à une certaine condition. Pour localiser un enregistrement dans un objet recordset de type table, appelez Seek
.
Si le jeu d’enregistrements fait référence à un jeu d’enregistrements de type table, le mouvement suit l’index actuel de la table. Vous pouvez définir l’index actuel à l’aide de la propriété Index de l’objet DAO sous-jacent. Si vous ne définissez pas l’index actuel, l’ordre des enregistrements retournés n’est pas défini.
Vous ne pouvez pas appeler la fonction ou MovePrev
membre MoveFirst
avec un instantané de défilement vers l’avant uniquement.
Pour déplacer la position de l’enregistrement actif dans un objet recordset, un nombre spécifique d’enregistrements vers l’avant ou vers l’arrière, appelez Move
.
Pour plus d’informations, consultez les rubriques « Move Method » et « MoveFirst, MoveLast, MoveNext, MovePrevious Methods » dans L’aide de DAO.
CDaoRecordset ::Open
Vous devez appeler cette fonction membre pour récupérer les enregistrements du jeu d’enregistrements.
virtual void Open(
int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
int nOptions = 0);
virtual void Open(
CDaoTableDef* pTableDef,
int nOpenType = dbOpenTable,
int nOptions = 0);
virtual void Open(
CDaoQueryDef* pQueryDef,
int nOpenType = dbOpenDynaset,
int nOptions = 0);
Paramètres
nOpenType
Une des valeurs suivantes :
dbOpenDynaset
Jeu d’enregistrements de type feuille de réponse dynamique avec défilement bidirectionnel. Il s’agit de la valeur par défaut.dbOpenTable
Jeu d’enregistrements de type table avec défilement bidirectionnel.dbOpenSnapshot
Jeu d’enregistrements de type instantané avec défilement bidirectionnel.
lpszSQL
Pointeur de chaîne contenant l’un des éléments suivants :
Pointeur NULL.
Nom d’un ou plusieurs tabledefs et/ou querydefs (séparés par des virgules).
Instruction SQL SELECT (éventuellement avec une clause SQL WHERE ou ORDERBY ).
Requête directe.
nOptions
Une ou plusieurs des options répertoriées ci-dessous. La valeur par défaut est 0. Les valeurs possibles sont les suivantes :
dbAppendOnly
Vous ne pouvez ajouter que de nouveaux enregistrements (jeu d’enregistrements de type dynaset uniquement). Cette option signifie littéralement que les enregistrements peuvent uniquement être ajoutés. Les classes de base de données ODBC MFC ont une option d’ajout uniquement qui permet aux enregistrements d’être récupérés et ajoutés.dbForwardOnly
Le jeu d’enregistrements est un instantané de défilement vers l’avant uniquement.dbSeeChanges
Générez une exception si un autre utilisateur modifie les données que vous modifiez.dbDenyWrite
D’autres utilisateurs ne peuvent pas modifier ni ajouter d’enregistrements.dbDenyRead
Les autres utilisateurs ne peuvent pas afficher les enregistrements (jeu d’enregistrements de type table uniquement).dbReadOnly
Vous ne pouvez afficher que les enregistrements ; d’autres utilisateurs peuvent les modifier.dbInconsistent
Les mises à jour incohérentes sont autorisées (jeu d’enregistrements de type dynaset uniquement).dbConsistent
Seules les mises à jour cohérentes sont autorisées (jeu d’enregistrements de type dynaset uniquement).
Remarque
Les constantes dbConsistent
et dbInconsistent
s’excluent mutuellement. Vous pouvez utiliser l’un ou l’autre, mais pas les deux dans une instance donnée de Open
.
pTableDef
Pointeur vers un objet CDaoTableDef . Cette version est valide uniquement pour les jeux d’enregistrements de type table. Lors de l’utilisation de cette option, le CDaoDatabase
pointeur utilisé pour construire l’élément CDaoRecordset
n’est pas utilisé ; plutôt, la base de données dans laquelle réside tabledef est utilisée.
pQueryDef
Pointeur vers un objet CDaoQueryDef . Cette version est valide uniquement pour les jeux d’enregistrements de type dynaset et de type instantané. Lorsque vous utilisez cette option, le CDaoDatabase
pointeur utilisé pour construire l’élément CDaoRecordset
n’est pas utilisé ; plutôt, la base de données dans laquelle réside le querydef est utilisée.
Notes
Avant d’appeler Open
, vous devez construire l’objet recordset. Pour ce faire, plusieurs méthodes sont possibles :
Lorsque vous construisez l’objet recordset, passez un pointeur vers un
CDaoDatabase
objet déjà ouvert.Lorsque vous construisez l’objet recordset, passez un pointeur vers un
CDaoDatabase
objet qui n’est pas ouvert. Le jeu d’enregistrements ouvre unCDaoDatabase
objet, mais ne le ferme pas lorsque l’objet recordset se ferme.Lorsque vous construisez l’objet recordset, passez un pointeur NULL. L’objet recordset appelle
GetDefaultDBName
pour obtenir le nom de Microsoft Access. Fichier MDB à ouvrir. Le jeu d’enregistrements ouvre ensuite unCDaoDatabase
objet et le conserve tant que le jeu d’enregistrements est ouvert. Lorsque vous appelezClose
le jeu d’enregistrements, l’objetCDaoDatabase
est également fermé.Remarque
Lorsque le jeu d’enregistrements ouvre l’objet
CDaoDatabase
, il ouvre la source de données avec un accès non cluster.
Pour la version de Open
ce paramètre utilise le paramètre lpszSQL , une fois que le jeu d’enregistrements est ouvert, vous pouvez récupérer des enregistrements de plusieurs façons. La première option consiste à avoir des fonctions DFX dans votre DoFieldExchange
. La deuxième option consiste à utiliser la liaison dynamique en appelant la GetFieldValue
fonction membre. Ces options peuvent être implémentées séparément ou en combinaison. S’ils sont combinés, vous devez transmettre vous-même l’instruction SQL à l’appel .Open
Lorsque vous utilisez la deuxième version de l’emplacement où vous passez un CDaoTableDef
objet, les colonnes résultantes sont disponibles pour vous permettre de Open
lier via DoFieldExchange
et le mécanisme DFX, et/ou de lier dynamiquement via GetFieldValue
.
Remarque
Vous ne pouvez appeler Open
qu’à l’aide d’un CDaoTableDef
objet pour les jeux d’enregistrements de type table.
Lorsque vous utilisez la troisième version de l’endroit où vous passez un CDaoQueryDef
objet, cette requête est exécutée et les colonnes obtenues sont disponibles pour vous permettre de Open
lier via DoFieldExchange
et le mécanisme DFX, et/ou de lier dynamiquement via GetFieldValue
.
Remarque
Vous ne pouvez appeler Open
qu’à l’aide d’un CDaoQueryDef
objet pour les jeux d’enregistrements de type feuille de réponse dynamique et de type instantané.
Pour la première version de Open
ce lpszSQL
paramètre, les enregistrements sont sélectionnés en fonction des critères indiqués dans le tableau suivant.
Valeur du paramètre lpszSQL . |
Les enregistrements sélectionnés sont déterminés par | Exemple |
---|---|---|
NULL | Chaîne retournée par GetDefaultSQL . |
|
Liste séparée par des virgules d’un ou plusieurs noms tabledefs et/ou querydef. | Toutes les colonnes représentées dans le DoFieldExchange . |
"Customer" |
SELECT column-list FROM table-list | Colonnes spécifiées à partir des tablesdef(s) et/ou querydef(s) spécifiées. | "SELECT CustId, CustName FROM Customer" |
La procédure habituelle consiste à passer null à Open
; dans ce cas, Open
les appels GetDefaultSQL
, une fonction membre substituable générée par ClassWizard lors de la création d’une CDaoRecordset
classe dérivée. Cette valeur donne le ou les noms tabledef et/ou querydef que vous avez spécifiés dans ClassWizard. Vous pouvez à la place spécifier d’autres informations dans le paramètre lpszSQL .
Quel que soit le passage, Open
construit une chaîne SQL finale pour la requête (la chaîne peut avoir des clauses SQL WHERE et ORDERBY ajoutées à la chaîne lpszSQL que vous avez passée), puis exécute la requête. Vous pouvez examiner la chaîne construite en appelant après l’appel GetSQL
Open
.
Les membres de données de champ de votre classe recordset sont liés aux colonnes des données sélectionnées. Si des enregistrements sont retournés, le premier enregistrement devient l’enregistrement actif.
Si vous souhaitez définir des options pour le jeu d’enregistrements, telles qu’un filtre ou un tri, définissez m_strSort
ou m_strFilter
après avoir construit l’objet recordset, mais avant d’appeler Open
. Si vous souhaitez actualiser les enregistrements dans le jeu d’enregistrements une fois que le jeu d’enregistrements est déjà ouvert, appelez Requery
.
Si vous appelez Open
un jeu d’enregistrements de type dynaset ou de type instantané, ou si la source de données fait référence à une instruction SQL ou à un tabledef qui représente une table jointe, vous ne pouvez pas utiliser dbOpenTable
pour l’argument de type ; si vous le faites, MFC lève une exception. Pour déterminer si un objet tabledef représente une table jointe, créez un objet CDaoTableDef et appelez sa fonction membre GetConnect .
Utilisez l’indicateur dbSeeChanges
si vous souhaitez intercepter les modifications apportées par un autre utilisateur ou un autre programme sur votre ordinateur lorsque vous modifiez ou supprimez le même enregistrement. Par exemple, si deux utilisateurs commencent à modifier le même enregistrement, le premier utilisateur à appeler la Update
fonction membre réussit. Lorsqu’il Update
est appelé par le deuxième utilisateur, un CDaoException
est levée. De même, si le deuxième utilisateur tente d’appeler Delete
pour supprimer l’enregistrement et qu’il a déjà été modifié par le premier utilisateur, un CDaoException
événement se produit.
En règle générale, si l’utilisateur obtient cette CDaoException
opération lors de la mise à jour, votre code doit actualiser le contenu des champs et récupérer les valeurs nouvellement modifiées. Si l’exception se produit lors de la suppression, votre code peut afficher les nouvelles données d’enregistrement à l’utilisateur et un message indiquant que les données ont récemment changé. À ce stade, votre code peut demander une confirmation que l’utilisateur souhaite toujours supprimer l’enregistrement.
Conseil
Utilisez l’option de défilement vers l’avant uniquement (dbForwardOnly
) pour améliorer les performances lorsque votre application effectue un passage unique via un jeu d’enregistrements ouvert à partir d’une source de données ODBC.
Pour plus d’informations, consultez la rubrique « OpenRecordset Method » dans DAO Help.
CDaoRecordset ::Requery
Appelez cette fonction membre pour reconstruire (actualiser) un jeu d’enregistrements.
virtual void Requery();
Notes
Si des enregistrements sont retournés, le premier enregistrement devient l’enregistrement actif.
Pour que le jeu d’enregistrements reflète les ajouts et suppressions que vous ou d’autres utilisateurs effectuez à la source de données, vous devez reconstruire le jeu d’enregistrements en appelant Requery
. Si le jeu d’enregistrements est un jeu de données dynamique, il reflète automatiquement les mises à jour que vous ou d’autres utilisateurs apportez à ses enregistrements existants (mais pas aux ajouts). Si le jeu d’enregistrements est un instantané, vous devez appeler Requery
pour refléter les modifications par d’autres utilisateurs, ainsi que les ajouts et les suppressions.
Pour une feuille de réponse dynamique ou un instantané, appelez Requery
quand vous souhaitez reconstruire le jeu d’enregistrements à l’aide de valeurs de paramètre. Définissez le nouveau filtre ou le tri en définissant m_strFilter
et m_strSort
avant d’appeler Requery
. Définissez de nouveaux paramètres en affectant de nouvelles valeurs aux membres de données de paramètres avant d’appeler Requery
.
Si la tentative de reconstruction du jeu d’enregistrements échoue, le jeu d’enregistrements est fermé. Avant d’appeler Requery
, vous pouvez déterminer si le jeu d’enregistrements peut être réappliqué en appelant la CanRestart
fonction membre. CanRestart
ne garantit pas que cela Requery
réussira.
Attention
Appelez Requery
uniquement une fois que vous avez appelé Open
.
Remarque
L’appel Requery
modifie les signets DAO.
Vous ne pouvez pas appeler Requery
un jeu d’enregistrements de type dynaset ou de type instantané si l’appel CanRestart
retourne 0, ni l’utiliser sur un jeu d’enregistrements de type table.
Si la valeur est IsBOF
différente de IsEOF
zéro après l’appel Requery
, la requête n’a pas retourné d’enregistrements et le jeu d’enregistrements ne contient aucune donnée.
Pour plus d’informations, consultez la rubrique « Requery Method » dans DAO Help.
CDaoRecordset ::Seek
Appelez cette fonction membre pour localiser l’enregistrement dans un objet recordset de type table indexé qui satisfait aux critères spécifiés pour l’index actif et en faire l’enregistrement actif.
BOOL Seek(
LPCTSTR lpszComparison,
COleVariant* pKey1,
COleVariant* pKey2 = NULL,
COleVariant* pKey3 = NULL);
BOOL Seek(
LPCTSTR lpszComparison,
COleVariant* pKeyArray,
WORD nKeys);
Paramètres
lpszComparison
Une des expressions de chaîne suivantes : « < », « <= », « = », « = », « >="ou « > ».
pKey1
Pointeur vers un COleVariant dont la valeur correspond au premier champ de l’index. Obligatoire.
pKey2
Pointeur vers une COleVariant
valeur dont la valeur correspond au deuxième champ de l’index, le cas échéant. La valeur par défaut est NULL.
pKey3
Pointeur vers un COleVariant
dont la valeur correspond au troisième champ de l’index, le cas échéant. La valeur par défaut est NULL.
pKeyArray
Pointeur vers un tableau de variantes. La taille du tableau correspond au nombre de champs dans l’index.
nKeys
Entier correspondant à la taille du tableau, qui est le nombre de champs dans l’index.
Remarque
on ne spécifie pas de caractères génériques dans les clés. Les caractères génériques ne retournent Seek
aucun enregistrement correspondant.
Valeur de retour
Différent de zéro si des enregistrements correspondants sont trouvés, sinon 0.
Notes
Utilisez la deuxième version (tableau) de Seek
pour gérer les index de quatre champs ou plus.
Seek
active la recherche d’index hautes performances sur les jeux d’enregistrements de type table. Vous devez définir l’index actuel en appelant SetCurrentIndex
avant d’appeler Seek
. Si l’index identifie un champ ou un champ de clé non unique, Seek
localise le premier enregistrement qui répond aux critères. Si vous ne définissez pas d’index, une exception est levée.
Si vous ne créez pas un jeu d’enregistrements UNICODE, les COleVariant
objets doivent être déclarés explicitement ANSI. Pour ce faire, utilisez la forme de constructeur COleVariant ::COleVariant( lpszSrc , vtSrc ) de constructeur avec vtSrc défini VT_BSTRT
sur (ANSI) ou à l’aide de la COleVariant
fonction SetString( lpszSrc , vtSrc ) avec vtSrc défini VT_BSTRT
sur .
Lorsque vous appelezSeek
, vous passez une ou plusieurs valeurs de clé et un opérateur de comparaison (« », « <<= », « = », « = », « >="ou « > »). Seek
recherche les champs de clé spécifiés et localise le premier enregistrement qui répond aux critères spécifiés par lpszComparison et pKey1. Une fois trouvé, Seek
retourne différent de zéro et rend cet enregistrement actif. En Seek
cas d’échec de recherche d’une correspondance, Seek
retourne zéro et l’enregistrement actif n’est pas défini. Lorsque vous utilisez DAO directement, vous devez vérifier explicitement la propriété NoMatch.
Si lpszComparison
l’argument est « = », «> = » ou «> », Seek
commence au début de l’index. Si lpszComparison est «< » ou «< = », Seek
commence à la fin de l’index et recherche vers l’arrière, sauf s’il existe des entrées d’index en double à la fin. Dans ce cas, Seek
commence à une entrée arbitraire parmi les entrées d’index dupliquées à la fin de l’index.
Il n’est pas obligé d’être un enregistrement actif lorsque vous utilisez Seek
.
Pour localiser un enregistrement dans un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané qui satisfait à une condition spécifique, utilisez les opérations De recherche. Pour inclure tous les enregistrements, et non seulement ceux qui répondent à une condition spécifique, utilisez les opérations Move pour passer de l’enregistrement à l’enregistrement.
Vous ne pouvez pas appeler Seek
une table jointe de n’importe quel type, car les tables jointes doivent être ouvertes en tant qu’ensembles d’enregistrements de type feuille de réponse dynamique ou de type instantané. Toutefois, si vous appelez CDaoDatabase::Open
directement pour ouvrir une base de données ISAM installable, vous pouvez appeler Seek
des tables dans cette base de données, bien que les performances soient lentes.
Pour plus d’informations, consultez la rubrique « Rechercher une méthode » dans l’aide de DAO.
CDaoRecordset ::SetAbsolutePosition
Définit le numéro d’enregistrement relatif de l’enregistrement actif d’un objet recordset.
void SetAbsolutePosition(long lPosition);
Paramètres
lPosition
Correspond à la position ordinale de l’enregistrement actif dans le jeu d’enregistrements.
Notes
L’appel SetAbsolutePosition
vous permet de positionner le pointeur d’enregistrement actif vers un enregistrement spécifique en fonction de sa position ordinale dans un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané. Vous pouvez également déterminer le numéro d’enregistrement actuel en appelant GetAbsolutePosition.
Remarque
Cette fonction membre est valide uniquement pour les jeux d’enregistrements de type feuille de réponse dynamique et de type instantané.
La valeur de propriété AbsolutePosition de l’objet DAO sous-jacent est basée sur zéro ; un paramètre de 0 fait référence au premier enregistrement dans le jeu d’enregistrements. La définition d’une valeur supérieure au nombre d’enregistrements renseignés entraîne la levée d’une exception par MFC. Vous pouvez déterminer le nombre d’enregistrements renseignés dans le jeu d’enregistrements en appelant la GetRecordCount
fonction membre.
Si l’enregistrement actif est supprimé, la valeur de la propriété AbsolutePosition n’est pas définie et MFC lève une exception si elle est référencée. De nouveaux enregistrements sont ajoutés à la fin de la séquence.
Remarque
Cette propriété n’est pas destinée à être utilisée comme numéro d’enregistrement de substitution. Les signets sont toujours la façon recommandée de conserver et de revenir à une position donnée et sont la seule façon de positionner l’enregistrement actif sur tous les types d’objets recordset qui prennent en charge les signets. En particulier, la position d’un enregistrement donné change lorsque les enregistrements précédents sont supprimés. Il n’existe pas non plus d’assurance qu’un enregistrement donné aura la même position absolue si le jeu d’enregistrements est recréé, car l’ordre des enregistrements individuels au sein d’un jeu d’enregistrements n’est pas garanti, sauf s’il est créé avec une instruction SQL à l’aide d’une clause ORDERBY .
Pour plus d’informations, consultez la rubrique « AbsolutePosition Property » dans L’aide de DAO.
CDaoRecordset ::SetBookmark
Appelez cette fonction membre pour positionner le jeu d’enregistrements sur l’enregistrement contenant le signet spécifié.
void SetBookmark(COleVariant varBookmark);
Paramètres
varBookmark
Objet COleVariant contenant la valeur de signet d’un enregistrement spécifique.
Notes
Lorsqu’un objet recordset est créé ou ouvert, chacun de ses enregistrements a déjà un signet unique. Vous pouvez récupérer le signet de l’enregistrement actif en appelant GetBookmark
et en enregistrant la valeur dans un COleVariant
objet. Vous pouvez revenir ultérieurement à cet enregistrement en appelant SetBookmark
à l’aide de la valeur de signet enregistrée.
Remarque
L’appel de Requery modifie les signets DAO.
Si vous ne créez pas un jeu d’enregistrements UNICODE, l’objet COleVariant
doit être déclaré explicitement ANSI. Pour ce faire, utilisez la forme de constructeur COleVariant ::COleVariant( lpszSrc , vtSrc ) de constructeur avec vtSrc défini VT_BSTRT
sur (ANSI) ou à l’aide de la COleVariant
fonction SetString( lpszSrc , vtSrc ) avec vtSrc défini VT_BSTRT
sur .
Pour plus d’informations, consultez les rubriques « Bookmark Property » et Bookmarkable Property » dans l’aide de DAO.
CDaoRecordset ::SetCacheSize
Appelez cette fonction membre pour définir le nombre d’enregistrements à mettre en cache.
void SetCacheSize(long lSize);
Paramètres
lSize
Spécifie le nombre d’enregistrements. Une valeur classique est 100. Un paramètre de 0 désactive la mise en cache. Le paramètre doit être compris entre 5 et 1 200 enregistrements. Le cache peut utiliser une quantité considérable de mémoire.
Notes
Un cache est un espace dans la mémoire locale qui contient les données les plus récemment récupérées du serveur au cas où les données sont demandées à nouveau pendant l’exécution de l’application. La mise en cache des données améliore les performances d’une application qui récupère des données à partir d’un serveur distant via des objets recordset de type dynaset. Lorsque des données sont demandées, le moteur de base de données Microsoft Jet vérifie d’abord le cache des données demandées au lieu de les récupérer à partir du serveur, ce qui prend plus de temps. Les données qui ne proviennent pas d’une source de données ODBC ne sont pas enregistrées dans le cache.
Toute source de données ODBC, telle qu’une table jointe, peut avoir un cache local. Pour créer le cache, ouvrez un objet recordset à partir de la source de données distante, appelez les SetCacheSize
fonctions membres SetCacheStart
, puis appelez la FillCache
fonction membre ou parcourez les enregistrements à l’aide de l’une des opérations Move. Le paramètre lSize de la SetCacheSize
fonction membre peut être basé sur le nombre d’enregistrements que votre application peut utiliser à la fois. Par exemple, si vous utilisez un jeu d’enregistrements comme source des données à afficher à l’écran, vous pouvez passer le SetCacheSize
paramètre lSize comme 20 pour afficher 20 enregistrements à la fois.
Pour plus d’informations, consultez la rubrique « CacheSize, CacheStart Properties » dans l’aide de DAO.
CDaoRecordset ::SetCacheStart
Appelez cette fonction membre pour spécifier le signet du premier enregistrement du jeu d’enregistrements à mettre en cache.
void SetCacheStart(COleVariant varBookmark);
Paramètres
varBookmark
COleVariant qui spécifie le signet du premier enregistrement dans le jeu d’enregistrements à mettre en cache.
Notes
Vous pouvez utiliser la valeur de signet de n’importe quel enregistrement pour le paramètre varBookmark de la SetCacheStart
fonction membre. Définissez l’enregistrement que vous souhaitez démarrer le cache avec l’enregistrement actif, établissez un signet pour cet enregistrement à l’aide de SetBookmark et transmettez la valeur de signet comme paramètre pour la SetCacheStart
fonction membre.
Le moteur de base de données Microsoft Jet demande des enregistrements dans la plage de cache à partir du cache et demande des enregistrements en dehors de la plage de cache du serveur.
Les enregistrements récupérés à partir du cache ne reflètent pas les modifications apportées simultanément aux données sources par d’autres utilisateurs.
Pour forcer une mise à jour de toutes les données mises en cache, passez le paramètre lSize de SetCacheSize
0, appelez SetCacheSize
à nouveau avec la taille du cache que vous avez demandé à l’origine, puis appelez la FillCache
fonction membre.
Si vous ne créez pas un jeu d’enregistrements UNICODE, l’objet COleVariant
doit être déclaré explicitement ANSI. Pour ce faire, utilisez la forme de constructeur COleVariant ::COleVariant( lpszSrc , vtSrc ) de constructeur avec vtSrc défini VT_BSTRT
sur (ANSI) ou à l’aide de la COleVariant
fonction SetString( lpszSrc , vtSrc ) avec vtSrc défini VT_BSTRT
sur .
Pour plus d’informations, consultez la rubrique CacheSize, CacheStart Properties » dans l’aide de DAO.
CDaoRecordset ::SetCurrentIndex
Appelez cette fonction membre pour définir un index sur un jeu d’enregistrements de type table.
void SetCurrentIndex(LPCTSTR lpszIndex);
Paramètres
lpszIndex
Pointeur contenant le nom de l’index à définir.
Notes
Les enregistrements dans les tables de base ne sont pas stockés dans un ordre particulier. La définition d’un index modifie l’ordre des enregistrements retournés par la base de données, mais il n’affecte pas l’ordre dans lequel les enregistrements sont stockés. L’index spécifié doit déjà être défini. Si vous essayez d’utiliser un objet d’index qui n’existe pas ou si l’index n’est pas défini lorsque vous appelez Seek, MFC lève une exception.
Vous pouvez créer un index pour la table en appelant CDaoTableDef ::CreateIndex et en ajoutant le nouvel index à la collection Indexes du tabledef sous-jacent en appelant CDaoTableDef ::Append, puis en rouvrant le jeu d’enregistrements.
Les enregistrements retournés à partir d’un jeu d’enregistrements de type table ne peuvent être classés que par les index définis pour le tabledef sous-jacent. Pour trier les enregistrements dans un autre ordre, vous pouvez ouvrir un jeu d’enregistrements de type feuille de réponse dynamique ou de type instantané à l’aide d’une clause SQL ORDERBY stockée dans CDaoRecordset ::m_strSort.
Pour plus d’informations, consultez la rubrique « Index Object » et la définition « current index » dans DAO Help.
CDaoRecordset ::SetFieldDirty
Appelez cette fonction membre pour marquer un membre de données de champ du jeu d’enregistrements comme modifié ou inchangé.
void SetFieldDirty(
void* pv,
BOOL bDirty = TRUE);
Paramètres
Pv
Contient l’adresse d’un membre de données de champ dans le jeu d’enregistrements ou NULL. Si la valeur est NULL, tous les membres de données de champ dans le jeu d’enregistrements sont marqués. (C++ NULL n’est pas identique à Null dans la terminologie de la base de données, ce qui signifie « n’ayant pas de valeur. »)
bDirty
TRUE si le membre de données de champ doit être marqué comme étant « sale » (modifié). Sinon, FALSE si le membre de données de champ doit être marqué comme « propre » (inchangé).
Notes
Le marquage des champs comme inchangés garantit que le champ n’est pas mis à jour.
Le framework marque les membres de données de champ modifiés pour s’assurer qu’ils seront écrits dans l’enregistrement sur la source de données par le mécanisme d’échange de champs d’enregistrement DAO (DFX). La modification de la valeur d’un champ définit généralement le champ sale automatiquement. Vous devrez donc rarement vous appeler SetFieldDirty
, mais vous pouvez parfois vous assurer que les colonnes sont explicitement mises à jour ou insérées indépendamment de la valeur du membre de données de champ. Le mécanisme DFX utilise également l’utilisation de PSEUDONULL. Pour plus d’informations, consultez CDaoFieldExchange ::m_nOperation.
Si le mécanisme de double mise en mémoire tampon n’est pas utilisé, la modification de la valeur du champ ne définit pas automatiquement le champ comme étant sale. Dans ce cas, il est nécessaire de définir explicitement le champ comme étant sale. L’indicateur contenu dans m_bCheckCacheForDirtyFields contrôle cette vérification automatique des champs.
L’utilisation de NULL pour le premier argument de la fonction applique la fonction à tous les outputColumn
champs, et non aux champs param dans CDaoFieldExchange
. Par exemple, l’appel
SetFieldDirty(NULL);
définit uniquement outputColumn
les champs sur NULL ; Les champs param ne sont pas affectés.
Pour travailler sur un param, vous devez fournir l’adresse réelle de l’analyseur individuel sur lequel vous souhaitez travailler, par exemple :
SetFieldDirty(&m_strParam);
Cela signifie que vous ne pouvez pas définir tous les champs param sur NULL, comme vous le pouvez avec outputColumn
les champs.
SetFieldDirty
est implémenté par le biais DoFieldExchange
de .
CDaoRecordset ::SetFieldNull
Appelez cette fonction membre pour marquer un membre de données de champ du jeu d’enregistrements comme Null (en particulier sans valeur) ou comme non Null.
void SetFieldNull(
void* pv,
BOOL bNull = TRUE);
Paramètres
Pv
Contient l’adresse d’un membre de données de champ dans le jeu d’enregistrements ou NULL. Si la valeur est NULL, tous les membres de données de champ dans le jeu d’enregistrements sont marqués. (C++ NULL n’est pas identique à Null dans la terminologie de la base de données, ce qui signifie « n’ayant pas de valeur. »)
bNull
Différent de zéro si le membre de données de champ doit être marqué comme n’ayant aucune valeur (Null). Sinon, 0 si le membre de données de champ doit être marqué comme non Null.
Notes
SetFieldNull
est utilisé pour les champs liés dans le DoFieldExchange
mécanisme.
Lorsque vous ajoutez un nouvel enregistrement à un jeu d’enregistrements, tous les membres de données de champ sont initialement définis sur une valeur Null et marqués comme « dirty » (modifié). Lorsque vous récupérez un enregistrement à partir d’une source de données, ses colonnes ont déjà des valeurs ou sont Null. S’il n’est pas approprié de créer un champ Null, une exception CDaoException est levée.
Si vous utilisez le mécanisme de mise en mémoire tampon double, par exemple, si vous souhaitez spécifiquement désigner un champ de l’enregistrement actif comme n’ayant pas de valeur, appelez SetFieldNull
avec bNull défini sur TRUE pour l’indiquer comme Null. Si un champ a été précédemment marqué Null et que vous souhaitez maintenant lui donner une valeur, définissez sa nouvelle valeur. Vous n’avez pas besoin de supprimer l’indicateur Null avec SetFieldNull
. Pour déterminer si le champ est autorisé à être Null, appelez IsFieldNullable.
Si vous n’utilisez pas le mécanisme de mise en mémoire tampon double, la modification de la valeur du champ ne définit pas automatiquement le champ comme étant sale et non Null. Vous devez définir spécifiquement les champs sales et non Null. L’indicateur contenu dans m_bCheckCacheForDirtyFields contrôle cette vérification automatique des champs.
Le mécanisme DFX utilise l’utilisation de PSEUDONULL. Pour plus d’informations, consultez CDaoFieldExchange ::m_nOperation.
L’utilisation de NULL pour le premier argument de la fonction applique la fonction uniquement aux champs, et non aux outputColumn
champs param dans CDaoFieldExchange
. Par exemple, l’appel
SetFieldNull(NULL);
définit uniquement outputColumn
les champs sur NULL ; Les champs param ne sont pas affectés.
CDaoRecordset ::SetFieldValue
Appelez cette fonction membre pour définir la valeur d’un champ, soit par position ordinale, soit en modifiant la valeur de la chaîne.
virtual void SetFieldValue(
LPCTSTR lpszName,
const COleVariant& varValue);
virtual void SetFieldValue(
int nIndex,
const COleVariant& varValue);
void SetFieldValue(
LPCTSTR lpszName,
LPCTSTR lpszValue);
void SetFieldValue(
int nIndex,
LPCTSTR lpszValue);
Paramètres
lpszName
Pointeur vers une chaîne contenant le nom d’un champ.
varValue
Référence à un objet COleVariant contenant la valeur du contenu du champ.
nIndex
Entier qui représente la position ordinale du champ dans la collection Fields du jeu d’enregistrements (de base zéro).
lpszValue
Pointeur vers une chaîne contenant la valeur du contenu du champ.
Notes
Utilisez SetFieldValue
et GetFieldValue pour lier dynamiquement des champs au moment de l’exécution plutôt que de lier statiquement des colonnes à l’aide du mécanisme DoFieldExchange .
Si vous ne créez pas un jeu d’enregistrements UNICODE, vous devez utiliser une forme de SetFieldValue
ce qui ne contient pas de COleVariant
paramètre, ou l’objet COleVariant
doit être déclaré explicitement ANSI. Pour ce faire, utilisez la forme de constructeur COleVariant ::COleVariant( lpszSrc , vtSrc ) de constructeur avec vtSrc défini VT_BSTRT
sur (ANSI) ou à l’aide de la COleVariant
fonction SetString( lpszSrc , vtSrc ) avec vtSrc défini VT_BSTRT
sur .
Pour plus d’informations, consultez les rubriques « Objet de champ » et « Value Property » dans l’aide de DAO.
CDaoRecordset ::SetFieldValueNull
Appelez cette fonction membre pour définir le champ sur une valeur Null.
void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);
Paramètres
nIndex
Index du champ dans le jeu d’enregistrements, pour rechercher par index de base zéro.
lpszName
Nom du champ dans le jeu d’enregistrements, pour rechercher par nom.
Notes
C++ NULL n’est pas identique à Null, ce qui, dans la terminologie de la base de données, signifie « sans valeur ».
Pour plus d’informations, consultez les rubriques « Objet de champ » et « Value Property » dans l’aide de DAO.
CDaoRecordset ::SetLockingMode
Appelez cette fonction membre pour définir le type de verrouillage du jeu d’enregistrements.
void SetLockingMode(BOOL bPessimistic);
Paramètres
bPessimistic
Indicateur qui indique le type de verrouillage.
Notes
Lorsque le verrouillage pessimiste est en vigueur, la page 2K contenant l’enregistrement que vous modifiez est verrouillée dès que vous appelez la Edit
fonction membre. La page est déverrouillée lorsque vous appelez la fonction membre ou Close
l’une Update
des opérations Move ou Find.
Lorsque le verrouillage optimiste est en vigueur, la page 2K contenant l’enregistrement est verrouillée uniquement lorsque l’enregistrement est mis à jour avec la Update
fonction membre.
Si une page est verrouillée, aucun autre utilisateur ne peut modifier les enregistrements sur la même page. Si vous appelez SetLockingMode
et transmettez une valeur différente de zéro et qu’un autre utilisateur a déjà verrouillé la page, une exception est levée lorsque vous appelez Edit
. D’autres utilisateurs peuvent lire des données à partir de pages verrouillées.
Si vous appelez SetLockingMode
avec une valeur zéro et un appel Update
ultérieur pendant que la page est verrouillée par un autre utilisateur, une exception se produit. Pour afficher les modifications apportées à votre enregistrement par un autre utilisateur (et perdre vos modifications), appelez la SetBookmark
fonction membre avec la valeur de signet de l’enregistrement actif.
Lorsque vous utilisez des sources de données ODBC, le mode de verrouillage est toujours optimiste.
CDaoRecordset ::SetParamValue
Appelez cette fonction membre pour définir la valeur d’un paramètre dans le jeu d’enregistrements au moment de l’exécution.
virtual void SetParamValue(
int nIndex,
const COleVariant& varValue);
virtual void SetParamValue(
LPCTSTR lpszName,
const COleVariant& varValue);
Paramètres
nIndex
Position numérique du paramètre dans la collection Parameters de querydef.
var
Valeur à définir ; voir Remarques.
lpszName
Nom du paramètre dont vous souhaitez définir la valeur.
Notes
Le paramètre doit déjà avoir été établi dans le cadre de la chaîne SQL du jeu d’enregistrements. Vous pouvez accéder au paramètre par nom ou par sa position d’index dans la collection.
Spécifiez la valeur à définir en tant qu’objet COleVariant
. Pour plus d’informations sur la définition de la valeur et du type souhaités dans votre COleVariant
objet, consultez la classe COleVariant. Si vous ne créez pas un jeu d’enregistrements UNICODE, l’objet COleVariant
doit être déclaré explicitement ANSI. Pour ce faire, utilisez la forme de constructeur COleVariant ::COleVariant( lpszSrc , vtSrc ) de constructeur avec vtSrc défini VT_BSTRT
sur (ANSI) ou à l’aide de la COleVariant
fonction SetString( lpszSrc , vtSrc ) avec vtSrc défini VT_BSTRT
sur .
CDaoRecordset ::SetParamValueNull
Appelez cette fonction membre pour définir le paramètre sur une valeur Null.
void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);
Paramètres
nIndex
Index du champ dans le jeu d’enregistrements, pour rechercher par index de base zéro.
lpszName
Nom du champ dans le jeu d’enregistrements, pour rechercher par nom.
Notes
C++ NULL n’est pas identique à Null, ce qui, dans la terminologie de la base de données, signifie « sans valeur ».
CDaoRecordset ::SetPercentPosition
Appelez cette fonction membre pour définir une valeur qui modifie l’emplacement approximatif de l’enregistrement actif dans l’objet recordset en fonction d’un pourcentage des enregistrements dans le jeu d’enregistrements.
void SetPercentPosition(float fPosition);
Paramètres
fPosition
Nombre compris entre 0 et 100.
Notes
Lors de l’utilisation d’un jeu d’enregistrements de type dynaset ou d’instantané, renseignez d’abord le jeu d’enregistrements en passant au dernier enregistrement avant d’appeler SetPercentPosition
. Si vous appelez SetPercentPosition
avant de remplir entièrement le jeu d’enregistrements, la quantité de déplacement est relative au nombre d’enregistrements accessibles, comme indiqué par la valeur de GetRecordCount. Vous pouvez passer au dernier enregistrement en appelant MoveLast
.
Une fois que vous appelez SetPercentPosition
, l’enregistrement à la position approximative correspondant à cette valeur devient actif.
Remarque
L’appel SetPercentPosition
pour déplacer l’enregistrement actif vers un enregistrement spécifique dans un jeu d’enregistrements n’est pas recommandé. Appelez plutôt la fonction membre SetBookmark .
Pour plus d’informations, consultez la rubrique « PercentPosition Property » dans l’aide de DAO.
CDaoRecordset ::Update
Appelez cette fonction membre après un appel à la fonction ou Edit
à la AddNew
fonction membre.
virtual void Update();
Notes
Cet appel est nécessaire pour terminer l’opération ou Edit
l’opérationAddNew
.
Préparez à la fois AddNew
une Edit
mémoire tampon de modification dans laquelle les données ajoutées ou modifiées sont placées pour l’enregistrement dans la source de données. Update
enregistre les données. Seuls ces champs marqués ou détectés comme modifiés sont mis à jour.
Si la source de données prend en charge les transactions, vous pouvez effectuer l’appel Update
(et sa partie correspondante AddNew
ou Edit
appel) d’une transaction.
Attention
Si vous appelez Update
sans appeler l’un ou l’autreAddNew
, Edit
Update
lève un CDaoException
. Si vous appelez AddNew
ou Edit
, vous devez appeler avant d’appeler Update
MoveNext ou fermer le jeu d’enregistrements ou la connexion de la source de données. Sinon, vos modifications sont perdues sans notification.
Lorsque l’objet recordset est pessimistement verrouillé dans un environnement multiutilisateur, l’enregistrement reste verrouillé à partir du moment Edit
où il est utilisé jusqu’à la fin de la mise à jour. Si le jeu d’enregistrements est verrouillé de manière optimiste, l’enregistrement est verrouillé et comparé à l’enregistrement pré-modifié juste avant sa mise à jour dans la base de données. Si l’enregistrement a changé depuis que vous avez appelé Edit
, l’opération Update
échoue et MFC lève une exception. Vous pouvez modifier le mode de verrouillage avec SetLockingMode
.
Remarque
Le verrouillage optimiste est toujours utilisé sur les formats de base de données externes, tels que ODBC et ISAM installable.
Pour plus d’informations, consultez les rubriques « AddNew Method », « CancelUpdate Method », « Delete Method », « LastModified Property », « Update Method » et « EditMode Property » dans L’aide de DAO.
Voir aussi
CObject, classe
Graphique hiérarchique
CDaoTableDef, classe
CDaoWorkspace, classe
CDaoDatabase, classe
CDaoQueryDef, classe