Partager via


La classe CDaoQueryDef

Représente une définition de requête, ou « querydef », généralement stockée dans une base 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 CDaoQueryDef : public CObject

Membres

Constructeurs publics

Nom Description
CDaoQueryDef ::CDaoQueryDef Construit un objet CDaoQueryDef. Open Appel suivant ouCreate, en fonction de vos besoins.

Méthodes publiques

Nom Description
CDaoQueryDef ::Append Ajoute le querydef à la collection QueryDefs de la base de données en tant que requête enregistrée.
CDaoQueryDef ::CanUpdate Retourne une valeur différente de zéro si la requête peut mettre à jour la base de données.
CDaoQueryDef ::Close Ferme l’objet querydef. Détruisez l’objet C++ lorsque vous terminez avec celui-ci.
CDaoQueryDef ::Create Crée l’objet querydef DAO sous-jacent. Utilisez le querydef comme requête temporaire ou appelez-le Append pour l’enregistrer dans la base de données.
CDaoQueryDef ::Execute Exécute la requête définie par l’objet querydef.
CDaoQueryDef ::GetConnect Retourne le chaîne de connexion associé au querydef. La chaîne de connexion identifie la source de données. (Pour les requêtes directes SQL uniquement ; sinon une chaîne vide.)
CDaoQueryDef ::GetDateCreated Retourne la date de création de la requête enregistrée.
CDaoQueryDef ::GetDateLastUpdated Retourne la date de la dernière mise à jour de la requête enregistrée.
CDaoQueryDef ::GetFieldCount Retourne le nombre de champs définis par le querydef.
CDaoQueryDef ::GetFieldInfo Retourne des informations sur un champ spécifié défini dans la requête.
CDaoQueryDef ::GetName Retourne le nom du querydef.
CDaoQueryDef ::GetODBCTimeout Retourne la valeur de délai d’expiration utilisée par ODBC (pour une requête ODBC) lorsque le querydef est exécuté, ce qui détermine la durée pendant laquelle l’action de la requête est terminée.
CDaoQueryDef ::GetParameterCount Retourne le nombre de paramètres définis pour la requête.
CDaoQueryDef ::GetParameterInfo Retourne des informations sur un paramètre spécifié à la requête.
CDaoQueryDef ::GetParamValue Retourne la valeur d’un paramètre spécifié à la requête.
CDaoQueryDef ::GetRecordsAffected Retourne le nombre d’enregistrements affectés par une requête d’action.
CDaoQueryDef ::GetReturnsRecords Retourne une valeur différente de zéro si la requête définie par le querydef retourne des enregistrements.
CDaoQueryDef ::GetSQL Retourne la chaîne SQL qui spécifie la requête définie par le querydef.
CDaoQueryDef ::GetType Retourne le type de requête : supprimer, mettre à jour, ajouter, make-table, et ainsi de suite.
CDaoQueryDef ::IsOpen Retourne une valeur différente de zéro si le querydef est ouvert et peut être exécuté.
CDaoQueryDef ::Open Ouvre un querydef existant stocké dans la collection QueryDefs de la base de données.
CDaoQueryDef ::SetConnect Définit la chaîne de connexion d’une requête directe SQL sur une source de données ODBC.
CDaoQueryDef ::SetName Définit le nom de la requête enregistrée, en remplaçant le nom utilisé lors de la création de querydef.
CDaoQueryDef ::SetODBCTimeout Définit la valeur de délai d’expiration utilisée par ODBC (pour une requête ODBC) lorsque le querydef est exécuté.
CDaoQueryDef ::SetParamValue Définit la valeur d’un paramètre spécifié sur la requête.
CDaoQueryDef ::SetReturnsRecords Spécifie si le querydef retourne des enregistrements. La définition de cet attribut sur TRUE n’est valide que pour les requêtes directes SQL.
CDaoQueryDef ::SetSQL Définit la chaîne SQL qui spécifie la requête définie par le querydef.

Membres de données publics

Nom Description
CDaoQueryDef ::m_pDAOQueryDef Pointeur vers l’interface OLE pour l’objet querydef DAO sous-jacent.
CDaoQueryDef ::m_pDatabase Pointeur vers l’objet CDaoDatabase auquel le querydef est associé. Le querydef peut être enregistré dans la base de données ou non.

