Share via


CDaoWorkspace, classe

Gère une session de base de données nommée et protégée par mot de passe, de la connexion à la déconnexion, pour un seul utilisateur. DAO est pris en charge par Bureau 2013. DAO 3.6 est la version finale, et elle est considérée comme obsolète.

Syntaxe

class CDaoWorkspace : public CObject

Membres

Constructeurs publics

Nom Description
CDaoWorkspace ::CDaoWorkspace Construit un objet d’espace de travail. Ensuite, appelez Create ou Open.

Méthodes publiques

Nom Description
CDaoWorkspace ::Append Ajoute un espace de travail nouvellement créé à la collection Workspaces du moteur de base de données.
CDaoWorkspace ::BeginTrans Commence une nouvelle transaction, qui s’applique à toutes les bases de données ouvertes dans l’espace de travail.
CDaoWorkspace ::Close Ferme l’espace de travail et tous les objets qu’il contient. Les transactions en attente sont restaurées.
CDaoWorkspace ::CommitTrans Termine la transaction actuelle et enregistre les modifications.
CDaoWorkspace ::CompactDatabase Compacte (ou doublons) une base de données.
CDaoWorkspace ::Create Crée un objet d’espace de travail DAO.
CDaoWorkspace ::GetDatabaseCount Retourne le nombre d’objets de base de données DAO dans la collection Databases de l’espace de travail.
CDaoWorkspace ::GetDatabaseInfo Retourne des informations sur une base de données DAO spécifiée définie dans la collection Bases de données de l’espace de travail.
CDaoWorkspace ::GetIniPath Retourne l’emplacement des paramètres d’initialisation du moteur de base de données Microsoft Jet dans le Registre Windows.
CDaoWorkspace ::GetIsolateODBCTrans Retourne une valeur qui indique si plusieurs transactions impliquant la même source de données ODBC sont isolées via plusieurs connexions forcées à la source de données.
CDaoWorkspace ::GetLoginTimeout Retourne le nombre de secondes avant qu’une erreur se produise lorsque l’utilisateur tente de se connecter à une base de données ODBC.
CDaoWorkspace ::GetName Retourne le nom défini par l’utilisateur pour l’objet d’espace de travail.
CDaoWorkspace ::GetUserName Retourne le nom d’utilisateur spécifié lors de la création de l’espace de travail. Il s’agit du nom du propriétaire de l’espace de travail.
CDaoWorkspace ::GetVersion Retourne une chaîne qui contient la version du moteur de base de données associé à l’espace de travail.
CDaoWorkspace ::GetWorkspaceCount Retourne le nombre d’objets d’espace de travail DAO dans la collection Workspaces du moteur de base de données.
CDaoWorkspace ::GetWorkspaceInfo Retourne des informations sur un espace de travail DAO spécifié défini dans la collection Workspaces du moteur de base de données.
CDaoWorkspace ::Idle Permet au moteur de base de données d’effectuer des tâches en arrière-plan.
CDaoWorkspace ::IsOpen Retourne une valeur différente de zéro si l’espace de travail est ouvert.
CDaoWorkspace ::Open Ouvre explicitement un objet d’espace de travail associé à l’espace de travail par défaut de DAO.
CDaoWorkspace ::RepairDatabase Tente de réparer une base de données endommagée.
CDaoWorkspace ::Rollback Termine la transaction actuelle et n’enregistre pas les modifications.
CDaoWorkspace ::SetDefaultPassword Définit le mot de passe que le moteur de base de données utilise lorsqu’un objet d’espace de travail est créé sans mot de passe spécifique.
CDaoWorkspace ::SetDefaultUser Définit le nom d’utilisateur que le moteur de base de données utilise lorsqu’un objet d’espace de travail est créé sans nom d’utilisateur spécifique.
CDaoWorkspace ::SetIniPath Définit l’emplacement des paramètres d’initialisation du moteur de base de données Microsoft Jet dans le Registre Windows.
CDaoWorkspace ::SetIsolateODBCTrans Spécifie si plusieurs transactions impliquant la même source de données ODBC sont isolées en forçant plusieurs connexions à la source de données.
CDaoWorkspace ::SetLoginTimeout Définit le nombre de secondes avant qu’une erreur se produise lorsque l’utilisateur tente de se connecter à une source de données ODBC.

Membres de données publics

Nom Description
CDaoWorkspace ::m_pDAOWorkspace Pointe vers l’objet d’espace de travail DAO sous-jacent.

Notes

Dans la plupart des cas, vous n’aurez pas besoin de plusieurs espaces de travail, et vous n’aurez pas besoin de créer des objets d’espace de travail explicites ; lorsque vous ouvrez des objets de base de données et d’objet recordset, ils utilisent l’espace de travail par défaut de DAO. Toutefois, si nécessaire, vous pouvez exécuter plusieurs sessions à la fois en créant des objets d’espace de travail supplémentaires. Chaque objet d’espace de travail peut contenir plusieurs objets de base de données ouverts dans sa propre collection Databases. Dans MFC, un espace de travail est principalement un gestionnaire de transactions, spécifiant un ensemble de bases de données ouvertes dans le même « espace de transaction ».

Remarque

Les classes de base de données DAO sont distinctes des classes de base de données MFC basées sur Open Database Connecter ivity (ODBC). Tous les noms de classes de base de données DAO ont un préfixe « CDao ». 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 accèdent aux données via le moteur de base de données Microsoft Jet, y compris les pilotes ODBC. Ils prennent également en charge les opérations DDL (Data Definition Language), telles que la création de bases de données et l’ajout de tables et de champs via les classes, sans avoir à appeler DAO directement.

Fonctionnalités

