CDaoWorkspace (clase)

Administra una sesión de base de datos con nombre, protegida mediante contraseña de inicio de sesión a cierre de sesión, por un único usuario. DAO se admite mediante Office 2013. DAO 3.6 es la versión final y se considera obsoleta.

Sintaxis

class CDaoWorkspace : public CObject

Miembros

Constructores públicos

Nombre Descripción
CDaoWorkspace::CDaoWorkspace Construye un objeto de área de trabajo. Después, llame a Create o Open.

Métodos públicos

Nombre Descripción
CDaoWorkspace::Append Anexa un área de trabajo recién creada a la colección Workspaces del motor de base de datos.
CDaoWorkspace::BeginTrans Inicia una nueva transacción, que se aplica a todas las bases de datos abiertas en el área de trabajo.
CDaoWorkspace::Close Cierra el área de trabajo y todos los objetos que contiene. Las transacciones pendientes se revierten.
CDaoWorkspace::CommitTrans Completa la transacción actual y guarda los cambios.
CDaoWorkspace::CompactDatabase Compacta (o duplica) una base de datos.
CDaoWorkspace::Create Crea un nuevo objeto de área de trabajo DAO.
CDaoWorkspace::GetDatabaseCount Devuelve el número de objetos de base de datos DAO de la colección Databases del área de trabajo.
CDaoWorkspace::GetDatabaseInfo Devuelve información sobre una base de datos DAO especificada definida en la colección Databases del área de trabajo.
CDaoWorkspace::GetIniPath Devuelve la ubicación de la configuración de inicialización del motor de base de datos de Microsoft Jet en el Registro de Windows.
CDaoWorkspace::GetIsolateODBCTrans Devuelve un valor que indica si varias transacciones que implican el mismo origen de datos ODBC están aisladas a través de varias conexiones forzadas al origen de datos.
CDaoWorkspace::GetLoginTimeout Devuelve el número de segundos antes de que se produzca un error cuando el usuario intenta iniciar sesión en una base de datos ODBC.
CDaoWorkspace::GetName Devuelve el nombre definido por el usuario para el objeto del área de trabajo.
CDaoWorkspace::GetUserName Devuelve el nombre de usuario especificado cuando se creó el área de trabajo. Este es el nombre del propietario del área de trabajo.
CDaoWorkspace::GetVersion Devuelve una cadena que contiene la versión del motor de base de datos asociado al área de trabajo.
CDaoWorkspace::GetWorkspaceCount Devuelve el número de objetos del área de trabajo DAO de la colección Workspaces del motor de base de datos.
CDaoWorkspace::GetWorkspaceInfo Devuelve información sobre un área de trabajo DAO especificada definida en la colección Workspaces del motor de base de datos.
CDaoWorkspace::Idle Permite al motor de base de datos realizar tareas en segundo plano.
CDaoWorkspace::IsOpen Devuelve un valor distinto de cero si el área de trabajo está abierta.
CDaoWorkspace::Open Abre explícitamente un objeto de área de trabajo asociado al área de trabajo predeterminada de DAO.
CDaoWorkspace::RepairDatabase Intenta reparar una base de datos dañada.
CDaoWorkspace::Rollback Finaliza la transacción actual y no guarda los cambios.
CDaoWorkspace::SetDefaultPassword Establece la contraseña que usa el motor de base de datos cuando se crea un objeto de área de trabajo sin una contraseña específica.
CDaoWorkspace::SetDefaultUser Establece la contraseña que usa el motor de base de datos cuando se crea un objeto de área de trabajo sin una contraseña específica.
CDaoWorkspace::SetIniPath Devuelve la ubicación de la configuración de inicialización del motor de base de datos de Microsoft Jet en el Registro de Windows.
CDaoWorkspace::SetIsolateODBCTrans Devuelve un valor que indica si varias transacciones que implican el mismo origen de datos ODBC están aisladas a través de varias conexiones forzadas al origen de datos.
CDaoWorkspace::SetLoginTimeout Devuelve el número de segundos antes de que se produzca un error cuando el usuario intenta iniciar sesión en una base de datos ODBC.

Miembros de datos públicos

Nombre Descripción
CDaoWorkspace::m_pDAOWorkspace Apunta al objeto de área de trabajo DAO subyacente.

Comentarios

En la mayoría de los casos, no necesitará varias áreas de trabajo y no tendrá que crear objetos de área de trabajo explícitos; al abrir objetos de base de datos y conjuntos de registros, usan el área de trabajo predeterminada de DAO. Sin embargo, si es necesario, puede ejecutar varias sesiones a la vez mediante la creación de objetos de área de trabajo adicionales. Cada objeto de área de trabajo puede contener varios objetos de base de datos abiertos en su propia colección Databases. En MFC, un área de trabajo es principalmente un administrador de transacciones, especificando un conjunto de bases de datos abiertas en el mismo "espacio de transacciones".

Nota:

Las clases de base de datos DAO son distintas de las clases de base de datos MFC, basadas en la conectividad abierta de base de datos (ODBC). Todos los nombres de las clases de base de datos DAO tienen el prefijo "CDao". En general, las clases MFC basadas en DAO son más capaces que las clases MFC basadas en ODBC. Las clases basadas en DAO acceden a los datos a través del motor de base de datos de Microsoft Jet, incluidos los controladores ODBC. También admiten operaciones de Lenguaje de definición de datos (DDL), como crear bases de datos y agregar tablas y campos a través de las clases, sin tener que llamar directamente a DAO.

Funcionalidades