Notes

Un querydef est un objet d’accès aux données qui contient l’instruction SQL qui décrit une requête et ses propriétés, telles que « Date Created » et « ODBC Timeout ». Vous pouvez également créer des objets querydef temporaires sans les enregistrer, mais il est pratique, et beaucoup plus efficace, d’enregistrer les requêtes couramment réutilisées dans une base de données. Un objet CDaoDatabase gère une collection, appelée collection QueryDefs, qui contient ses querydefs enregistrés.

Remarque

Les classes de base de données DAO sont distinctes des classes de base de données MFC (Microsoft Foundation Class) 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. En général, les classes MFC basées sur DAO sont plus capables que les classes MFC basées sur ODBC ; les classes DAO peuvent accéder aux données, notamment via des pilotes ODBC, via leur propre moteur de base de données. Les classes DAO prennent également en charge les opérations DDL (Data Definition Language), telles que l’ajout de tables via les classes, sans avoir à appeler DAO directement.

Utilisation

Utilisez des objets querydef pour travailler avec une requête enregistrée existante ou pour créer une requête enregistrée ou une requête temporaire :

  1. Dans tous les cas, commencez par construire un CDaoQueryDef objet, en fournissant un pointeur vers l’objet CDaoDatabase auquel appartient la requête.

  2. Procédez ensuite comme suit, en fonction de ce que vous souhaitez :

    • Pour utiliser une requête enregistrée existante, appelez la fonction Open member de l’objet querydef, en fournissant le nom de la requête enregistrée.

    • Pour créer une requête enregistrée, appelez la fonction Créer un membre de l’objet querydef, en fournissant le nom de la requête. Ensuite, appelez Append pour enregistrer la requête en l’ajoutant à la collection QueryDefs de la base de données. Create place le querydef dans un état ouvert. Par conséquent, après avoir Create appelé vous n’appelez Openpas .

    • Pour créer un querydef temporaire, appelez Create. Transmettez une chaîne vide pour le nom de la requête. N’appelez Appendpas .

Lorsque vous avez terminé d’utiliser un objet querydef, appelez sa fonction membre Close , puis détruisez l’objet querydef.

Conseil

Le moyen le plus simple de créer des requêtes enregistrées consiste à les créer et à les stocker dans votre base de données à l’aide de Microsoft Access. Vous pouvez ensuite les ouvrir et les utiliser dans votre code MFC.

Objectifs

Vous pouvez utiliser un objet querydef à l’une des fins suivantes :

  • Pour créer un CDaoRecordset objet

  • Pour appeler la fonction membre de l’objet Execute pour exécuter directement une requête d’action ou une requête directe SQL

Vous pouvez utiliser un objet querydef pour n’importe quel type de requête, notamment sélectionner, action, analyse croisée, supprimer, mettre à jour, ajouter, make-table, définition de données, passer sql, union et requêtes en bloc. Le contenu de l’instruction SQL que vous fournissez détermine le type de la requête. Pour plus d’informations sur les types de requêtes, consultez les fonctions membres et GetType les Execute fonctions membres. Les recordsets sont couramment utilisés pour les requêtes retournant des lignes, généralement des requêtes utilisant select ... MOTS CLÉS FROM . Execute est le plus couramment utilisé pour les opérations en bloc. Pour plus d’informations, consultez Execute et CDaoRecordset.

Querydefs et Recordsets

Pour utiliser un objet querydef pour créer un CDaoRecordset objet, vous créez ou ouvrez généralement un querydef comme décrit précédemment. Ensuite, construisez un objet recordset, en passant un pointeur vers votre objet querydef lorsque vous appelez CDaoRecordset::Open. Le querydef que vous passez doit être dans un état ouvert. Pour plus d'informations, consultez la classe CDaoRecordset.

Vous ne pouvez pas utiliser un querydef pour créer un jeu d’enregistrements (l’utilisation la plus courante d’un querydef) sauf s’il est dans un état ouvert. Placez le querydef dans un état ouvert en appelant l’un ou Createl’autre Open .

Bases de données externes