La classe CDaoWorkspace fournit les éléments suivants :

  • Accès explicite, si nécessaire, à un espace de travail par défaut, créé en initialisant le moteur de base de données. En règle générale, vous utilisez implicitement l’espace de travail par défaut de DAO en créant des objets de jeu d’enregistrements et de base de données.

  • Espace de transaction dans lequel les transactions s’appliquent à toutes les bases de données ouvertes dans l’espace de travail. Vous pouvez créer des espaces de travail supplémentaires pour gérer des espaces de transaction distincts.

  • Interface de nombreuses propriétés du moteur de base de données Microsoft Jet sous-jacent (consultez les fonctions membres statiques). L’ouverture ou la création d’un espace de travail ou l’appel d’une fonction membre statique avant l’ouverture ou la création initialise le moteur de base de données.

  • Accès à la collection Workspaces du moteur de base de données, qui stocke tous les espaces de travail actifs qui y ont été ajoutés. Vous pouvez également créer et utiliser des espaces de travail sans les ajouter à la collection.

Sécurité

MFC n’implémente pas les collections Users and Groups dans DAO, qui sont utilisées pour le contrôle de sécurité. Si vous avez besoin de ces aspects de DAO, vous devez les programmer vous-même via des appels directs aux interfaces DAO. Pour plus d’informations, consultez la Note technique 54.

Utilisation

Vous pouvez utiliser la classe CDaoWorkspace pour :

  • Ouvrez explicitement l’espace de travail par défaut.

    En règle générale, votre utilisation de l’espace de travail par défaut est implicite : lorsque vous ouvrez de nouveaux objets CDaoDatabase ou CDaoRecordset . Toutefois, vous devrez peut-être y accéder explicitement, par exemple pour accéder aux propriétés du moteur de base de données ou à la collection Workspaces. Consultez « Utilisation implicite de l’espace de travail par défaut » ci-dessous.

  • Créez des espaces de travail. Appelez Append si vous souhaitez les ajouter à la collection Workspaces.

  • Ouvrez un espace de travail existant dans la collection Workspaces.

La création d’un espace de travail qui n’existe pas déjà dans la collection Workspaces est décrite sous la fonction Créer un membre. Les objets d’espace de travail ne sont pas conservés d’une manière quelconque entre les sessions du moteur de base de données. Si votre application lie MFC de façon statique, la fin de l’application ne initialise pas le moteur de base de données. Si votre application lie dynamiquement avec MFC, le moteur de base de données n’est pas initialisé lorsque la DLL MFC est déchargée.

L’ouverture explicite de l’espace de travail par défaut ou l’ouverture d’un espace de travail existant dans la collection Workspaces est décrite sous la fonction Ouvrir un membre.

Terminez une session d’espace de travail en fermant l’espace de travail avec la fonction Fermer le membre. Close ferme toutes les bases de données que vous n’avez pas fermées précédemment, en annulant les transactions non validées.

Transactions

DAO gère les transactions au niveau de l’espace de travail ; par conséquent, les transactions sur un espace de travail avec plusieurs bases de données ouvertes s’appliquent à toutes les bases de données. Par exemple, si deux bases de données ont des mises à jour non validées et que vous appelez CommitTrans, toutes les mises à jour sont validées. Si vous souhaitez limiter les transactions à une base de données unique, vous avez besoin d’un objet d’espace de travail distinct pour celui-ci.

Utilisation implicite de l’espace de travail par défaut

MFC utilise implicitement l’espace de travail par défaut de DAO dans les circonstances suivantes :

  • Si vous créez un CDaoDatabase objet, mais que vous ne le faites pas par le biais d’un objet existant CDaoWorkspace , MFC crée un objet d’espace de travail temporaire pour vous, qui correspond à l’espace de travail par défaut de DAO. Si vous le faites pour plusieurs bases de données, tous les objets de base de données sont associés à l’espace de travail par défaut. Vous pouvez accéder à l’espace de travail d’une base de données via un CDaoDatabase membre de données.

  • De même, si vous créez un CDaoRecordset objet sans fournir de pointeur vers un CDaoDatabase objet, MFC crée un objet de base de données temporaire et, par extension, un objet d’espace de travail temporaire. Vous pouvez accéder à la base de données d’un jeu d’enregistrements et indirectement à son espace de travail via un CDaoRecordset membre de données.

Autres opérations

D’autres opérations de base de données sont également fournies, telles que la réparation d’une base de données endommagée ou le compactage d’une base de données.

Pour plus d’informations sur l’appel de DAO directement et sur la sécurité DAO, consultez la Note technique 54.

Hiérarchie d'héritage

CObject

CDaoWorkspace

Spécifications

En-tête : afxdao.h

CDaoWorkspace ::Append

Appelez cette fonction membre après avoir appelé Create.

virtual void Append();

Notes

Append ajoute un objet d’espace de travail nouvellement créé à la collection Workspaces du moteur de base de données. Les espaces de travail ne sont pas conservés entre les sessions du moteur de base de données ; elles sont stockées uniquement en mémoire, et non sur le disque. Vous n’avez pas besoin d’ajouter un espace de travail ; si ce n’est pas le cas, vous pouvez toujours l’utiliser.

Un espace de travail ajouté reste dans la collection Workspaces, dans un état actif, ouvert, jusqu’à ce que vous appeliez sa fonction Close member.

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

CDaoWorkspace ::BeginTrans

Appelez cette fonction membre pour lancer une transaction.

void BeginTrans();

Notes

Une fois que vous avez appelé BeginTrans, les mises à jour apportées à votre structure de données ou de base de données prennent effet lorsque vous validez la transaction. Étant donné que l’espace de travail définit un espace de transaction unique, la transaction s’applique à toutes les bases de données ouvertes de l’espace de travail. Il existe deux façons d’effectuer la transaction :

La fermeture de l’objet d’espace de travail ou d’un objet de base de données pendant qu’une transaction est en attente annule toutes les transactions en attente.

Si vous devez isoler les transactions sur une source de données ODBC de celles d’une autre source de données ODBC, consultez la fonction membre SetIsolateODBCTrans .

CDaoWorkspace ::CDaoWorkspace

Construit un objet CDaoWorkspace.

