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érationOpenType:
CRecordset::dy&nasetnbsp ; Un jeu d'enregistrements avec défilement bidirectionnel. L'adhésion et commander des documents sont déterminées lorsque le jeu d'enregistrements est ouvert, mais les modifications apportées par d'autres utilisateurs pour les valeurs de données sont visibles à la suite d'une opération de récupération. Feuilles de réponse dynamiques sont aussi appelés Jeux de clés de jeux d'enregistrements.
CRecordset::s&napshotnbsp ; Un jeu d'enregistrements statique avec défilement bidirectionnel. L'adhésion et commander des documents sont déterminées lorsque le jeu d'enregistrements est ouvert ; les valeurs de données sont déterminées lorsque les enregistrements sont récupérés. Modifications apportées par d'autres utilisateurs ne sont pas visibles jusqu'à ce que l'objet recordset est fermé et rouvert ensuite.
CRecordset::dynamicnbsp ; Un jeu d'enregistrements avec défilement bidirectionnel. Modifications apportées par d'autres utilisateurs pour les valeurs d'appartenance, de commande et de données sont visibles à la suite d'une opération de récupération. &Notez que de nombreux pilotes ODBC ne supportent pas ce type de jeu d'enregistrements.
CRecordset::forwardO&nlynbsp ; Un jeu d'enregistrements de lecture seule à défilement vers l'avant uniquement.
CRecordset, la valeur par défaut est CRecordset::snapshot. Le mécanisme de la valeur par défaut permet les assistants Visual C++ interagir avec ODBC CRecordset et DAO CDaoRecordset, qui ont différentes valeurs par défaut.
Pour plus d'informations sur ces types de jeu d'enregistrements, consultez l'article Jeu d'enregistrements (ODBC) dans le Guide du programmeur Visual C++. Pour plus d'informations, consultez l'article « À l'aide de bloc et curseurs scrollables » dans la référence du programmeur ODBC SDK.
Prude&ncenbsp ; Si le type demandé n'est pas pris en charge, le framework lève une exception.
lpszSQL
Un pointeur de chaîne contenant un des suivants:
Un pointeur NULL.
Le nom d'une table.
Une instruction SQL SELECT (éventuellement avec une clause SQL où ou ORDER BY ).
Une instruction CALL en spécifiant le nom d'une requête prédéfinie (procédure stockée). Veillez à ce que vous ne pas insérer d'espaces entre l'accolade et le mot clé CALL.
Pour plus d'informations sur cette chaîne, voir la table et la discussion du rôle de ClassWizard sous remarques.
&Notenbsp ; L'ordre des colonnes de votre jeu de résultats doit correspondre à l'ordre de la RFX ou de remplacer des appels de fonction RFX en bloc dans votre fonction DoFieldExchange ou DoBulkFieldExchange.
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.
CRecordset::nonenbsp ; Aucune des options ne définies. Cette valeur de paramètre est mutuellement exclusive avec toutes les autres valeurs. Par défaut, le jeu d'enregistrements peut être mis à jour avec les éditer ou Supprimer et permet l'ajout de nouveaux enregistrements avec Add&New. Mise à jour dépend de la source de données ainsi que sur l'option nOpenType , que vous spécifiez. Optimisation des additions en vrac n'est pas disponible. Extraction de lignes en bloc n'aura pas être implémentée. Enregistrements supprimés ne seront pas ignorées au cours de navigation de jeu d'enregistrements. Signets ne sont pas disponibles. Vérification du champ sale automatique est mis en œuvre.
CRecordset::appendOnlynbsp ; &Ne permettent pas de Modifier ou Supprimer le jeu d'enregistrements. Permettre seulement AddNew . Cette option s'exclut mutuellement avec la CRecordset::readOnly.
CRecordset::readO&nlynbsp ; Ouvrez le jeu d'enregistrements en lecture seule. Cette option s'exclut mutuellement avec la CRecordset::appendOnly.
CRecordset::optimizeBulkAdd  ; Utilisez une instruction SQL préparée pour optimiser l'ajout de plusieurs documents en même temps. S'applique uniquement si vous n'utilisez pas la fonction API ODBC SQLSetPos pour mettre à jour le jeu d'enregistrements. La première mise à jour détermine quels champs sont marqués Sales. Cette option s'exclut mutuellement avec la CRecordset::useMultiRowFetch.
CRecordset::useMultiRowFetchnbsp ; Mettre en oeuvre l'extraction de lignes en bloc pour permettre plusieurs lignes être récupérée dans une opération de recherche unique. Il s'agit d'une fonctionnalité avancée conçue pour améliorer les performances ; Cependant, RFX en bloc n'est pas étayée par ClassWizard. Cette option s'exclut mutuellement avec CRecordset::optimizeBulkAdd. &Notez que si vous spécifiez CRecordset::useMultiRowFetch, puis l'option CRecordset::noDirtyFieldCheck est activée automatiquement (double tampon sera pas disponible) ; sur les Jeux d'enregistrements avant uniquement, l'option CRecordset::useExtendedFetch est activée automatiquement. Pour plus d'informations sur l'extraction de lignes en bloc, consultez l'article jeu d'enregistrements : extraction de dossiers en vrac (ODBC) dans le Guide du programmeur Visual C++.
CRecordset::skipDeletedRecordsnbsp ; Ignorer supprimés tous les dossiers lors de la navigation dans le jeu d'enregistrements. Cela ralentira les performances dans certaines extractions relatives. Cette option n'est pas valide sur les Jeux d'enregistrements avant uniquement. &Notez que CRecordset::skipDeletedRecords est similaire au pilote d'emballage, qui signifie que les lignes supprimées sont retirés du jeu d'enregistrements. Toutefois, si votre pilote de dossiers de documents, puis il sautera uniquement les enregistrements que vous supprimez ; Il ne sautera pas les enregistrements supprimés par d'autres utilisateurs, alors que le jeu d'enregistrements est ouvert. CRecordset::skipDeletedRecords sautera les lignes supprimées par d'autres utilisateurs.
CRecordset::useBookmarksnbsp ; Peut utiliser des signets sur le jeu d'enregistrements, si prise en charge. Signets ralentissent la récupération de données, mais améliorer les performances de navigation des données. &Non valide sur les Jeux d'enregistrements avant uniquement. Pour plus d'informations, consultez l'article jeu d'enregistrements : signets et Positions absolues (ODBC) dans le Guide du programmeur Visual C++.
CRecordset::noDirtyFieldChecknbsp ; Désactiver automatique champ sale vérifiant (double buffering). Cela permettra d'améliorer le rendement ; Cependant, vous devez marquer manuellement de champs comme sale en appelant les fonctions du SetFieldDirty et SetField&Null membre.Notez que double mise en tampon de la classe que CRecordset est similaire à la double mise en mémoire tampon dans la classe CDaoRecordset. Cependant, de CRecordset, vous ne pouvez pas activer double tampon sur des champs individuels ; vous lui permettre pour tous les champs ou le désactiver pour tous les champs. Pour plus d'informations sur la double mise en tampon, consultez l'article DAO DAO Record Field Exchange : Double mise en mémoire tampon Records dans le Guide du programmeur Visual C++. Notez que si vous spécifiez l'option CRecordset::useMultiRowFetch, puis CRecordset::noDirtyFieldCheck est activé automatiquement ; Cependant, SetFieldDirty et SetFieldNull ne peuvent être utilisé sur les Jeux d'enregistrements qui implémentent l'extraction de lignes en bloc.
CRecordset::executeDirectnbsp ; &Ne pas utiliser une instruction SQL préparée. Pour une meilleure performance, spécifier cette option si la fonction membre Requery ne sera jamais être appelée.
CRecordset::useExte&ndedFetchnbsp ; Mettre en œuvre SQLExtendedFetch au lieu de SQLFetch. Il est conçu pour mettre en oeuvre l'extraction de lignes en bloc sur les Jeux d'enregistrements avant uniquement. Si vous spécifiez l'option CRecordset::useMultiRowFetch sur un jeu d'enregistrements avant uniquement, alors CRecordset::useExtendedFetch est activé automatiquement.
CRecordset::userAllocMultiRowBuffersnbsp ; L'utilisateur allouera des tampons de stockage pour les données. Utilisez cette option conjointement avec CRecordset::useMultiRowFetch si vous souhaitez allouer à votre propre stockage ; par ailleurs, le cadre attribuera automatiquement le stockage nécessaire. Pour plus d'informations, consultez l'article jeu d'enregistrements : extraction de dossiers en vrac (ODBC) dans le Guide du programmeur Visual C++. &Notez que spécifiant CRecordset::userAllocMultiRowBuffers sans spécifier CRecordset::useMultiRowFetch se traduira par une Échec assertion.
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 où 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.
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)