Les objets Querydef sont la méthode recommandée pour utiliser le dialecte SQL natif d’un moteur de base de données externe. Par exemple, vous pouvez créer une requête Transact SQL (telle qu’elle est utilisée sur Microsoft SQL Server) et la stocker dans un objet querydef. Lorsque vous devez utiliser une requête SQL non basée sur le moteur de base de données Microsoft Jet, vous devez fournir un chaîne de connexion qui pointe vers la source de données externe. Les requêtes avec des chaîne de connexion valides contournent le moteur de base de données et passent la requête directement au serveur de base de données externe pour traitement.

Conseil

La meilleure façon d’utiliser des tables ODBC consiste à les attacher à un Microsoft Jet (. Base de données MDB.

Pour plus d’informations, consultez les rubriques « QueryDef Object », « QueryDefs Collection » et « CdbDatabase Object » dans le SDK DAO.

Hiérarchie d'héritage

CObject

CDaoQueryDef

Spécifications

En-tête : afxdao.h

CDaoQueryDef ::Append

Appelez cette fonction membre après avoir appelé Create pour créer un objet querydef.

virtual void Append();

Notes

Append enregistre le querydef dans la base de données en ajoutant l’objet à la collection QueryDefs de la base de données. Vous pouvez utiliser le querydef comme objet temporaire sans l’ajouter, mais si vous souhaitez qu’il persiste, vous devez appeler Append.

Si vous tentez d’ajouter un objet querydef temporaire, MFC lève une exception de type CDaoException.

CDaoQueryDef ::CanUpdate

Appelez cette fonction membre pour déterminer si vous pouvez modifier le querydef, par exemple en modifiant son nom ou sa chaîne SQL.

BOOL CanUpdate();

Valeur de retour

Différent de zéro si vous pouvez modifier le querydef ; sinon 0.

Notes

Vous pouvez modifier le querydef si :

  • Elle n’est pas basée sur une base de données ouverte en lecture seule.

  • Vous disposez des autorisations de mise à jour pour la base de données.

    Cela dépend de l’implémentation des fonctionnalités de sécurité. MFC ne prend pas en charge la sécurité ; vous devez l’implémenter vous-même en appelant DAO directement ou en utilisant Microsoft Access. Consultez la rubrique « Permissions Property » dans L’aide de DAO.

CDaoQueryDef ::CDaoQueryDef

Construit un objet CDaoQueryDef.

CDaoQueryDef(CDaoDatabase* pDatabase);

Paramètres

pDatabase
Pointeur vers un objet CDaoDatabase ouvert.

Notes

L’objet peut représenter un querydef existant stocké dans la collection QueryDefs de la base de données, une nouvelle requête à stocker dans la collection ou une requête temporaire, à ne pas stocker. Votre étape suivante dépend du type de querydef :

  • Si l’objet représente un querydef existant, appelez la fonction Open member de l’objet pour l’initialiser.

  • Si l’objet représente un nouveau querydef à enregistrer, appelez la fonction Créer un membre de l’objet. Cela ajoute l’objet à la collection QueryDefs de la base de données. Appelez CDaoQueryDef ensuite les fonctions membres pour définir les attributs de l’objet. Enfin, appelez Append.

  • Si l’objet représente un querydef temporaire (pas à enregistrer dans la base de données), appelez Create, en passant une chaîne vide pour le nom de la requête. Après avoir appelé Create, initialisez le querydef en définissant directement ses attributs. N’appelez Appendpas .

Pour définir les attributs du querydef, vous pouvez utiliser les fonctions membres SetName, SetSQL, SetConnect, SetODBCTimeout et SetReturnsRecords .

Lorsque vous avez terminé avec l’objet querydef, appelez sa fonction membre Close . Si vous avez un pointeur vers le querydef, utilisez l’opérateur pour détruire l’objet delete C++.

CDaoQueryDef ::Close

Appelez cette fonction membre lorsque vous avez terminé d’utiliser l’objet querydef.

virtual void Close();

Notes

La fermeture du querydef libère l’objet DAO sous-jacent, mais ne détruit pas l’objet querydef DAO enregistré ou l’objet C++ CDaoQueryDef . Ce n’est pas le même que CDaoDatabase ::D eleteQueryDef, qui supprime le querydef de la collection QueryDefs de la base de données dans DAO (si ce n’est pas un querydef temporaire).

CDaoQueryDef ::Create

Appelez cette fonction membre pour créer une requête enregistrée ou une nouvelle requête temporaire.

virtual void Create(
    LPCTSTR lpszName = NULL,
    LPCTSTR lpszSQL = NULL);

Paramètres

lpszName
Nom unique de la requête enregistrée dans la base de données. Pour plus d’informations sur la chaîne, consultez la rubrique « CreateQueryDef Method » dans l’aide de DAO. Si vous acceptez la valeur par défaut, une chaîne vide, un querydef temporaire est créé. Une telle requête n’est pas enregistrée dans la collection QueryDefs.

lpszSQL
Chaîne SQL qui définit la requête. Si vous acceptez la valeur par défaut de NULL, vous devez appeler ultérieurement SetSQL pour définir la chaîne. Jusqu’à ce moment-là, la requête n’est pas définie. Toutefois, vous pouvez utiliser la requête non définie pour ouvrir un jeu d’enregistrements ; voir Remarques pour plus d’informations. L’instruction SQL doit être définie avant de pouvoir ajouter le querydef à la collection QueryDefs.

Notes

Si vous passez un nom dans lpszName, vous pouvez appeler Append pour enregistrer le querydef dans la collection QueryDefs de la base de données. Sinon, l’objet est un querydef temporaire et n’est pas enregistré. Dans les deux cas, le querydef est dans un état ouvert et vous pouvez l’utiliser pour créer un objet CDaoRecordset ou appeler la fonction de membre Execute de querydef.

Si vous ne fournissez pas d’instruction SQL dans lpszSQL, vous ne pouvez pas exécuter la requête avec Execute laquelle vous pouvez l’utiliser pour créer un jeu d’enregistrements. Dans ce cas, MFC utilise l’instruction SQL par défaut du jeu d’enregistrements.

CDaoQueryDef ::Execute

Appelez cette fonction membre pour exécuter la requête définie par l’objet querydef.

virtual void Execute(int nOptions = dbFailOnError);

Paramètres

nOptions
Entier qui détermine les caractéristiques de la requête. Pour plus d’informations, consultez la rubrique « Execute Method » dans l’aide de DAO. Vous pouvez utiliser l’opérateur OR au niveau du bit (|) pour combiner les constantes suivantes pour cet argument :

  • dbDenyWrite Refuser l’autorisation d’écriture à d’autres utilisateurs.

  • dbInconsistent Mises à jour incohérentes.

  • dbConsistent Mises à jour cohérentes.

  • dbSQLPassThrough Pass-through SQL. Provoque le passage de l’instruction SQL à une base de données ODBC pour le traitement.

  • dbFailOnError Valeur par défaut. Restaurez les mises à jour si une erreur se produit et signalez l’erreur à l’utilisateur.

  • dbSeeChanges Générez une erreur d’exécution si un autre utilisateur modifie les données que vous modifiez.

Remarque

Pour obtenir une explication des termes « incohérents » et « cohérents », consultez la rubrique « Execute Method » dans L’aide de DAO.

Notes

Les objets Querydef utilisés pour l’exécution de cette manière ne peuvent représenter qu’un des types de requêtes suivants :

  • Requêtes d’action

  • Requêtes directes SQL

Execute ne fonctionne pas pour les requêtes qui retournent des enregistrements, par exemple sélectionner des requêtes. Execute est couramment utilisé pour les requêtes d’opération en bloc, telles que UPDATE, INSERT ou SELECT INTO, ou pour les opérations DDL (Data Definition Language).

Conseil

La meilleure façon d’utiliser des sources de données ODBC consiste à attacher des tables à un Microsoft Jet (. Base de données MDB. Pour plus d’informations, consultez la rubrique « Accès aux bases de données externes avec DAO » dans l’aide de DAO.

Appelez la fonction membre GetRecordsAffected de l’objet querydef pour déterminer le nombre d’enregistrements affectés par l’appel le plus récent Execute . Par exemple, GetRecordsAffected retourne des informations sur le nombre d’enregistrements supprimés, mis à jour ou insérés lors de l’exécution d’une requête d’action. Le nombre retourné ne reflète pas les modifications apportées aux tables associées lorsque les mises à jour ou suppressions en cascade sont en vigueur.

Si vous incluez à la fois dbInconsistent et si vous n’incluez ni l’un ni dbConsistent l’autre, le résultat est la valeur par défaut dbInconsistent.

Execute ne retourne pas un jeu d’enregistrements. L’utilisation Execute sur une requête qui sélectionne les enregistrements entraîne la levée d’une exception de type CDaoException.

CDaoQueryDef ::GetConnect

Appelez cette fonction membre pour obtenir le chaîne de connexion associé à la source de données du querydef.

CString GetConnect();

Valeur de retour

Contenant CString la chaîne de connexion pour le querydef.

Notes

Cette fonction est utilisée uniquement avec les sources de données ODBC et certains pilotes ISAM. Il n’est pas utilisé avec les bases de données Microsoft Jet (.MDB) ; dans ce cas, GetConnect retourne une chaîne vide. Pour plus d’informations, consultez SetConnect.

Conseil

La meilleure façon d’utiliser des tables ODBC consiste à les attacher à un . Base de données MDB. Pour plus d’informations, consultez la rubrique « Accès aux bases de données externes avec DAO » dans l’aide de DAO.

Pour plus d’informations sur les chaîne de connexion s, consultez la rubrique « Connect Property » dans l’aide de DAO.

CDaoQueryDef ::GetDateCreated

Appelez cette fonction membre pour obtenir la date de création de l’objet querydef.

COleDateTime GetDateCreated();

Valeur de retour

Objet COleDateTime contenant la date et l’heure de création du querydef.

Notes

Pour plus d’informations, consultez la rubrique « DateCreated, LastUpdated Properties » dans l’aide de DAO.

CDaoQueryDef ::GetDateLastUpdated

Appelez cette fonction membre pour obtenir la date de la dernière mise à jour de l’objet querydef, lorsque l’une de ses propriétés a été modifiée, telle que son nom, sa chaîne SQL ou son chaîne de connexion.

COleDateTime GetDateLastUpdated();

Valeur de retour

Objet COleDateTime contenant la date et l’heure de la dernière mise à jour du querydef.

Notes

Pour plus d’informations, consultez la rubrique « DateCreated, LastUpdated Properties » dans l’aide de DAO.

CDaoQueryDef ::GetFieldCount

Appelez cette fonction membre pour récupérer le nombre de champs dans la requête.

short GetFieldCount();

Valeur de retour

Nombre de champs définis dans la requête.

Notes

GetFieldCount est utile pour parcourir tous les champs du querydef. À cet effet, utilisez GetFieldCount avec GetFieldInfo.

CDaoQueryDef ::GetFieldInfo

Appelez cette fonction membre pour obtenir différents types d’informations sur un champ défini dans le querydef.

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 souhaité dans la collection Fields de querydef, pour la recherche par index.

fieldinfo
Référence à un CDaoFieldInfo objet qui retourne les informations demandées.

dwInfoOptions
Options qui spécifient les informations sur le champ à récupérer. Les options disponibles sont répertoriées ici, ainsi que ce qu’elles entraînent le retour de la fonction :

  • nom AFX_DAO_PRIMARY_INFO (valeur par défaut), type, taille, attributs

  • AFX_DAO_SECONDARY_INFO informations principales plus : position ordinale, obligatoire, autoriser la longueur zéro, champ source, nom étranger, table source, ordre de classement

  • AFX_DAO_ALL_INFO informations primaires et secondaires plus : valeur par défaut, texte de validation, règle de validation

lpszName
Chaîne contenant le nom du champ souhaité, pour rechercher par nom. Vous pouvez utiliser CString.

Notes

Pour obtenir une description des informations retournées dans fieldinfo, consultez la structure CDaoFieldInfo . Cette structure comporte des membres qui correspondent aux informations descriptives sous dwInfoOptions ci-dessus. Si vous demandez un niveau d’information, vous obtenez également tous les niveaux d’information antérieurs.

CDaoQueryDef ::GetName

Appelez cette fonction membre pour récupérer le nom de la requête représentée par le querydef.

CString GetName();

Valeur de retour

Nom de la requête.

Notes

Les noms Querydef sont des noms définis par l’utilisateur uniques. Pour plus d’informations sur les noms querydef, consultez la rubrique « Name Property » dans l’aide de DAO.

CDaoQueryDef ::GetODBCTimeout

Appelez cette fonction membre pour récupérer la limite de temps actuelle avant qu’une requête vers une source de données ODBC expire.

short GetODBCTimeout();

Valeur de retour

Nombre de secondes avant l’expiration d’une requête.

Notes

Pour plus d’informations sur cette limite de temps, consultez la rubrique « ODBCTimeout Property » dans l’aide de DAO.

Conseil

La meilleure façon d’utiliser des tables ODBC consiste à les attacher à un Microsoft Jet (. Base de données MDB. Pour plus d’informations, consultez la rubrique « Accès aux bases de données externes avec DAO » dans l’aide de DAO.

CDaoQueryDef ::GetParameterCount

Appelez cette fonction membre pour récupérer le nombre de paramètres dans la requête enregistrée.

short GetParameterCount();

Valeur de retour

Nombre de paramètres définis dans la requête.

Notes

GetParameterCount est utile pour parcourir tous les paramètres dans querydef. À cet effet, utilisez GetParameterCount avec GetParameterInfo.

Pour plus d’informations, consultez les rubriques « Parameter Object », « Parameters Collection » et « PARAMETERS Declaration (SQL) » dans l’aide de DAO.

CDaoQueryDef ::GetParameterInfo

Appelez cette fonction membre pour obtenir des informations sur un paramètre défini dans le querydef.

void GetParameterInfo(
    int nIndex,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetParameterInfo(
    LPCTSTR lpszName,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Paramètres

nIndex
Index de base zéro du paramètre souhaité dans la collection Parameters de querydef, pour la recherche par index.

paraminfo
Référence à un objet CDaoParameterInfo qui retourne les informations demandées.

dwInfoOptions
Options qui spécifient les informations sur le paramètre à récupérer. L’option disponible est répertoriée ici, ainsi que ce qu’elle entraîne le retour de la fonction :

  • AFX_DAO_PRIMARY_INFO (Par défaut) Nom, Type

lpszName
Chaîne contenant le nom du paramètre souhaité, pour rechercher par nom. Vous pouvez utiliser CString.

Notes

Pour obtenir une description des informations retournées dans paraminfo, consultez la CDaoParameterInfo structure. Cette structure comporte des membres qui correspondent aux informations descriptives décrites dwInfoOptions ci-dessus.

Pour plus d’informations, consultez la rubrique « PARAMETERS Declaration (SQL) » dans l’aide de DAO.

CDaoQueryDef ::GetParamValue

Appelez cette fonction membre pour récupérer la valeur actuelle du paramètre spécifié stocké dans la collection Parameters de querydef.

virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);

Paramètres

lpszName
Nom du paramètre dont vous souhaitez obtenir la valeur, pour rechercher par nom.

nIndex
Index de base zéro du paramètre dans la collection Parameters de querydef, pour la recherche par index. Vous pouvez obtenir cette valeur avec des appels à GetParameterCount et GetParameterInfo.

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 ordinale dans la collection.

Pour plus d’informations, consultez la rubrique « PARAMETERS Declaration (SQL) » dans l’aide de DAO.

CDaoQueryDef ::GetRecordsAffected

Appelez cette fonction membre pour déterminer le nombre d’enregistrements affectés par le dernier appel d’Execute.

long GetRecordsAffected();

Valeur de retour

Nombre d’enregistrements affectés.

Notes

Le nombre retourné ne reflète pas les modifications apportées aux tables associées lorsque les mises à jour ou suppressions en cascade sont en vigueur.

Pour plus d’informations, consultez la rubrique « RecordsAffected Property » dans L’aide de DAO.

CDaoQueryDef ::GetReturnsRecords

Appelez cette fonction membre pour déterminer si le querydef est basé sur une requête qui retourne des enregistrements.

BOOL GetReturnsRecords();

Valeur de retour

Différent de zéro si le querydef est basé sur une requête qui retourne des enregistrements ; sinon 0.

Notes

Cette fonction membre est utilisée uniquement pour les requêtes directes SQL. Pour plus d’informations sur les requêtes SQL, consultez la fonction Exécuter un membre. Pour plus d’informations sur l’utilisation des requêtes directes SQL, consultez la fonction membre SetReturnsRecords .

Pour plus d’informations, consultez la rubrique « ReturnsRecords Property » dans L’aide de DAO.

CDaoQueryDef ::GetSQL

Appelez cette fonction membre pour récupérer l’instruction SQL qui définit la requête sur laquelle le querydef est basé.

CString GetSQL();

Valeur de retour

Instruction SQL qui définit la requête sur laquelle le querydef est basé.

Notes

Vous pouvez analyser la chaîne pour les mots clés, les noms de tables, et ainsi de suite.

Pour plus d’informations, consultez les rubriques « SQL Property », « Comparaison de Microsoft Jet Moteur de base de données SQL et ANSI SQL » et « Interrogation d’une base de données avec SQL dans le code » dans l’aide DAO.

CDaoQueryDef ::GetType

Appelez cette fonction membre pour déterminer le type de requête du querydef.

short GetType();

Valeur de retour

Type de la requête définie par le querydef. Pour connaître les valeurs, consultez Remarques.

Notes

Le type de requête est défini par ce que vous spécifiez dans la chaîne SQL de querydef lorsque vous créez le querydef ou appelez la fonction membre SetSQL d’un querydef existant. Le type de requête retourné par cette fonction peut être l’une des valeurs suivantes :

  • dbQSelect Choisir

  • Action dbQAction

  • dbQCrosstab Analyse croisée

  • dbQDelete Supprimer

  • dbQUpdate Update

  • dbQAppend Ajouter

  • dbQMakeTable Make-table

  • dbQDDL Définition des données

  • dbQSQLPassThrough Pass-through

  • dbQSetOperation Union

  • dbQSPTBulk Utilisé avec dbQSQLPassThrough pour spécifier une requête qui ne retourne pas d’enregistrements.

Remarque

Pour créer une requête directe SQL, ne définissez pas la dbSQLPassThrough constante. Cela est défini automatiquement par le moteur de base de données Microsoft Jet lorsque vous créez un objet querydef et définissez la chaîne de connexion.

Pour plus d’informations sur les chaînes SQL, consultez GetSQL. Pour plus d’informations sur les types de requêtes, consultez Exécuter.

CDaoQueryDef ::IsOpen

Appelez cette fonction membre pour déterminer si l’objet CDaoQueryDef est actuellement ouvert.

BOOL IsOpen() const;

Valeur de retour

Différent de zéro si l’objet CDaoQueryDef est actuellement ouvert ; sinon, 0.

Notes

Un querydef doit être dans un état ouvert avant de l’utiliser pour appeler Execute ou créer un CDaoRecordset objet. Pour placer un querydef dans un état ouvert, appelez Create (pour un nouveau querydef) ou Open (pour un querydef existant).

CDaoQueryDef ::m_pDatabase

Contient un pointeur vers l’objet CDaoDatabase associé à l’objet querydef.

Notes

Utilisez ce pointeur si vous devez accéder directement à la base de données. Par exemple, pour obtenir des pointeurs vers d’autres objets querydef ou recordset dans les collections de la base de données.

CDaoQueryDef ::m_pDAOQueryDef

Contient un pointeur vers l’interface OLE pour l’objet querydef DAO sous-jacent.

Notes

Ce pointeur est fourni pour l’exhaustivité et la cohérence avec les autres classes. Toutefois, étant donné que MFC encapsule plutôt entièrement les noms de requête DAO, il est peu probable qu’il en a besoin. Si vous l’utilisez, faites-le avec prudence. En particulier, ne modifiez pas la valeur du pointeur, sauf si vous savez ce que vous faites.

CDaoQueryDef ::Open

Appelez cette fonction membre pour ouvrir un querydef précédemment enregistré dans la collection QueryDefs de la base de données.

virtual void Open(LPCTSTR lpszName = NULL);

Paramètres

lpszName
Chaîne qui contient le nom du querydef enregistré à ouvrir. Vous pouvez utiliser CString.

Notes

Une fois le querydef ouvert, vous pouvez appeler sa Execute fonction membre ou utiliser le querydef pour créer un CDaoRecordset objet.

CDaoQueryDef ::SetConnect

Appelez cette fonction membre pour définir la chaîne de connexion de l’objet querydef.

void SetConnect(LPCTSTR lpszConnect);

Paramètres

lpszConnect
Chaîne qui contient un chaîne de connexion pour l’objet CDaoDatabase associé.

Notes

Le chaîne de connexion est utilisé pour transmettre des informations supplémentaires à ODBC et à certains pilotes ISAM en fonction des besoins. Il n’est pas utilisé pour les bases de données Microsoft Jet (.MDB).

Conseil

La meilleure façon d’utiliser des tables ODBC consiste à les attacher à un . Base de données MDB.

Avant d’exécuter un querydef qui représente une requête directe SQL sur une source de données ODBC, définissez l’chaîne de connexion avec SetConnect et appelez SetReturnsRecords pour spécifier si la requête retourne des enregistrements.

Pour plus d’informations sur la structure et les exemples de chaîne de connexion composants du chaîne de connexion, consultez la rubrique « Connect Property » dans L’aide de DAO.

CDaoQueryDef ::SetName

Appelez cette fonction membre si vous souhaitez modifier le nom d’un querydef qui n’est pas temporaire.

void SetName(LPCTSTR lpszName);

Paramètres

lpszName
Chaîne qui contient le nouveau nom d’une requête nontemporaire dans l’objet CDaoDatabase associé.

Notes

Les noms Querydef sont des noms uniques définis par l’utilisateur. Vous pouvez appeler SetName avant que l’objet querydef soit ajouté à la collection QueryDefs.

CDaoQueryDef ::SetODBCTimeout

Appelez cette fonction membre pour définir la limite de temps avant l’expiration d’une requête sur une source de données ODBC.

void SetODBCTimeout(short nODBCTimeout);

Paramètres

nODBCTimeout
Nombre de secondes avant l’expiration d’une requête.

Notes

Cette fonction membre vous permet de remplacer le nombre par défaut de secondes avant les opérations suivantes sur la source de données connectée « délai d’expiration ». Une opération peut expirer en raison de problèmes d’accès réseau, de temps de traitement excessif des requêtes, et ainsi de suite. Appel SetODBCTimeout avant d’exécuter une requête avec ce querydef si vous souhaitez modifier la valeur du délai d’expiration de la requête. (À mesure que ODBC réutilise les connexions, la valeur du délai d’expiration est la même pour tous les clients sur la même connexion.)

La valeur par défaut des délais d’expiration de requête est de 60 secondes.

CDaoQueryDef ::SetParamValue

Appelez cette fonction membre pour définir la valeur d’un paramètre dans querydef au moment de l’exécution.

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

Paramètres

lpszName
Nom du paramètre dont vous souhaitez définir la valeur.

varValue
Valeur à définir ; voir Remarques.

nIndex
Position ordinale du paramètre dans la collection Parameters de querydef. Vous pouvez obtenir cette valeur avec des appels à GetParameterCount et GetParameterInfo.

Notes

Le paramètre doit déjà être établi dans le cadre de la chaîne SQL de querydef. Vous pouvez accéder au paramètre par nom ou par sa position ordinale 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.

CDaoQueryDef ::SetReturnsRecords

Appelez cette fonction membre dans le cadre du processus de configuration d’une requête directe SQL vers une base de données externe.

void SetReturnsRecords(BOOL bReturnsRecords);

Paramètres

bReturnsRecords
Transmettez TRUE si la requête sur une base de données externe retourne des enregistrements ; sinon, FALSE.

Notes

Dans ce cas, vous devez créer le querydef et définir ses propriétés à l’aide d’autres CDaoQueryDef fonctions membres. Pour obtenir une description des bases de données externes, consultez SetConnect.

CDaoQueryDef ::SetSQL

Appelez cette fonction membre pour définir l’instruction SQL exécutée par le querydef.

void SetSQL(LPCTSTR lpszSQL);

Paramètres

lpszSQL
Chaîne contenant une instruction SQL complète, adaptée à l’exécution. La syntaxe de cette chaîne dépend du SGBD que votre requête cible. Pour une discussion sur la syntaxe utilisée dans le moteur de base de données Microsoft Jet, consultez la rubrique « Génération d’instructions SQL dans le code » dans l’aide de DAO.

Notes

Une utilisation classique consiste SetSQL à configurer un objet querydef à utiliser dans une requête directe SQL. (Pour connaître la syntaxe des requêtes directes SQL sur votre SGBD cible, consultez la documentation de votre SGBD.)

Voir aussi

CObject Classe
Graphique hiérarchique
CDaoRecordset Classe
CDaoDatabase Classe
CDaoTableDef Classe
CDaoException Classe