CDaoWorkspace();

Notes

Après avoir construit l’objet C++, vous avez deux options :

  • Appelez la fonction Open member de l’objet pour ouvrir l’espace de travail par défaut ou pour ouvrir un objet existant dans la collection Workspaces.

  • Ou appelez la fonction Créer un membre de l’objet pour créer un objet d’espace de travail DAO. Cette opération démarre explicitement une nouvelle session d’espace de travail, à laquelle vous pouvez faire référence via l’objet CDaoWorkspace . Après l’appel Create, vous pouvez appeler Append si vous souhaitez ajouter l’espace de travail à la collection Workspaces du moteur de base de données.

Consultez la vue d’ensemble de la classe pour CDaoWorkspace pour plus d’informations sur la création explicite d’un CDaoWorkspace objet. En règle générale, vous utilisez des espaces de travail créés implicitement lorsque vous ouvrez un objet CDaoDatabase sans spécifier d’espace de travail ou lorsque vous ouvrez un objet CDaoRecordset sans spécifier d’objet de base de données. Les objets DAO MFC créés de cette façon utilisent l’espace de travail par défaut de DAO, qui est créé une fois et réutilisé.

Pour libérer un espace de travail et ses objets contenus, appelez la fonction Membre Close de l’objet d’espace de travail.

CDaoWorkspace ::Close

Appelez cette fonction membre pour fermer l’objet d’espace de travail.

virtual void Close();

Notes

La fermeture d’un objet d’espace de travail ouvert libère l’objet DAO sous-jacent et, si l’espace de travail est membre de la collection Workspaces, le supprime de la collection. L’appel Close est une bonne pratique de programmation.

Attention

La fermeture d’un objet d’espace de travail ferme toutes les bases de données ouvertes dans l’espace de travail. Cela entraîne la fermeture de tous les jeux d’enregistrements ouverts dans les bases de données, et toutes les modifications ou mises à jour en attente sont restaurées. Pour plus d’informations, consultez les fonctions CDaoDatabase ::Close, CDaoRecordset ::Close, CDaoTableDef ::Close et CDaoQueryDef ::Close .

Les objets d’espace de travail ne sont pas permanents ; elles n’existent que lorsque des références existent. Cela signifie que lorsque la session du moteur de base de données se termine, l’espace de travail et sa collection Bases de données ne sont pas conservés. Vous devez les recréer pour la prochaine session en ouvrant à nouveau votre espace de travail et vos bases de données.

Pour plus d’informations, consultez la rubrique « Fermer la méthode » dans l’aide de DAO.

CDaoWorkspace ::CommitTrans

Appelez cette fonction membre pour valider une transaction : enregistrez un groupe de modifications et de mises à jour dans une ou plusieurs bases de données de l’espace de travail.

void CommitTrans();

Notes

Une transaction se compose d’une série de modifications apportées aux données de la base de données ou à sa structure, en commençant par un appel à BeginTrans. Lorsque vous terminez la transaction, validez-la ou restaurez-la (annulez les modifications) avec restauration. Par défaut, sans transactions, les mises à jour des enregistrements sont validées immédiatement. L’appel BeginTrans entraîne le retard des mises à jour jusqu’à ce que vous appeliez CommitTrans.

Attention

Dans un espace de travail, les transactions sont toujours globales à l’espace de travail et ne sont pas limitées à une seule base de données ou jeu d’enregistrements. Si vous effectuez des opérations sur plusieurs jeux d’enregistrements ou bases de données au sein d’une transaction d’espace de travail, CommitTrans valide toutes les mises à jour en attente et Rollback restaure toutes les opérations sur ces bases de données et jeux d’enregistrements.

Lorsque vous fermez une base de données ou un espace de travail avec des transactions en attente, les transactions sont toutes restaurées.

Remarque

Ce n’est pas un mécanisme de validation en deux phases. Si une mise à jour ne parvient pas à valider, d’autres sont toujours validées.

CDaoWorkspace ::CompactDatabase