La clase CDaoWorkspace proporciona lo siguiente:

  • Acceso explícito, si es necesario, a un área de trabajo predeterminada, creada inicializando el motor de base de datos. Normalmente, se usa el área de trabajo predeterminada de DAO implícitamente mediante la creación de objetos de base de datos y conjuntos de registros.

  • Espacio de transacciones en el que las transacciones se aplican a todas las bases de datos abiertas en el área de trabajo. Puede crear áreas de trabajo adicionales para administrar espacios de transacciones independientes.

  • Interfaz para muchas propiedades del motor de base de datos de Microsoft Jet subyacente (consulte las funciones miembro estáticas). Abrir o crear un área de trabajo, o llamar a una función miembro estática antes de abrir o crear, inicializa el motor de base de datos.

  • Acceso a la colección Workspaces del motor de base de datos, que almacena todas las áreas de trabajo activas que se han anexado a ella. También puede crear y trabajar con áreas de trabajo sin anexarlas a la colección.

Seguridad

MFC no implementa las colecciones Usuarios y grupos en DAO, que se usan para el control de seguridad. Si necesita esos aspectos de DAO, debe programarlos a través de llamadas directas a interfaces DAO. Para obtener más información, consulte la Nota técnica 54.

Uso

Puede usar la clase CDaoWorkspace para:

  • Abra explícitamente el área de trabajo predeterminada.

    Normalmente, el uso del área de trabajo predeterminada es implícito, cuando se abren nuevos objetos CDaoDatabase o CDaoRecordset. Pero es posible que tenga que acceder a él explícitamente, por ejemplo, para acceder a las propiedades del motor de base de datos o a la colección Workspaces. Consulte "Uso implícito del área de trabajo predeterminada" a continuación.

  • Cree nuevas áreas de trabajo. Llame a Append si desea agregarlos a la colección Workspaces.

  • Abra un área de trabajo existente en la colección Workspaces.

La creación de un área de trabajo que aún no existe en la colección Workspaces se describe en la función Crear miembro. Los objetos del área de trabajo no se conservan de ninguna manera entre las sesiones del motor de base de datos. Si la aplicación vincula MFC estáticamente, la aplicación deja de inicializar el motor de base de datos. Si la aplicación se vincula dinámicamente con MFC, el motor de base de datos no se inicializa cuando se descarga el archivo DLL de MFC.

La apertura explícita del área de trabajo predeterminada o la apertura de un área de trabajo existente en la colección Workspaces se describe en la función Abrir miembro.

Para finalizar una sesión del área de trabajo, cierre el área de trabajo con la función Cerrar miembro. Close cierra las bases de datos que no haya cerrado anteriormente, revierte las transacciones no confirmadas.

Transacciones

DAO administra las transacciones en el nivel de área de trabajo; por lo tanto, las transacciones de un área de trabajo con varias bases de datos abiertas se aplican a todas las bases de datos. Por ejemplo, si dos bases de datos tienen actualizaciones no confirmadas y llama a CommitTrans, todas las actualizaciones se confirman. Si desea limitar las transacciones a una base de datos única, necesita un objeto de área de trabajo independiente para ella.

Uso implícito del área de trabajo predeterminada

MFC usa implícitamente el área de trabajo predeterminada de DAO en las siguientes circunstancias:

  • Si crea un nuevo CDaoDatabase objeto, pero no lo hace a través de un objeto existente CDaoWorkspace, MFC crea un objeto de área de trabajo temporal automáticamente, que corresponde al área de trabajo predeterminada de DAO. Si lo hace para varias bases de datos, todos los objetos de base de datos están asociados al área de trabajo predeterminada. Puede acceder al área de trabajo de una base de datos a través de un CDaoDatabase miembro de datos.

  • Del mismo modo, si crea un CDaoRecordset objeto sin proporcionar un puntero a un CDaoDatabase objeto, MFC crea un objeto de base de datos temporal y, por extensión, un objeto de área de trabajo temporal. Puede acceder a la base de datos de un conjunto de registros, e indirectamente su área de trabajo, a través de un CDaoRecordset miembro de datos.

Otras operaciones

También se proporcionan otras operaciones de base de datos, como reparar una base de datos dañada o compactar una base de datos.

Para obtener información sobre cómo llamar directamente a DAO y sobre la seguridad de DAO, vea Nota técnica 54.

Jerarquía de herencia

CObject

CDaoWorkspace

Requisitos

Encabezado: afxdao.h

CDaoWorkspace::Append

Llame a esta función miembro después de llamar a Create.

virtual void Append();

Comentarios

Append anexa un objeto de área de trabajo recién creado a la colección Workspaces del motor de base de datos. Las áreas de trabajo no se conservan entre sesiones del motor de base de datos; solo se almacenan en memoria, no en el disco. No es necesario anexar un área de trabajo; si no lo hace, puede seguir utilizándolo.

Un área de trabajo anexada permanece en la colección Workspaces, en un estado activo y abierto, hasta que se llama a su función miembro Close .

Para obtener información relacionada, vea el tema sobre el método Append en la Ayuda de DAO.

CDaoWorkspace::BeginTrans

Llame a esta función miembro para iniciar una transacción.

void BeginTrans();

Comentarios

Después de llamar a BeginTrans, las actualizaciones que realice en la estructura de datos o base de datos surtan efecto al confirmar la transacción. Dado que el área de trabajo define un único espacio de transacciones, la transacción se aplica a todas las bases de datos abiertas del área de trabajo. Hay dos maneras de completar la transacción:

  • Llame a la función miembro CommitTrans para confirmar la transacción y guardar los cambios en el origen de datos.

  • O bien, llame a la función miembro Rollback para cancelar la transacción.

Cerrar el objeto del área de trabajo o un objeto de base de datos mientras una transacción está pendiente revierte todas las transacciones pendientes.

Si necesita aislar transacciones en un origen de datos ODBC de los de otro origen de datos ODBC, consulte la función miembro SetIsolateODBCTrans .

