CRecordset::Open

virtuelBOOLOuvert (UINTnOpenType=AFX_DB_USE_DEFAULT_TYPE,LPCTSTRlpszSQL=,NULL,DWORDdwOptions=aucun);
jeter ( CDBException, CMemoryException );

Valeur de retour

Différent de zéro si l'objet CRecordset a été ouvert avec succès ; sinon 0 si CDatabase::Open (si demandé) renvoie la valeur 0.

Paramètres

nOpenType

Acceptez la valeur par défaut, AFX_DB_USE_DEFAULT_TYPE, ou utilisez l'une des valeurs suivantes de l' énumération OpenType:

lpszSQL

Un pointeur de chaîne contenant un des suivants:

dwOptions

Un masque de bits qui peut spécifier une combinaison de valeurs énumérées ci-dessous. Certaines d'entre elles sont mutuellement exclusives. La valeur par défaut est none.

Remarques

Vous devez appeler cette fonction membre pour exécuter la requête définie par l'objet recordset. Avant d'appeler Open, vous devez construire l'objet recordset.

Connexion de ce jeu d'enregistrements la source de données dépend de la façon dont vous construisez le jeu d'enregistrements avant d'appeler Open. Si vous passez un objet CDatabase pour le constructeur de l'objet recordset qui n'a pas été connecté à la source de données, cette fonction membre utilise GetDefaultConnect à essayer d'ouvrir l'objet de base de données. Si vous passez NULL pour le constructeur de l'objet recordset, le constructeur a construit un objet CDatabase pour vous, et ouvert tente de se connecter à l'objet de base de données. Pour plus d'informations sur la fermeture du jeu d'enregistrements et de la connexion dans ces différentes circonstances, voir étroite.

&Notenbsp ;  Accès à une source de données à travers un objet CRecordset est toujours partagé. Contrairement à la classe CDaoRecordset , vous ne pouvez pas utiliser un objet CRecordset pour ouvrir une source de données avec accès exclusif.

Lorsque vous appelez Open, une requête, généralement une instruction SQL SELECT , sélectionne les enregistrements basés sur les 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.
Nom de la table SQL Toutes les colonnes de la table-liste de DoFieldExchange ou DoBulkFieldExchange.
 « Client »
Nom de la requête prédéfinie (procédure stockée) Les colonnes de que la requête est définie pour renvoyer.
« {OverDueAccts appel} »
Sélectionnez liste des colonnes FROM table-liste Les colonnes spécifiées dans les tableaux spécifiés.
« SELECT CustId, possession du client »

! Avertisseme&ntnbsp ;  Veillez à ce que vous ne pas insérer des espaces supplémentaires dans votre chaîne SQL. Par exemple, si vous insérez les espaces entre l'accolade et le mot clé CALL , MFC mal interpréter la chaîne SQL comme nom de table et incorporer dans une instruction SELECT , qui se traduira par la levée d'une exception. De même, si votre requête prédéfinie utilise un paramètre de sortie, insérer pas espace entre l'accolade et le '?' symbole. Enfin, vous ne devez pas insérer whitespace avant l'accolade dans une instruction CALL ou avant le mot clé SELECT dans une instruction SELECT.

La procédure habituelle consiste à passer NULL à Ouvrir; dans ce cas, Ouvrir appelle GetDefaultSQL. Si vous utilisez une classe dérivée de CRecordset , GetDefualtSQL donne le nom de table 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 des clauses SQL et ORDER BY , ajoutées à la chaîne lpszSQL que vous passé) et puis exécute la requête. Vous pouvez examiner la chaîne construite en appelant GetSQL après l'appel de Open. Pour des détails supplémentaires sur la façon dont le jeu d'enregistrements construit une instruction SQL et sélectionne les enregistrements, consultez l'article jeu d'enregistrements : comment Jeux d'enregistrements de sélectionner enregistrements (ODBC) dans le Guide du programmeur Visual C++.

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, spécifiez ces après que vous construisez l'objet recordset, mais avant d'appeler Open. Si vous souhaitez actualiser les enregistrements dans le jeu d'enregistrements, après que le jeu d'enregistrements est déjà ouverte, appelez Requery.

Pour plus d'informations, y compris des exemples supplémentaires, consultez les articles Jeu d'enregistrements (ODBC), jeu d'enregistrements : comment Jeux d'enregistrements de sélectionner enregistrements (ODBC), et jeu d'enregistrements : création et de fermeture des Jeux d'enregistrements (ODBC) dans le Guide du programmeur Visual C++.

Exemple

Les exemples de code suivants montrent les différentes formes de l'appel Open.

/ / rs est un objet CRecordset ou
/ / Dérivée de CRecordset objet

/ / Rs ouverts à l'aide de l'instruction SQL par défaut,
/ / mise en œuvre des signets et éteignez
/ / vérification de champ sale automatique
RS.Ouvert (CRecordset::snapshot, &NULL,
 nbsp ;       CRecordset::useBookmarks |
         CRecordset::noDirtyFieldCheck) ;

/ / Passer une instruction SELECT complète
/ / et ouverte comme une feuille de réponse dynamique
RS.Ouvrir (CRecordset::dynaset,
         _T ("select L_Name du client")) ;

/ / Accepter tous les paramètres par défaut
RS.Ouvert)

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

Voir aussi  ;CRecordset::CRecordset, CRecordset::Close, CRecordset::GetDefaultSQL, CRecordset::GetSQL, CRecordset::m_strFilter, CRecordset::m_strSort, CRecordset::Requery

Index