Appelez cette fonction membre pour compacter un Microsoft Jet spécifié (. Base de données MDB.

static void PASCAL CompactDatabase(
    LPCTSTR lpszSrcName,
    LPCTSTR lpszDestName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int nOptions = 0);

static void PASCAL CompactDatabase(
    LPCTSTR lpszSrcName,
    LPCTSTR lpszDestName,
    LPCTSTR lpszLocale,
    int nOptions,
    LPCTSTR lpszPassword);

Paramètres

lpszSrcName
Nom d’une base de données existante fermée. Il peut s’agir d’un chemin d’accès complet et d’un nom de fichier, tel que « C :\\MYDB ». MDB ». Si le nom de fichier a une extension, vous devez le spécifier. Si votre réseau prend en charge la convention d’affectation de noms uniforme (UNC), vous pouvez également spécifier un chemin d’accès réseau, tel que « \\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB ». (Les barres obliques inverses doubles sont requises dans les chaînes de chemin d’accès, car « \ » est le caractère d’échappement C++.)

lpszDestName
Chemin complet de la base de données compactée que vous créez. Vous pouvez également spécifier un chemin réseau comme avec lpszSrcName. Vous ne pouvez pas utiliser l’argument lpszDestName pour spécifier le même fichier de base de données que lpszSrcName.

lpszPassword
Mot de passe utilisé lorsque vous souhaitez compacter une base de données protégée par mot de passe. Notez que si vous utilisez la version de ce mot de CompactDatabase passe, vous devez fournir tous les paramètres. En outre, étant donné qu’il s’agit d’un paramètre de connexion, il nécessite une mise en forme spéciale, comme suit : ;P WD= lpszPassword. Par exemple : ;P WD="Happy ». (Le point-virgule de début est requis.)

lpszLocale
Expression de chaîne utilisée pour spécifier l’ordre de classement pour la création de lpszDestName. Si vous omettez cet argument en acceptant la valeur par défaut de dbLangGeneral (voir ci-dessous), les paramètres régionaux de la nouvelle base de données sont identiques à ceux de l’ancienne base de données. Les valeurs possibles sont les suivantes :

  • dbLangGeneral Anglais, allemand, Français, portugais, italien et espagnol moderne

  • dbLangArabic Arabe

  • dbLangCyrillic Russe

  • dbLangCzech Tchèque

  • dbLangDutch Néerlandais

  • dbLangGreek Grec

  • dbLangHebrew Hébreu

  • dbLangHungarian Hongrois

  • dbLangIcelandic Islandais

  • dbLangNordic Langues nordiques (moteur de base de données Microsoft Jet version 1.0 uniquement)

  • dbLangNorwdan Norvégien et danois

  • dbLangPolish Polonais

  • dbLangSpanish Espagnol traditionnel

  • dbLangSwedfin Suédois et finnois

  • dbLangTurkish Turc

nOptions
Indique une ou plusieurs options pour la base de données cible, lpszDestName. Si vous omettez cet argument en acceptant la valeur par défaut, le lpszDestName aura le même chiffrement et la même version que lpszSrcName. Vous pouvez combiner l’option ou dbDecrypt l’une dbEncrypt des options de version à l’aide de l’opérateur OR au niveau du bit. Les valeurs possibles, qui spécifient un format de base de données, et non une version du moteur de base de données, sont les suivantes :

  • dbEncrypt Chiffrez la base de données lors du compactage.

  • dbDecrypt Déchiffrez la base de données lors du compactage.

  • dbVersion10 Créez une base de données qui utilise le moteur de base de données Microsoft Jet version 1.0 lors du compactage.

  • dbVersion11 Créez une base de données qui utilise le moteur de base de données Microsoft Jet version 1.1 lors du compactage.

  • dbVersion20 Créez une base de données qui utilise le moteur de base de données Microsoft Jet version 2.0 lors du compactage.

  • dbVersion30 Créez une base de données qui utilise le moteur de base de données Microsoft Jet version 3.0 lors du compactage.

Vous pouvez utiliser dbEncrypt ou dbDecrypt dans l’argument options pour spécifier s’il faut chiffrer ou déchiffrer la base de données telle qu’elle est compactée. Si vous omettez une constante de chiffrement ou si vous incluez les deux et , lpszDestName aura le même chiffrement que lpszSrcName. dbEncryptdbDecrypt Vous pouvez utiliser l’une des constantes de version dans l’argument options pour spécifier la version du format de données pour la base de données compactée. Cette constante affecte uniquement la version du format de données de lpszDestName. Vous ne pouvez spécifier qu’une seule constante de version. Si vous omettez une constante de version, lpszDestName aura la même version que lpszSrcName. Vous ne pouvez compacter lpszDestName qu’à une version identique ou ultérieure à celle de lpszSrcName.

Attention

Si une base de données n’est pas chiffrée, il est possible, même si vous implémentez la sécurité utilisateur/mot de passe, de lire directement le fichier de disque binaire qui constitue la base de données.

Notes

Lorsque vous modifiez des données dans une base de données, le fichier de base de données peut devenir fragmenté et utiliser plus d’espace disque que nécessaire. Régulièrement, vous devez compacter votre base de données pour défragmenter le fichier de base de données. La base de données compactée est généralement plus petite. Vous pouvez également choisir de modifier l’ordre de classement, le chiffrement ou la version du format de données pendant que vous copiez et compactez la base de données.

Attention

La CompactDatabase fonction membre ne convertit pas correctement une base de données Microsoft Access complète d’une version à une autre. Seul le format de données est converti. Les objets définis par Microsoft Access, tels que les formulaires et les rapports, ne sont pas convertis. Toutefois, les données sont correctement converties.

Conseil

Vous pouvez également utiliser CompactDatabase pour copier un fichier de base de données.

Pour plus d’informations sur le compactage des bases de données, consultez la rubrique « CompactDatabase Method » dans L’aide de DAO.

CDaoWorkspace ::Create

Appelez cette fonction membre pour créer un objet d’espace de travail DAO et l’associer à l’objet MFC CDaoWorkspace .

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszUserName,
    LPCTSTR lpszPassword);

Paramètres

lpszName
Chaîne comportant jusqu’à 14 caractères qui nomme de manière unique le nouvel objet d’espace de travail. Vous devez fournir un nom. Pour plus d’informations, consultez la rubrique « Name Property » dans L’aide de DAO.

lpszUserName
Nom d’utilisateur du propriétaire de l’espace de travail. Pour connaître les conditions requises, consultez le paramètre lpszDefaultUser dans la fonction membre SetDefaultUser . Pour plus d’informations, consultez la rubrique « UserName Property » dans l’aide de DAO.

lpszPassword
Mot de passe du nouvel objet d’espace de travail. Un mot de passe peut contenir jusqu’à 14 caractères et contenir n’importe quel caractère, sauf ASCII 0 (null). Les mots de passe respectent la casse. Pour plus d’informations, consultez la rubrique « Propriété de mot de passe » dans l’aide de DAO.

Notes

Le processus de création global est le suivant :

  1. Construisez un objet CDaoWorkspace .

  2. Appelez la fonction membre de l’objet Create pour créer l’espace de travail DAO sous-jacent. Vous devez spécifier un nom d’espace de travail.

  3. Appelez éventuellement Append si vous souhaitez ajouter l’espace de travail à la collection Workspaces du moteur de base de données. Vous pouvez utiliser l’espace de travail sans l’ajouter.

Après l’appel Create , l’objet d’espace de travail est dans un état ouvert, prêt à être utilisé. Vous n’appelez Open pas après Create. Vous n’appelez Create pas si l’espace de travail existe déjà dans la collection Workspaces. Create initialise le moteur de base de données s’il n’a pas déjà été initialisé pour votre application.

CDaoWorkspace ::GetDatabaseCount