CDaoWorkspace::CDaoWorkspace

Construye un objeto CDaoWorkspace.

CDaoWorkspace();

Comentarios

Después de construir el objeto de C++, tiene dos opciones:

  • Llame a la función miembro Open del objeto para abrir el área de trabajo predeterminada o para abrir un objeto existente en la colección Workspaces.

  • O bien, llame a la función Create member del objeto para crear un nuevo objeto de área de trabajo DAO. Esto inicia explícitamente una nueva sesión de área de trabajo, a la que puede hacer referencia a través del CDaoWorkspace objeto . Después de llamar a Create, puede llamar a Append si desea agregar el área de trabajo a la colección Workspaces del motor de base de datos.

Consulte la información general sobre la clase de CDaoWorkspace para obtener información sobre cuándo necesita crear explícitamente un CDaoWorkspace objeto. Normalmente, se usan áreas de trabajo creadas implícitamente al abrir un objeto CDaoDatabase sin especificar un área de trabajo o al abrir un objeto CDaoRecordset sin especificar un objeto de base de datos. Los objetos DAO de MFC creados de esta manera usan el área de trabajo predeterminada de DAO, que se crea una vez y se reutiliza.

Para liberar un área de trabajo y sus objetos contenidos, llame a la función miembro Close del objeto del área de trabajo.

CDaoWorkspace::Close

Llame a esta función miembro para cerrar el objeto del área de trabajo.

virtual void Close();

Comentarios

Al cerrar un objeto de área de trabajo abierta, se libera el objeto DAO subyacente y, si el área de trabajo es miembro de la colección Workspaces, la quita de la colección. Llamar Close a es una buena práctica de programación.

Precaución

Al cerrar un objeto de área de trabajo, se cierran las bases de datos abiertas del área de trabajo. Esto da como resultado que también se revierten los conjuntos de registros abiertos en las bases de datos y se revierten las modificaciones o actualizaciones pendientes. Para obtener información relacionada, vea las funciones miembro CDaoDatabase::Close, CDaoRecordset::Close, CDaoTableDef::Close y CDaoQueryDef::Close.

Los objetos del área de trabajo no son permanentes; solo existen mientras existen referencias a ellas. Esto significa que cuando finaliza la sesión del motor de base de datos, el área de trabajo y su colección de base de datos no se conservan. Para volver a crearlas para la siguiente sesión, vuelva a abrir el área de trabajo y las bases de datos.

Para obtener información relacionada, vea el tema sobre el método Close en la Ayuda de DAO.

CDaoWorkspace::CommitTrans

Llame a esta función miembro para confirmar una transacción: guarde un grupo de ediciones y actualizaciones en una o varias bases de datos del área de trabajo.

void CommitTrans();

Comentarios

Una transacción consta de una serie de cambios en los datos de la base de datos o su estructura, empezando por una llamada a BeginTrans. Cuando complete la transacción, confírmela o revierte (cancele los cambios) con Reversión. De forma predeterminada, sin transacciones, las actualizaciones de los registros se confirman inmediatamente. LLamar a BeginTrans hace que el compromiso de las actualizaciones se retrase hasta que llame a CommitTrans.

Precaución

Dentro de una área de trabajo, las transacciones siempre son globales para el área de trabajo y no se limitan solo a una base de datos o conjunto de registros. Si realiza operaciones en más de una base de datos o conjunto de registros dentro de una transacción del área de trabajo, CommitTrans confirma todas las actualizaciones pendientes y Rollback restaura todas las operaciones en esas bases de datos y conjuntos de registros.

Al cerrar una base de datos o un área de trabajo con transacciones pendientes, todas las transacciones se revierten.

Nota:

Este no es un mecanismo de confirmación en dos fases. Si una actualización no se puede confirmar, otras seguirán confirmando.

CDaoWorkspace::CompactDatabase

Llame a esta función miembro para compactar un Microsoft Jet especificado (. Base de datos 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);

Parámetros

