CDaoRecordset::Open

virtuel ouvert nulle (int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, type LPCTSTR lpszSQL = NULL, int nOptions= 0 );
jeter (CDaoException, CMemoryException);

virtuel ouvert nulle (CDaoTableDef *pTableDef,int nOpenType = dbOpenTable, int nOptions= 0 );
jeter (CDaoException, CMemoryException);

virtuel ouvert nulle (CDaoQueryDef *pQueryDef,int nOpenType = dbOpenDynaset, int nOptions= 0 );
jeter (CDaoException, CMemoryException);

Paramètres

nOpenType

Une des valeurs suivantes:

lpszSQL

Un pointeur de chaîne contenant un des suivants:

nOptions

Une ou plusieurs des options ci-dessous. La valeur par défaut est 0. Les valeurs possibles sont les suivantes:

pTableDef

  ;Pointeur vers un objet CDaoTableDef . Cette version est valide uniquement pour les Jeux d'enregistrements de type table. Lorsque vous utilisez cette option, le pointeur CDaoDatabase utilisé pour construire les CDaoRecordset n'est pas utilisé ; au contraire, la base de données où réside l'objet tabledef est utilisé.

pQueryDef

Pointeur vers un objet CDaoQueryDef . Cette version est valable uniquement pour le type de feuille de réponse dynamique et les Jeux d'enregistrements de type instantané. Lorsque vous utilisez cette option, le pointeur CDaoDatabase utilisé pour construire les CDaoRecordset n'est pas utilisé ; au contraire, la base de données où réside l'objet querydef est utilisé.

Remarques

Vous devez appeler cette fonction membre pour récupérer les enregistrements du jeu d'enregistrements. Avant d'appeler Open, vous devez construire l'objet recordset. Il y a plusieurs façons de le faire:

Pour la versio&n Open qui utilise le paramètre lpszSQL , une fois que le jeu d'enregistrements est ouvert vous pouvez récupérer les enregistrements de plusieurs façons. La première option est d'avoir des fonctions DFX dans votre DoFieldExchange. La deuxième option consiste à utiliser la liaison dynamique en appelant la fonction membre GetFieldValue . Ces options peuvent être mises en oeuvre séparément ou en combinaison. Si elles sont combinées, vous devrez passer dans l'instruction SQL vous-même à l'appel de Open. Pour plus d'informations sur la liaison dynamique, consultez l'article jeu d'enregistrements DAO : documents de liaison dynamique dans le Guide du programmeur Visual C++.nbsp;

Lorsque vous utilisez la deuxième version Open où vous passez un objet CDaoTableDef , les colonnes qui en résulte sera disponibles pour vous lier par l'intermédiaire de DoFieldExchange et le mécanisme DFX, ou lier dynamiquement via GetFieldValue.

&Notenbsp ;  Vous pouvez appeler seulement ouverte à l'aide d'un objet CDaoTableDef pour les Jeux d'enregistrements de type table.

Lorsque vous utilisez la troisième version Open où vous passez un objet CDaoQueryDef , que requête sera exécutée, et les colonnes qui en résulte seront disponibles pour vous à lier par l'intermédiaire de DoFieldExchange et le mécanisme DFX, ou lier dynamiquement via GetFieldValue.

&Notenbsp ;  Vous pouvez appeler seulement ouverte à l'aide d'un objet CDaoQueryDef pour le type de feuille de réponse dynamique et les Jeux d'enregistrements de type instantané.

Pour la première version Open qui utilise le paramètre lpszSQL , dossiers sont sélectionnés selon des critères indiqués dans le tableau suivant.

Valeur du paramètre lpszSQL Dossiers sélectionnés sont déterminés par Exemple
NULL La chaîne retournée par GetDefaultSQL.
Une liste séparée par des virgules d'un ou plusieurs objets tabledef et noms de l'objet querydef. Toutes les colonnes représentées dans le DoFieldExchange.
« Client »
Sélectionnez liste des colonnes FROM table-liste Les colonnes spécifiées de le tabledef(s) spécifié ou querydef(s).
« Sélectionnez CustId, CustName
DU client"

La procédure habituelle consiste à passer NULL à Ouvrir; dans cette affaire, ouverte appelle GetDefaultSQL, une fonction de membres overridable ClassWizard génère lors de la création d'un CDaoRecordset-classe dérivée. Cette valeur donne le nom de tabledef(s) ou objet querydef spécifié dans ClassWizard. Vous pouvez spécifier à la place d'autres informations dans le paramètre lpszSQL.

Tout ce que vous transmettez, Open construit une finale chaîne SQL pour la requête (la chaîne peut avoir SQL et ordonnance par les clauses ajoutées à la chaîne lpszSQL que vous avez passé) et puis exécute la requête. Vous pouvez examiner la chaîne construite en appelant GetSQL après l'appel de Open.

Les données membres de champ de votre classe de jeu d'enregistrements sont liés aux colonnes de données sélectionnées. Si tous les enregistrements sont retournés, le premier enregistrement devient l'enregistrement courant.

Si vous souhaitez définir les options du jeu d'enregistrements, tel qu'un filtre ou tri, set m_strSort ou m_strFilter après vous construire l'objet recordset, mais vous appelez avant ouvert. Si vous souhaitez actualiser les enregistrements dans le jeu d'enregistrements, après que le jeu d'enregistrements est déjà ouverte, appelez Requery.

Si vous appelez ouvert sur un type de feuille de réponse dynamique ou un objet recordset de type instantané, ou si la source de données fait référence à une instruction SQL ou d'un objet tabledef qui représente une table attachée, 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 attachée, créez un objet CDaoTableDef et appelez sa fonction membre de GetConnect.

Utiliser l'indicateur de dbSeeChanges si vous le souhaitez piéger les modifications apportées par un autre utilisateur ou un autre programme sur votre ordinateur lorsque vous modifier ou supprimer l'enregistrement même. Par exemple, si deux utilisateurs commencent à modifier le même enregistrement, le premier utilisateur à appeler la fonction membre Update réussit. Lors de la mise à jour est appelée par le deuxième utilisateur, une CDaoException est levée. De même, si le deuxième utilisateur tente d'appeler Delete pour supprimer l'enregistrement, et il a déjà été modifié par le premier utilisateur, un CDaoException survient.

En général, si l'utilisateur obtient cette CDaoException mise à jour, votre code doit actualiser le contenu des champs et récupérer les valeurs nouvellement modifiées. Si l'exception se produit dans le processus de suppression, votre code peut afficher les nouvelles données Records à l'utilisateur et un message indiquant que les données ont changé récemment. À ce stade, votre code peut demander une confirmation que l'utilisateur souhaite toujours supprimer l'enregistrement.

Astuce Utiliser l'avant uniquement de défilement option (dbForwardOnly) pour améliorer les performances lorsque votre application effectue un seul passage grâce à un jeu d'enregistrements ouvert à partir d'une source de données ODBC.

Pour plus d'informations sur ouverture Jeux d'enregistrements, voir les articles jeu d'enregistrements DAO : création de jeux d'enregistrements et DAO : création, ouverture et fermeture des objets DAO dans le Guide du programmeur Visual C++. Pour plus d'informations, consultez la rubrique « La méthode OpenRecordset » dans l'aide de DAO.

Aperçu de CDaoRecordset |  ; Membres de la classe | Graphique de la hiérarchie

Voir aussi  ;CDaoRecordset::Close, CDaoRecordset::CDaoRecordset

Index