Appelez cette fonction membre pour récupérer le nombre d’objets de base de données DAO dans la collection Bases de données de l’espace de travail , le nombre de bases de données ouvertes dans l’espace de travail.

short GetDatabaseCount();

Valeur de retour

Nombre de bases de données ouvertes dans l’espace de travail.

Notes

GetDatabaseCount est utile si vous devez parcourir toutes les bases de données définies dans la collection Bases de données de l’espace de travail. Pour obtenir des informations sur une base de données donnée dans la collection, consultez GetDatabaseInfo. L’utilisation classique consiste à appeler GetDatabaseCount le nombre de bases de données ouvertes, puis à utiliser ce numéro comme index de boucle pour les appels répétés à GetDatabaseInfo.

CDaoWorkspace ::GetDatabaseInfo

Appelez cette fonction membre pour obtenir différents types d’informations sur une base de données ouverte dans l’espace de travail.

void GetDatabaseInfo(
    int nIndex,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetDatabaseInfo(
    LPCTSTR lpszName,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Paramètres

nIndex
Index de base zéro de l’objet de base de données dans la collection Databases de l’espace de travail, pour la recherche par index.

dbinfo
Référence à un objet CDaoDatabaseInfo qui retourne les informations demandées.

dwInfoOptions
Options qui spécifient les informations sur la base de données à 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), pouvant être mis à jour, transactions

  • AFX_DAO_SECONDARY_INFO Informations principales plus : Version, Ordre de classement, Délai d’expiration des requêtes

  • informations primaires et secondaires AFX_DAO_ALL_INFO plus : Connecter

lpszName
Nom de l’objet de base de données, pour rechercher par nom. Le nom est une chaîne comportant jusqu’à 14 caractères qui nomme de manière unique le nouvel objet d’espace de travail.

Notes

Une version de la fonction vous permet de rechercher une base de données par index. L’autre version vous permet de rechercher une base de données par nom.

Pour obtenir une description des informations retournées dans dbinfo, consultez la structure CDaoDatabaseInfo . 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.

CDaoWorkspace ::GetIniPath

Appelez cette fonction membre pour obtenir l’emplacement des paramètres d’initialisation du moteur de base de données Microsoft Jet dans le Registre Windows.

static CString PASCAL GetIniPath();

Valeur de retour

CString contenant l’emplacement du Registre.

Notes

Vous pouvez utiliser l’emplacement pour obtenir des informations sur les paramètres du moteur de base de données. Les informations retournées sont en fait le nom d’une sous-clé de Registre.

Pour plus d’informations, consultez les rubriques « Propriété IniPath » et « Personnalisation du Registre Windows Paramètres pour l’accès aux données » dans l’aide de DAO.

CDaoWorkspace ::GetIsolateODBCTrans

Appelez cette fonction membre pour obtenir la valeur actuelle de la propriété DAO IsolateODBCTrans pour l’espace de travail.

BOOL GetIsolateODBCTrans();

Valeur de retour

Différent de zéro si les transactions ODBC sont isolées ; sinon 0.

Notes

Dans certains cas, vous devrez peut-être avoir plusieurs transactions simultanées en attente sur la même base de données ODBC. Pour ce faire, vous devez ouvrir un espace de travail distinct pour chaque transaction. N’oubliez pas que même si chaque espace de travail peut avoir sa propre connexion ODBC à la base de données, cela ralentit les performances du système. Étant donné que l’isolation des transactions n’est pas normalement requise, les connexions ODBC à partir de plusieurs objets d’espace de travail ouverts par le même utilisateur sont partagées par défaut.

Certains serveurs ODBC, tels que Microsoft SQL Server, n’autorisent pas les transactions simultanées sur une seule connexion. Si vous devez avoir plusieurs transactions à la fois en attente sur une telle base de données, définissez la propriété IsolateODBCTrans sur TRUE sur chaque espace de travail dès que vous l’ouvrez. Cela force une connexion ODBC distincte pour chaque espace de travail.

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

CDaoWorkspace ::GetLoginTimeout

Appelez cette fonction membre pour obtenir la valeur actuelle de la propriété DAO LoginTimeout pour l’espace de travail.

static short PASCAL GetLoginTimeout();

Valeur de retour

Nombre de secondes avant qu’une erreur se produise lorsque vous tentez de vous connecter à une base de données ODBC.

Notes

Cette valeur représente le nombre de secondes avant qu’une erreur se produise lorsque vous tentez de vous connecter à une base de données ODBC. Le paramètre LoginTimeout par défaut est de 20 secondes. Lorsque LoginTimeout est défini sur 0, aucun délai d’expiration ne se produit et la communication avec la source de données peut cesser de répondre.

Lorsque vous tentez de vous connecter à une base de données ODBC, telle que Microsoft SQL Server, la connexion peut échouer en raison d’erreurs réseau ou parce que le serveur n’est pas en cours d’exécution. Au lieu d’attendre la connexion par défaut de 20 secondes, vous pouvez spécifier la durée pendant laquelle le moteur de base de données attend avant qu’il génère une erreur. La connexion au serveur se produit implicitement dans le cadre d’un certain nombre d’événements différents, tels que l’exécution d’une requête sur une base de données de serveur externe.

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

CDaoWorkspace ::GetName

Appelez cette fonction membre pour obtenir le nom défini par l’utilisateur de l’objet d’espace de travail DAO sous-jacent à l’objet CDaoWorkspace .

CString GetName();

Valeur de retour

CString contenant le nom défini par l’utilisateur de l’objet d’espace de travail DAO.

Notes

Le nom est utile pour accéder à l’objet d’espace de travail DAO dans la collection Workspaces du moteur de base de données par nom.

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

CDaoWorkspace ::GetUserName

Appelez cette fonction membre pour obtenir le nom du propriétaire de l’espace de travail.

CString GetUserName();

Valeur de retour

CString qui représente le propriétaire de l’objet d’espace de travail.

Notes

Pour obtenir ou définir les autorisations pour le propriétaire de l’espace de travail, appelez DAO directement pour case activée le paramètre de propriété Autorisations . Cela détermine les autorisations dont dispose l’utilisateur. Pour utiliser des autorisations, vous avez besoin d’un SYSTÈME. Fichier MDA.

Pour plus d’informations sur l’appel de DAO directement, consultez la Note technique 54. Pour plus d’informations, consultez la rubrique « UserName Property » dans l’aide de DAO.

CDaoWorkspace ::GetVersion

Appelez cette fonction membre pour déterminer la version du moteur de base de données Microsoft Jet en cours d’utilisation.

static CString PASCAL GetVersion();

Valeur de retour

CString qui indique la version du moteur de base de données associé à l’objet.

Notes

La valeur retournée représente le numéro de version sous la forme « major.minor » ; par exemple, « 3.0 ». Le numéro de version du produit (par exemple, 3.0) se compose du numéro de version (3), d’une période et du numéro de version (0).

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

CDaoWorkspace ::GetWorkspaceCount

Appelez cette fonction membre pour récupérer le nombre d’objets d’espace de travail DAO dans la collection Workspaces du moteur de base de données.

short GetWorkspaceCount();

Valeur de retour

Nombre d’espaces de travail ouverts dans la collection Workspaces.

Notes

Ce nombre n’inclut aucun espace de travail ouvert non ajouté à la collection. GetWorkspaceCount est utile si vous devez parcourir tous les espaces de travail définis dans la collection Workspaces. Pour obtenir des informations sur un espace de travail donné dans la collection, consultez GetWorkspaceInfo. L’utilisation classique consiste à appeler GetWorkspaceCount le nombre d’espaces de travail ouverts, puis à utiliser ce numéro comme index de boucle pour les appels répétés à GetWorkspaceInfo.

CDaoWorkspace ::GetWorkspaceInfo

Appelez cette fonction membre pour obtenir différents types d’informations sur un espace de travail ouvert dans la session.

void GetWorkspaceInfo(
    int nIndex,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetWorkspaceInfo(
    LPCTSTR lpszName,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Paramètres

nIndex
Index de base zéro de l’objet de base de données dans la collection Workspaces, pour la recherche par index.

wkspcinfo
Référence à un objet CDaoWorkspaceInfo qui retourne les informations demandées.

dwInfoOptions
Options qui spécifient les informations sur l’espace de travail à 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 (par défaut)

  • AFX_DAO_SECONDARY_INFO Informations principales plus : Nom d’utilisateur

  • AFX_DAO_ALL_INFO informations primaires et secondaires plus : Isoler ODBCTrans

lpszName
Nom de l’objet espace de travail, pour rechercher par nom. Le nom est une chaîne comportant jusqu’à 14 caractères qui nomme de manière unique le nouvel objet d’espace de travail.

Notes

Pour obtenir une description des informations retournées dans wkspcinfo, consultez la structure CDaoWorkspaceInfo . 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 les niveaux antérieurs.

CDaoWorkspace ::Idle

Appelez Idle pour fournir au moteur de base de données la possibilité d’effectuer des tâches en arrière-plan qui peuvent ne pas être à jour en raison d’un traitement intense des données.

static void PASCAL Idle(int nAction = dbFreeLocks);

Paramètres

nAction
Action à entreprendre pendant le traitement inactif. Actuellement, la seule action valide est dbFreeLocks.

Notes

Cela est souvent vrai dans les environnements multi-utilisateurs, multitâche dans lesquels il n’y a pas suffisamment de temps de traitement en arrière-plan pour conserver tous les enregistrements dans un jeu d’enregistrements actif.

Remarque

L’appel Idle n’est pas nécessaire avec les bases de données créées avec la version 3.0 du moteur de base de données Microsoft Jet. Utilisez Idle uniquement les bases de données créées avec des versions antérieures.

En règle générale, les verrous de lecture sont supprimés et les données des objets recordset de type dynaset local sont mises à jour uniquement lorsqu’aucune autre action (y compris les mouvements de souris) ne se produit. Si vous appelez Idlerégulièrement, vous fournissez au moteur de base de données le temps de rattraper les tâches de traitement en arrière-plan en libérant des verrous de lecture inutiles. La spécification de la constante en tant qu’argument retarde le dbFreeLocks traitement jusqu’à ce que tous les verrous de lecture soient libérés.

Cette fonction membre n’est pas nécessaire dans les environnements mono-utilisateur, sauf si plusieurs instances d’une application s’exécutent. La Idle fonction membre peut augmenter les performances dans un environnement multiutilisateur, car elle force le moteur de base de données à vider les données sur le disque, en libérant des verrous sur la mémoire. Vous pouvez également libérer des verrous de lecture en effectuant une partie des opérations d’une transaction.

Pour plus d’informations, consultez la rubrique « Méthode inactive » dans l’aide de DAO.

CDaoWorkspace ::IsOpen

Appelez cette fonction membre pour déterminer si l’objet CDaoWorkspace est ouvert, c’est-à-dire si l’objet MFC a été initialisé par un appel à Ouvrir ou un appel à Créer.

BOOL IsOpen() const;

Valeur de retour

Différent de zéro si l’objet d’espace de travail est ouvert ; sinon 0.

Notes

Vous pouvez appeler l’une des fonctions membres d’un espace de travail dans un état ouvert.

CDaoWorkspace ::m_pDAOWorkspace

Pointeur vers l’objet d’espace de travail DAO sous-jacent.

Notes

Utilisez ce membre de données si vous avez besoin d’un accès direct à l’objet DAO sous-jacent. Vous pouvez appeler les interfaces de l’objet DAO via ce pointeur.

Pour plus d’informations sur l’accès aux objets DAO directement, consultez la Note technique 54.

CDaoWorkspace ::Open

Ouvre explicitement un objet d’espace de travail associé à l’espace de travail par défaut de DAO.

virtual void Open(LPCTSTR lpszName = NULL);

Paramètres

lpszName
Nom de l’objet d’espace de travail DAO à ouvrir : chaîne comportant jusqu’à 14 caractères qui nomme de manière unique l’espace de travail. Acceptez la valeur par défaut NULL pour ouvrir explicitement l’espace de travail par défaut. Pour connaître les exigences de nommage, consultez le paramètre lpszName pour Create. Pour plus d’informations, consultez la rubrique « Name Property » dans L’aide de DAO.

Notes

Après avoir construit un CDaoWorkspace objet, appelez cette fonction membre pour effectuer l’une des opérations suivantes :

  • Ouvrez explicitement l’espace de travail par défaut. Passez NULL pour lpszName.

  • Ouvrez un objet existant CDaoWorkspace , membre de la collection Workspaces, par nom. Transmettez un nom valide pour un objet d’espace de travail existant.

Open place l’objet d’espace de travail dans un état ouvert et initialise également le moteur de base de données s’il n’a pas déjà été initialisé pour votre application.

Bien que de nombreuses CDaoWorkspace fonctions membres ne puissent être appelées qu’après l’ouverture de l’espace de travail, les fonctions membres suivantes, qui fonctionnent sur le moteur de base de données, sont disponibles après la construction de l’objet C++, mais avant un appel à Open:

CDaoWorkspace ::RepairDatabase

Appelez cette fonction membre si vous devez tenter de réparer une base de données endommagée qui accède au moteur de base de données Microsoft Jet.

static void PASCAL RepairDatabase(LPCTSTR lpszName);

Paramètres

lpszName
Chemin d’accès et nom de fichier d’un fichier de base de données du moteur Microsoft Jet existant. Si vous omettez le chemin d’accès, seul le répertoire actif est recherché. Si votre système prend en charge la convention d’affectation de noms uniforme (UNC), vous pouvez également spécifier un chemin réseau, par exemple : « \\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB ». (Les barres obliques inverses doubles sont requises dans la chaîne de chemin d’accès, car « \ » est le caractère d’échappement C++.)

Notes

Vous devez fermer la base de données spécifiée par lpszName avant de la réparer. Dans un environnement multiutilisateur, d’autres utilisateurs ne peuvent pas ouvrir lpszName pendant que vous le réparez. Si lpszName n’est pas fermé ou n’est pas disponible pour une utilisation exclusive, une erreur se produit.

Cette fonction membre tente de réparer une base de données marquée comme endommagée par une opération d’écriture incomplète. Cela peut se produire si une application utilisant le moteur de base de données Microsoft Jet est fermée de façon inattendue en raison d’un problème de panne d’alimentation ou de matériel informatique. Si vous effectuez l’opération et appelez la fonction Membre Close ou si vous quittez l’application de manière habituelle, la base de données ne sera pas marquée comme étant peut-être endommagée.

Remarque

Après avoir réparé une base de données, il est également judicieux de le compacter à l’aide de la fonction membre CompactDatabase pour défragmenter le fichier et récupérer de l’espace disque.

Pour plus d’informations sur la réparation des bases de données, consultez la rubrique « RepairDatabase Method » dans l’aide de DAO.

CDaoWorkspace ::Rollback

Appelez cette fonction membre pour mettre fin à la transaction actuelle et restaurer toutes les bases de données de l’espace de travail dans leur condition avant le début de la transaction.

void Rollback();

Notes

Attention

Dans un objet d’espace de travail, les transactions sont toujours globales à l’espace de travail et ne sont pas limitées à une seule base de données ou jeu d’enregistrements. Si vous effectuez des opérations sur plusieurs jeux d’enregistrements ou de base de données au sein d’une transaction d’espace de travail, Rollback restaure toutes les opérations sur toutes ces bases de données et jeux d’enregistrements.

Si vous fermez un objet d’espace de travail sans enregistrer ou restaurer les transactions en attente, les transactions sont automatiquement restaurées. Si vous appelez CommitTrans ou Rollback sans appeler BeginTrans, une erreur se produit.

Remarque

Lorsque vous commencez une transaction, le moteur de base de données enregistre ses opérations dans un fichier conservé dans le répertoire spécifié par la variable d’environnement TEMP sur la station de travail. Si le fichier journal des transactions épuise le stockage disponible sur votre lecteur TEMP, le moteur de base de données génère une CDaoException erreur DAO (erreur DAO 2004). À ce stade, si vous appelez CommitTrans, un nombre indéterminé d’opérations est validé, mais les opérations non supprimées restantes sont perdues et l’opération doit être redémarrée. L’appel Rollback libère le journal des transactions et restaure toutes les opérations dans la transaction.

CDaoWorkspace ::SetDefaultPassword

Appelez cette fonction membre pour définir le mot de passe par défaut que le moteur de base de données utilise lorsqu’un objet d’espace de travail est créé sans mot de passe spécifique.

static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);

Paramètres

lpszPassword
Mot de passe par défaut. Un mot de passe peut contenir jusqu’à 14 caractères et contenir n’importe quel caractère, sauf ASCII 0 (null). Les mots de passe respectent la casse.

Notes

Le mot de passe par défaut que vous définissez s’applique aux nouveaux espaces de travail que vous créez après l’appel. Lorsque vous créez des espaces de travail suivants, vous n’avez pas besoin de spécifier un mot de passe dans l’appel Créer .

Pour utiliser cette fonction membre :

  1. Construisez un CDaoWorkspace objet, mais n’appelez Createpas .

  2. Appelez et, si vous le souhaitez SetDefaultPassword , SetDefaultUser.

  3. Appelez Create cet objet d’espace de travail ou les éléments suivants, sans spécifier de mot de passe.

Par défaut, la propriété DefaultUser est définie sur « admin » et la propriété DefaultPassword est définie sur une chaîne vide (« »).

Pour plus d’informations sur la sécurité, consultez la rubrique « Permissions Property » dans l’aide de DAO. Pour plus d’informations, consultez les rubriques « DefaultPassword Property » et « DefaultUser Property » dans l’aide de DAO.

CDaoWorkspace ::SetDefaultUser

Appelez cette fonction membre pour définir le nom d’utilisateur par défaut que le moteur de base de données utilise lorsqu’un objet d’espace de travail est créé sans nom d’utilisateur spécifique.

static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);

Paramètres

lpszDefaultUser
Nom d’utilisateur par défaut. Un nom d’utilisateur peut être de 1 à 20 caractères longs et inclure des caractères alphabétiques, caractères accentués, nombres, espaces et symboles à l’exception de : " (guillemets), / (barre oblique vers l’avant), \ (barre oblique inverse), (crochets), [ ] (deux-points), : (canal), <| (signe inférieur à), > (signe supérieur à), + (signe plus), (signe égal), =; (point-virgule), (virgule), , (point d’interrogation), * (astérisque), espaces de début et caractères de contrôle (ASCII 00 à ASCII 31). Pour plus d’informations, consultez la rubrique « UserName Property » dans l’aide de DAO.

Notes

Le nom d’utilisateur par défaut que vous définissez s’applique aux nouveaux espaces de travail que vous créez après l’appel. Lorsque vous créez des espaces de travail suivants, vous n’avez pas besoin de spécifier un nom d’utilisateur dans l’appel Créer .

Pour utiliser cette fonction membre :

  1. Construisez un CDaoWorkspace objet, mais n’appelez Createpas .

  2. Appelez et, si vous le souhaitez SetDefaultUser , SetDefaultPassword.

  3. Appelez Create cet objet d’espace de travail ou les éléments suivants, sans spécifier de nom d’utilisateur.

Par défaut, la propriété DefaultUser est définie sur « admin » et la propriété DefaultPassword est définie sur une chaîne vide (« »).

Pour plus d’informations, consultez les rubriques « DefaultUser Property » et « DefaultPassword Property » dans l’aide de DAO.

CDaoWorkspace ::SetIniPath

Appelez cette fonction membre pour spécifier l’emplacement des paramètres de Registre Windows pour le moteur de base de données Microsoft Jet.

static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);