lpszSrcName
El nombre de una auditoría de base de datos cerrada existente. Puede ser una ruta de acceso completa y un nombre de archivo, como "C:\\MYDB. MDB". Si el nombre de archivo tiene una extensión, debe especificarlo. Si la red admite la convención de nomenclatura uniforme (UNC), también puede especificar una ruta de acceso de red, como "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB.MDB". (Se requieren barras diagonales inversas dobles en las cadenas de ruta de acceso porque "\" es el carácter de escape de C++).

lpszDestName
Ruta de acceso completa de la base de datos compactada que está creando. También puede especificar una ruta de acceso de red como con lpszSrcName. No puede usar el argumento lpszDestName para especificar el mismo archivo de base de datos que lpszSrcName.

lpszPassword
Una contraseña, que se usa cuando desea compactar una base de datos protegida con contraseña. Tenga en cuenta que si usa la versión de CompactDatabase que toma una contraseña, debe proporcionar todos los parámetros. Además, dado que se trata de un parámetro connect, requiere un formato especial, como se indica a continuación: ; PWD= lpszPassword. Por ejemplo: ; PWD="Happy". (Se requiere el punto y coma inicial).

lpszLocale
Expresión de cadena usada para especificar el orden de intercalación para crear lpszDestName. Si omite este argumento aceptando el valor predeterminado de dbLangGeneral (vea a continuación), la configuración regional de la nueva base de datos es la misma que la de la base de datos anterior. Los valores posibles son:

  • dbLangGeneral Inglés, alemán, francés, portugués, italiano y español moderno

  • dbLangArabic Árabe

  • dbLangCyrillic Ruso

  • dbLangCzech Checo

  • dbLangDutch Neerlandés

  • dbLangGreek Griego

  • dbLangHebrew Hebreo

  • dbLangHungarian Húngaro

  • dbLangIcelandic Islandés

  • dbLangNordic Idiomas nórdicos (solo versión 1.0 del motor de base de datos de Microsoft Jet)

  • dbLangNorwdan Noruego y danés

  • dbLangPolish Polaco

  • dbLangSpanish Español tradicional

  • dbLangSwedfin Sueco y finlandés

  • dbLangTurkishTurco

nOptions
Indica una o varias opciones para la base de datos de destino, lpszDestName. Si omite este argumento aceptando el valor predeterminado, lpszDestName tendrá el mismo cifrado y la misma versión que lpszSrcName. Puede combinar la dbEncrypt opción o dbDecrypt con una de las opciones de versión mediante el operador OR bit a bit. Los valores posibles, que especifican un formato de base de datos, no una versión del motor de base de datos, son:

  • dbEncrypt Cifrar la base de datos mientras se compacta.

  • dbDecrypt Descifrar la base de datos mientras se compacta.

  • dbVersion10 Crear una base de datos que use la versión 1.0 del motor de base de datos de Microsoft Jet durante la compactación.

  • dbVersion11 Crear una base de datos que use la versión 1.1 del motor de base de datos de Microsoft Jet durante la compactación.

  • dbVersion20 Crear una base de datos que use la versión 2.0 del motor de base de datos de Microsoft Jet durante la compactación.

  • dbVersion30 Crear una base de datos que use la versión 3.0 del motor de base de datos de Microsoft Jet durante la compactación.

Puede usar dbEncrypt o dbDecrypt en el argumento options para especificar si se va a cifrar o descifrar la base de datos a medida que se compacta. Si omite una constante de cifrado o si incluye y dbDecryptdbEncrypt, lpszDestName tendrá el mismo cifrado que lpszSrcName. Puede usar una de las constantes de versión en el argumento options para especificar la versión del formato de datos para la base de datos compactada. Esta constante afecta solo a la versión del formato de datos de lpszDestName. Solo se puede especificar una constante de versión. Si omite una constante de versión, lpszDestName tendrá la misma versión que lpszSrcName. Puede compactar lpszDestName solo en una versión que sea la misma o posterior que la de lpszSrcName.

Precaución

Si una base de datos no está cifrada, es posible, incluso si implementa la seguridad de usuario o contraseña, para leer directamente el archivo de disco binario que constituye la base de datos.

Comentarios

A medida que cambia los datos de una base de datos, el archivo de base de datos se puede fragmentar y usar más espacio en disco de lo necesario. Periódicamente, debe compactar la base de datos para desfragmentar el archivo de base de datos. La base de datos compacta suele ser más pequeña. También puede cambiar el orden de intercalación, el cifrado o la versión del formato de datos mientras copia y compacta la base de datos.

Precaución

La CompactDatabase función miembro no convertirá correctamente una base de datos completa de Microsoft Access de una versión a otra. Solo se convierte el formato de datos. Los objetos definidos por Microsoft Access, como formularios e informes, no se convierten. Sin embargo, los datos se convierten correctamente.

Sugerencia

También puede usar CompactDatabase para copiar un archivo de base de datos.

Para obtener más información sobre la compactación de bases de datos, vea el tema "CompactDatabase Method" (Método CompactDatabase) en la Ayuda de DAO.

CDaoWorkspace::Create

Llame a esta función miembro para crear un nuevo objeto de área de trabajo daO y asociarlo al objeto MFC CDaoWorkspace .

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

Parámetros

lpszName
Cadena con hasta 14 caracteres que asigna un nombre único al nuevo objeto de área de trabajo. Debe proporcionar un nombre. Para obtener más información, consulte el tema "Name Property" (Propiedad de UserName) en la Ayuda de DAO.

lpszUserName
El nombre de usuario del propietario del área de trabajo. Para conocer los requisitos, consulte el parámetro lpszDefaultUser para la función miembro SetDefaultUser . Para obtener más información, consulte el tema "UserName Property" (Propiedad de UserName) en la Ayuda de DAO.

lpszPassword
Contraseña del nuevo objeto de área de trabajo. Una contraseña puede tener hasta 14 caracteres y puede contener cualquier carácter excepto ASCII 0 (null). En las contraseñas se distingue entre mayúsculas y minúsculas. Para obtener más información, consulte el tema "Password Property" (Propiedad de UserName) en la Ayuda de DAO.

Comentarios

El proceso de creación general es:

  1. Cree un objeto CDaoWorkspace

  2. Llame a la función miembro del Create objeto para crear el área de trabajo DAO subyacente. Especifique un nombre de área de trabajo.

  3. Opcionalmente, llame a Append si desea agregar el área de trabajo a la colección Workspaces del motor de base de datos. Puede trabajar con el área de trabajo sin anexarlo.

Después de la Create llamada, el objeto del área de trabajo está en estado abierto, listo para su uso. No llame a Open después de Create . No llame a Create si el área de trabajo ya existe en la colección Workspaces. Create inicializa el motor de base de datos si aún no se ha inicializado para la aplicación.

CDaoWorkspace::GetDatabaseCount

Llame a esta función miembro para recuperar el número de objetos de base de datos DAO de la colección Databases del área de trabajo: el número de bases de datos abiertas en el área de trabajo.

short GetDatabaseCount();

Valor devuelto

Número de bases de datos abiertas en el área de trabajo.

Comentarios

GetDatabaseCount es útil si necesita recorrer en bucle todas las bases de datos definidas de la colección Databases del área de trabajo. Para obtener información sobre una base de datos determinada en la colección, vea GetDatabaseInfo. El uso típico consiste en llamar GetDatabaseCount al número de bases de datos abiertas y, a continuación, usar ese número como índice de bucle para las llamadas repetidas a GetDatabaseInfo.

CDaoWorkspace::GetDatabaseInfo

Llame a esta función miembro para obtener varios tipos de información sobre un campo definido en la definición de consulta.

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

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

Parámetros

nIndex
Índice de base cero del objeto de base de datos de la colección Databases del área de trabajo, para la búsqueda por índice.

dbinfo
Referencia a un objeto CDaoDatabaseinfo que devuelve la información solicitada.

dwInfoOptions
Opciones que especifican la información sobre la base de datos que se va a recuperar. Las opciones disponibles se enumeran aquí junto con lo que hacen que la función devuelva:

  • AFX_DAO_PRIMARY_INFO (valor predeterminado), actualizable, transacciones

  • AFX_DAO_SECONDARY_INFO información principal más: Versión, Orden de intercalación, Tiempo de espera de consulta

  • AFX_DAO_ALL_INFO información principal y secundaria más: Conectar

lpszName
Nombre del objeto de base de datos, para la búsqueda por nombre. El nombre es una cadena con hasta 14 caracteres que nombra de forma única el nuevo objeto de área de trabajo.

Comentarios

Una versión de la función permite buscar una base de datos por índice. La otra versión le permite buscar una base de datos por nombre.

Para obtener una descripción de la información devuelta en dbinfo, vea la estructura CDaoDatabaseInfo. Esta estructura tiene miembros que corresponden a los elementos de información enumerados anteriormente en la descripción de dwInfoOptions. Si solicita información en un nivel, también obtiene información de los niveles anteriores.

CDaoWorkspace::GetIniPath

Llame a esta función miembro para obtener la ubicación de la configuración de inicialización del motor de base de datos de Microsoft Jet en el Registro de Windows.

static CString PASCAL GetIniPath();

Valor devuelto

Un CString que contiene la ubicación del registro.

Comentarios

Puede usar la ubicación para obtener información sobre la configuración del motor de base de datos. La información devuelta es realmente el nombre de una subclave del Registro.

Para obtener información relacionada, vea los temas "Propiedad IniPath" y "Personalización de la configuración del Registro de Windows para el acceso a datos" en la Ayuda de DAO.

CDaoWorkspace::GetIsolateODBCTrans

Llame a esta función miembro para obtener el valor actual de la propiedad IsolateODBCTrans de DAO para el área de trabajo.

BOOL GetIsolateODBCTrans();

Valor devuelto

Distinto de cero si las transacciones ODBC están aisladas; de lo contrario, 0.

Comentarios

En algunas situaciones, es posible que tenga que tener varias transacciones simultáneas pendientes en la misma base de datos ODBC. Para ello, debe abrir un área de trabajo independiente para cada transacción. Tenga en cuenta que, aunque cada área de trabajo puede tener su propia conexión ODBC a la base de datos, esto ralentiza el rendimiento del sistema. Dado que el aislamiento de transacciones no suele ser necesario, las conexiones ODBC de varios objetos de área de trabajo abiertos por el mismo usuario se comparten de forma predeterminada.

Algunos servidores ODBC, como Microsoft SQL Server, no permiten transacciones simultáneas en una sola conexión. Si necesita tener más de una transacción a la vez pendiente en dicha base de datos, establezca la propiedad IsolateODBCTrans en TRUE en cada área de trabajo en cuanto la abra. Esto fuerza una conexión ODBC independiente para cada área de trabajo.

Para obtener más información, vea el tema "IsolateODBCTrans Property" (Propiedad IsolateODBCTrans) en la Ayuda de DAO.

CDaoWorkspace::GetLoginTimeout

Llame a esta función miembro para obtener el valor actual de la propiedad LoginTimeout de DAO para el área de trabajo.

static short PASCAL GetLoginTimeout();

Valor devuelto

Número de segundos antes de que se produzca un error al intentar iniciar sesión en una base de datos ODBC.

Comentarios

Este valor representa el número de segundos antes de que se produzca un error al intentar iniciar sesión en una base de datos ODBC. El valor predeterminado loginTimeout es de 20 segundos. Cuando LoginTimeout se establece en 0, no se produce ningún tiempo de espera y la comunicación con el origen de datos podría dejar de responder.

Cuando intenta iniciar sesión en una base de datos ODBC, como Microsoft SQL Server, la conexión puede producir un error como resultado de errores de red o porque el servidor no se está ejecutando. En lugar de esperar a que se conecten los 20 segundos predeterminados, puede especificar cuánto tiempo espera el motor de base de datos antes de generar un error. El inicio de sesión en el servidor se produce implícitamente como parte de varios eventos diferentes, como la ejecución de una consulta en una base de datos de servidor externo.

Para obtener más información, consulte el tema "LoginTimeoutProperty" (Propiedad de UserName) en la Ayuda de DAO.

CDaoWorkspace::GetName

Llame a esta función miembro para obtener el nombre definido por el usuario del objeto del área de trabajo DAO subyacente al CDaoWorkspace objeto .

CString GetName();

Valor devuelto

CString que contiene el nombre definido por el usuario del objeto de área de trabajo DAO.

Comentarios

El nombre es útil para acceder al objeto del área de trabajo DAO en la colección Workspaces del motor de base de datos por nombre.

Para obtener más información, consulte el tema "Name Property" (Propiedad de UserName) en la Ayuda de DAO.

CDaoWorkspace::GetUserName

Llame a esta función miembro para obtener el nombre del propietario del área de trabajo.

CString GetUserName();

Valor devuelto

CString que representa el propietario del objeto del área de trabajo.

Comentarios

Para obtener o establecer los permisos para el propietario del área de trabajo, llame a DAO directamente para comprobar el valor de la propiedad Permissions; esto determina qué permisos tiene el usuario. Para trabajar con permisos, necesita un SISTEMA. Archivo MDA.

Para obtener información sobre cómo llamar directamente a DAO, vea la Nota técnica 54. Para obtener más información, consulte el tema "UserName Property" (Propiedad de UserName) en la Ayuda de DAO.

CDaoWorkspace::GetVersion

Llame a esta función miembro para determinar la versión del motor de base de datos de Microsoft Jet en uso.

static CString PASCAL GetVersion();

Valor devuelto

CString que indica la versión del motor de base de datos asociado al objeto.

Comentarios

El valor devuelto representa el número de versión con el formato "major.minor"; por ejemplo, "3.0". El número de versión del producto (por ejemplo, 3.0) consta del número de versión (3), un punto y el número de versión (0).

Para obtener más información, consulte el tema "UserName Property" (Propiedad de UserName) en la Ayuda de DAO.

CDaoWorkspace::GetWorkspaceCount

Llame a esta función miembro para recuperar el número de objetos de área de trabajo DAO de la colección Workspaces del motor de base de datos.

short GetWorkspaceCount();

Valor devuelto

Número de áreas de trabajo abiertas en la colección Workspaces.

Comentarios

Este recuento no incluye áreas de trabajo abiertas que no se anexan a la colección. GetWorkspaceCount resulta útil si necesita recorrer en bucle todas las áreas de trabajo definidas de la colección Workspaces. Para obtener información sobre un área de trabajo determinada en la colección, vea GetWorkspaceInfo. El uso típico es llamar GetWorkspaceCount al número de áreas de trabajo abiertas y, a continuación, usar ese número como índice de bucle para llamadas repetidas a GetWorkspaceInfo.

CDaoWorkspace::GetWorkspaceInfo

Llame a esta función miembro para obtener varios tipos de información sobre un campo definido en la definición de consulta.

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

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

Parámetros

nIndex
Índice de base cero del objeto de base de datos de la colección Databases del área de trabajo, para la búsqueda por índice.

wkspcinfo
Referencia a un objeto CDaoWorkspaceInfo que devuelve la información solicitada.

dwInfoOptions
Opciones que especifican qué información sobre el área de trabajo se va a recuperar. Las opciones disponibles se enumeran aquí junto con lo que hacen que la función devuelva:

  • nombre de AFX_DAO_PRIMARY_INFO (valor predeterminado), tipo

  • AFX_DAO_SECONDARY_INFO información principal más: Nombre de usuario

  • AFX_DAO_ALL_INFO información principal y secundaria más: Isolate ODBCTrans

lpszName
Nombre del objeto del área de trabajo, para la búsqueda por nombre. El nombre es una cadena con hasta 14 caracteres que nombra de forma única el nuevo objeto de área de trabajo.

Comentarios

Para obtener una descripción de la información devuelta en wkspcinfo, vea la estructura CDaoWorkspaceInfo . Esta estructura tiene miembros que corresponden a los elementos de información enumerados anteriormente en la descripción de dwInfoOptions. Al solicitar información en un nivel, también obtendrá información de los niveles anteriores.

CDaoWorkspace::Idle

Llame Idle a para proporcionar al motor de base de datos la oportunidad de realizar tareas en segundo plano que pueden no estar actualizadas debido al procesamiento de datos intenso.

static void PASCAL Idle(int nAction = dbFreeLocks);

Parámetros

nAction
Una acción que se va a realizar durante el procesamiento inactivo. Actualmente, el único valor válido es dbFreeLocks.

Comentarios

Esto suele ocurrir en entornos multiusuario, multitarea en los que no hay suficiente tiempo de procesamiento en segundo plano para mantener todos los registros en un conjunto de registros actual.

Nota:

No es necesario llamar a Idle con bases de datos creadas con la versión 3.0 del motor de base de datos de Microsoft Jet. Use Idle solo para las bases de datos creadas con versiones anteriores.

Normalmente, los bloqueos de lectura se quitan y los datos de los objetos recordset locales de tipo dynaset solo se actualizan cuando no se producen otras acciones (incluidos los movimientos del mouse). Si llama periódicamente a Idle, proporciona al motor de base de datos tiempo para ponerse al día de las tareas de procesamiento en segundo plano liberando bloqueos de lectura innecesarios. Especificar la constante como argumento retrasa el dbFreeLocks procesamiento hasta que se liberan todos los bloqueos de lectura.

Esta función miembro no es necesaria en entornos de usuario único a menos que se ejecuten varias instancias de una aplicación. La función miembro puede aumentar el Idle rendimiento en un entorno multiusuario porque obliga al motor de base de datos a vaciar los datos en el disco, liberando bloqueos en la memoria. También puede liberar bloqueos de lectura haciendo que las operaciones formen parte de una transacción.

Para obtener información relacionada, consulte el tema "Idle Method" en la Ayuda de DAO.

CDaoWorkspace::IsOpen

Llame a esta función miembro para determinar si el CDaoWorkspace objeto está abierto; es decir, si el objeto MFC se ha inicializado mediante una llamada a Open o una llamada a Create.

BOOL IsOpen() const;

Valor devuelto

Distinto de cero si el objeto del área de trabajo está abierto; de lo contrario, 0.

Comentarios

Puede llamar a cualquiera de las funciones miembro de un área de trabajo que se encuentra en un estado abierto.

CDaoWorkspace::m_pDAOWorkspace

Puntero al objeto de área de trabajo DAO subyacente.

Comentarios

Use este miembro de datos si necesita acceso directo al objeto DAO subyacente. Puede llamar a las interfaces del objeto DAO a través de este puntero.

Para obtener información sobre cómo acceder directamente a los objetos DAO, consulte la Nota técnica 54.

CDaoWorkspace::Open

Abre explícitamente un objeto de área de trabajo asociado al área de trabajo predeterminada de DAO.

virtual void Open(LPCTSTR lpszName = NULL);

Parámetros

lpszName
Nombre del objeto del área de trabajo dao que se va a abrir: una cadena con hasta 14 caracteres que asigna un nombre único al área de trabajo. Acepte el valor predeterminado NULL para abrir explícitamente el área de trabajo predeterminada. Para conocer los requisitos de nomenclatura, consulte el parámetro lpszName para Create. Para obtener más información, consulte el tema "Name Property" (Propiedad de UserName) en la Ayuda de DAO.

Comentarios

Después de construir un CDaoWorkspace objeto, llame a esta función miembro para realizar una de las acciones siguientes:

  • Abra explícitamente el área de trabajo predeterminada. Pase NULL para lpszName.

  • Abra un objeto existente CDaoWorkspace , un miembro de la colección Workspaces, por nombre. Pase un nombre válido para un objeto de área de trabajo existente.

Open coloca el objeto del área de trabajo en un estado abierto y también inicializa el motor de base de datos si aún no se ha inicializado para la aplicación.

Aunque solo se puede llamar a muchas CDaoWorkspace funciones miembro después de que se haya abierto el área de trabajo, las siguientes funciones miembro, que operan en el motor de base de datos, están disponibles después de la construcción del objeto de C++ pero antes de una llamada a Open:

CDaoWorkspace::RepairDatabase

Llame a esta función miembro si necesita intentar reparar una base de datos dañada que tenga acceso al motor de base de datos de Microsoft Jet.

static void PASCAL RepairDatabase(LPCTSTR lpszName);

Parámetros

lpszName
Ruta de acceso y nombre de archivo de un archivo de base de datos del motor de Microsoft Jet existente. Si omite la ruta de acceso, solo se buscará en el directorio actual. Si el sistema admite la convención de nomenclatura uniforme (UNC), también puede especificar una ruta de acceso de red, como: "\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Se requieren barras diagonales inversas dobles en la cadena de ruta de acceso porque "\" es el carácter de escape de C++).

Comentarios

Debe cerrar la base de datos especificada por lpszName antes de repararla. En un entorno multiusuario, otros usuarios no pueden abrir lpszName mientras lo está reparando. Si lpszName no está cerrado o no está disponible para uso exclusivo, se produce un error.

Esta función miembro intenta reparar una base de datos marcada como posiblemente dañada por una operación de escritura incompleta. Esto puede ocurrir si una aplicación que usa el motor de base de datos de Microsoft Jet se cierra inesperadamente debido a una interrupción del suministro eléctrico o un problema de hardware del equipo. Si completa la operación y llama a la función miembro Close o cierra la aplicación de forma habitual, la base de datos no se marcará como posiblemente dañada.

Nota:

Después de reparar una base de datos, también es recomendable compactarla mediante la función miembro CompactDatabase para desfragmentar el archivo y recuperar espacio en disco.

Para obtener más información sobre la reparación de bases de datos, vea el tema "RepairDatabase Method" (Método RepairDatabase) en la Ayuda de DAO.

CDaoWorkspace::Rollback

Llame a esta función miembro para finalizar la transacción actual y restaurar todas las bases de datos del área de trabajo a su condición antes de comenzar la transacción.

void Rollback();

Comentarios

Precaución

Dentro de un objeto de área de trabajo, las transacciones siempre son globales para el área de trabajo y no se limitan a una sola base de datos o conjunto de registros. Si realiza operaciones en más de una base de datos o conjunto de registros dentro de una transacción de área de trabajo, Rollback restaura todas las operaciones en todas esas bases de datos y conjuntos de registros.

Si cierra un objeto de área de trabajo sin guardar o revertir las transacciones pendientes, las transacciones se revierten automáticamente. Si llama a CommitTrans o Rollback sin llamar primero a BeginTrans, se produce un error.

Nota:

Cuando se inicia una transacción, el motor de base de datos registra sus operaciones en un archivo guardado en el directorio especificado por la variable de entorno TEMP en la estación de trabajo. Si el archivo de registro de transacciones agota el almacenamiento disponible en la unidad TEMP, el motor de base de datos hará que MFC genere un CDaoException error (error DAO 2004). En este momento, si llama a CommitTrans, se confirma un número indeterminado de operaciones, pero se pierden las operaciones no completadas restantes y se debe reiniciar la operación. La llamada Rollback libera el registro de transacciones y revierte todas las operaciones de la transacción.

CDaoWorkspace::SetDefaultPassword

Llame a esta función miembro para establecer la contraseña predeterminada que usa el motor de base de datos cuando se crea un objeto de área de trabajo sin una contraseña específica.

static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);

Parámetros

lpszPassword
Contraseña predeterminada. Una contraseña puede tener hasta 14 caracteres y puede contener cualquier carácter excepto ASCII 0 (null). En las contraseñas se distingue entre mayúsculas y minúsculas.

Comentarios

La contraseña predeterminada que establezca se aplica a las nuevas áreas de trabajo que cree después de la llamada. Al crear áreas de trabajo posteriores, no es necesario especificar una contraseña en la llamada Create.

Para usar esta función miembro:

  1. Construya un CDaoWorkspace objeto pero no llame a Create.

  2. Llame a SetDefaultPassword y, si lo desea, SetDefaultUser.

  3. Llame a Create este objeto de área de trabajo o a otros posteriores, sin especificar una contraseña.

De forma predeterminada, la propiedad DefaultUser se establece en "admin" y la propiedad DefaultPassword se establece en una cadena vacía ("").

Para obtener más información sobre la seguridad, vea el tema "Permissions Property" en la Ayuda de DAO. Para obtener información relacionada, vea los temas "DefaultPassword Property" y "DefaultUser Property" en la Ayuda de DAO.

CDaoWorkspace::SetDefaultUser

Llame a esta función miembro para establecer el nombre de usuario predeterminado que usa el motor de base de datos cuando se crea un objeto de área de trabajo sin un nombre de usuario específico.