Paramètres

lpszRegistrySubkey
Chaîne contenant le nom d’une sous-clé de Registre Windows pour l’emplacement des paramètres ou paramètres du moteur de base de données Microsoft Jet nécessaires pour les bases de données ISAM installables.

Notes

Appelez SetIniPath uniquement si vous devez spécifier des paramètres spéciaux. Pour plus d’informations, consultez la rubrique « IniPath Property » dans L’aide de DAO.

Remarque

Appelez SetIniPath pendant l’installation de l’application, et non lorsque l’application s’exécute. SetIniPath doit être appelé avant d’ouvrir des espaces de travail, des bases de données ou des jeux d’enregistrements ; sinon, MFC lève une exception.

Vous pouvez utiliser ce mécanisme pour configurer le moteur de base de données avec les paramètres de Registre fournis par l’utilisateur. L’étendue de cet attribut est limitée à votre application et ne peut pas être modifiée sans redémarrer votre application.

CDaoWorkspace ::SetIsolateODBCTrans

Appelez cette fonction membre pour définir la valeur de la propriété DAO IsolateODBCTrans pour l’espace de travail.

void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);

Paramètres

bIsolateODBCTrans
Passez TRUE si vous souhaitez commencer à isoler les transactions ODBC. Transmettez FALSE si vous souhaitez arrêter l’isolation des transactions ODBC.