static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);

Parámetros

lpszDefaultUser
Nombre de usuario predeterminado. Un nombre de usuario puede tener entre 1 y 20 caracteres e incluir caracteres alfabéticos, caracteres acentuados, números, espacios y símbolos excepto: " (comillas), / (barra diagonal), (barra diagonal inversa \ ), (corchetes), [ ] (dos puntos), : (canalización), | (signo menor que), < (signo mayor que), (signo más), >+ (signo igual), = (signo igual), (punto y coma), ; (coma), (signo de interrogación , ), * (asterisco), espacios iniciales y caracteres de control (ASCII 00 a ASCII 31). Para obtener más información, consulte el tema "UserName Property" (Propiedad de UserName) en la Ayuda de DAO.

Comentarios

El nombre de usuario predeterminado que establezca se aplica a las nuevas áreas de trabajo que cree después de la llamada. Al crear áreas de trabajo posteriores, no es necesario especificar un nombre de usuario en la crear llamada.

Para usar esta función miembro:

  1. Construya un CDaoWorkspace objeto pero no llame a Create.

  2. Llame SetDefaultUser y, si lo desea, SetDefaultPassword.

  3. Llame Create para este objeto de área de trabajo o los posteriores, sin especificar un nombre de usuario.

De forma predeterminada, la propiedad DefaultUser se establece en "admin" y la propiedad DefaultPassword se establece en una cadena vacía ("").

Para obtener información relacionada, vea los temas "DefaultUser Property" y "DefaultPassword Property" en la Ayuda de DAO.

CDaoWorkspace::SetIniPath

Llame a esta función miembro para especificar la ubicación de la configuración del Registro de Windows para el motor de base de datos de Microsoft Jet.

static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);

Parámetros

lpszRegistrySubkey
Cadena que contiene el nombre de una subclave del Registro de Windows para la ubicación de la configuración del motor de base de datos de Microsoft Jet o los parámetros necesarios para las bases de datos ISAM instalables.

Comentarios

Llame SetIniPath solo si necesita especificar una configuración especial. Para obtener más información, vea el tema "Propiedad IniPath" en la Ayuda de DAO.

Nota:

Llame a SetIniPath durante la instalación de la aplicación, no cuando se ejecute la aplicación. SetIniPath debe llamarse antes de abrir áreas de trabajo, bases de datos o conjuntos de registros; de lo contrario, MFC produce una excepción.

Puede usar este mecanismo para configurar el motor de base de datos con la configuración del Registro proporcionada por el usuario. El ámbito de este atributo se limita a la aplicación y no se puede cambiar sin reiniciar la aplicación.

CDaoWorkspace::SetIsolateODBCTrans

Llame a esta función miembro para establecer el valor de la propiedad IsolateODBCTrans de DAO para el área de trabajo.