Notes

Dans certains cas, vous devrez peut-être avoir plusieurs transactions simultanées en attente sur la même base de données ODBC. Pour ce faire, vous devez ouvrir un espace de travail distinct pour chaque transaction. Bien que chaque espace de travail puisse avoir sa propre connexion ODBC à la base de données, cela ralentit les performances du système. Étant donné que l’isolation des transactions n’est pas normalement requise, les connexions ODBC à partir de plusieurs objets d’espace de travail ouverts par le même utilisateur sont partagées par défaut.

Certains serveurs ODBC, tels que Microsoft SQL Server, n’autorisent pas les transactions simultanées sur une seule connexion. Si vous devez avoir plusieurs transactions à la fois en attente sur une telle base de données, définissez la propriété IsolateODBCTrans sur TRUE sur chaque espace de travail dès que vous l’ouvrez. Cela force une connexion ODBC distincte pour chaque espace de travail.

CDaoWorkspace ::SetLoginTimeout

Appelez cette fonction membre pour définir la valeur de la propriété DAO LoginTimeout pour l’espace de travail.

static void PASCAL SetLoginTimeout(short nSeconds);

Paramètres

nSeconds
Nombre de secondes avant qu’une erreur se produise lorsque vous tentez de vous connecter à une base de données ODBC.

Notes

Cette valeur représente le nombre de secondes avant qu’une erreur se produise lorsque vous tentez de vous connecter à une base de données ODBC. Le paramètre LoginTimeout par défaut est de 20 secondes. Lorsque LoginTimeout est défini sur 0, aucun délai d’expiration ne se produit et la communication avec la source de données peut cesser de répondre.

Lorsque vous tentez de vous connecter à une base de données ODBC, telle que Microsoft SQL Server, la connexion peut échouer en raison d’erreurs réseau ou parce que le serveur n’est pas en cours d’exécution. Au lieu d’attendre la connexion par défaut de 20 secondes, vous pouvez spécifier la durée pendant laquelle le moteur de base de données attend avant qu’il génère une erreur. La connexion au serveur se produit implicitement dans le cadre d’un certain nombre d’événements différents, tels que l’exécution d’une requête sur une base de données de serveur externe. La valeur du délai d’expiration est déterminée par le paramètre actuel de la propriété LoginTimeout.

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

Voir aussi

CObject, classe
Graphique hiérarchique
CDaoDatabase, classe
CDaoRecordset, classe
CDaoTableDef, classe
CDaoQueryDef, classe
CDaoException, classe