void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);

Parámetros

bIsolateODBCTrans
Pase TRUE si desea empezar a aislar las transacciones ODBC. Pase FALSE si desea detener el aislamiento de las transacciones ODBC.

Comentarios

En algunas situaciones, es posible que tenga que tener varias transacciones simultáneas pendientes en la misma base de datos ODBC. Para ello, debe abrir un área de trabajo independiente para cada transacción. Aunque cada área de trabajo puede tener su propia conexión ODBC a la base de datos, esto ralentiza el rendimiento del sistema. Dado que el aislamiento de transacciones no suele ser necesario, las conexiones ODBC de varios objetos de área de trabajo abiertos por el mismo usuario se comparten de forma predeterminada.

Algunos servidores ODBC, como Microsoft SQL Server, no permiten transacciones simultáneas en una sola conexión. Si necesita tener más de una transacción a la vez pendiente en dicha base de datos, establezca la propiedad IsolateODBCTrans en TRUE en cada área de trabajo en cuanto la abra. Esto fuerza una conexión ODBC independiente para cada área de trabajo.

CDaoWorkspace::SetLoginTimeout

Llame a esta función miembro para obtener el valor actual de la propiedad LoginTimeout de DAO para el área de trabajo.

static void PASCAL SetLoginTimeout(short nSeconds);

Parámetros

nSeconds
Número de segundos antes de que se produzca un error al intentar iniciar sesión en una base de datos ODBC.

Comentarios

Este valor representa el número de segundos antes de que se produzca un error al intentar iniciar sesión en una base de datos ODBC. El valor predeterminado loginTimeout es de 20 segundos. Cuando LoginTimeout se establece en 0, no se produce ningún tiempo de espera y la comunicación con el origen de datos podría dejar de responder.

Cuando intenta iniciar sesión en una base de datos ODBC, como Microsoft SQL Server, la conexión puede producir un error como resultado de errores de red o porque el servidor no se está ejecutando. En lugar de esperar a que se conecten los 20 segundos predeterminados, puede especificar cuánto tiempo espera el motor de base de datos antes de generar un error. El inicio de sesión en el servidor se produce implícitamente como parte de varios eventos diferentes, como la ejecución de una consulta en una base de datos de servidor externo. El valor de tiempo de espera viene determinado por el valor actual de la propiedad LoginTimeout.

Para obtener más información, consulte el tema "LoginTimeoutProperty" (Propiedad de UserName) en la Ayuda de DAO.

Consulte también

CObject (clase)
Gráfico de jerarquías
CDaoDatabase (clase)
CDaoRecordset (clase)
CDaoTableDef (clase)
CDaoQueryDef (clase)
CDaoException (clase)