CDaoDatabase (clase)CDaoDatabase Class

Representa una conexión a una base de datos de Access mediante objetos de acceso a datos (DAO).Represents a connection to an Access database using Data Access Objects (DAO). DAO es compatible con Office 2013.DAO is supported through Office 2013. DAO 3,6 es la versión final y se considera obsoleta.DAO 3.6 is the final version, and it is considered obsolete.

SintaxisSyntax

class CDaoDatabase : public CObject

MiembrosMembers

Constructores públicosPublic Constructors

NOMBREName DescripciónDescription
CDaoDatabase::CDaoDatabaseCDaoDatabase::CDaoDatabase Construye un objeto CDaoDatabase.Constructs a CDaoDatabase object. Llame Open a para conectar el objeto a una base de datos.Call Open to connect the object to a database.

Métodos públicosPublic Methods

NOMBREName DescripciónDescription
CDaoDatabase:: CanTransactCDaoDatabase::CanTransact Devuelve un valor distinto de cero si la base de datos admite transacciones.Returns nonzero if the database supports transactions.
CDaoDatabase:: CanUpdateCDaoDatabase::CanUpdate Devuelve un valor distinto de cero si el CDaoDatabase objeto es actualizable (no es de solo lectura).Returns nonzero if the CDaoDatabase object is updatable (not read-only).
CDaoDatabase::CloseCDaoDatabase::Close Cierra la conexión a la base de datos.Closes the database connection.
CDaoDatabase::CreateCDaoDatabase::Create Crea el objeto de base de datos DAO subyacente e inicializa el CDaoDatabase objeto.Creates the underlying DAO database object and initializes the CDaoDatabase object.
CDaoDatabase::CreateRelationCDaoDatabase::CreateRelation Define una nueva relación entre las tablas de la base de datos.Defines a new relation among the tables in the database.
CDaoDatabase::DeleteQueryDefCDaoDatabase::DeleteQueryDef Elimina un objeto QueryDef guardado en la colección QueryDefs de la base de datos.Deletes a querydef object saved in the database's QueryDefs collection.
CDaoDatabase::DeleteRelationCDaoDatabase::DeleteRelation Elimina una relación existente entre las tablas de la base de datos.Deletes an existing relation between tables in the database.
CDaoDatabase::DeleteTableDefCDaoDatabase::DeleteTableDef Elimina la definición de una tabla en la base de datos.Deletes the definition of a table in the database. Esto elimina la tabla real y todos sus datos.This deletes the actual table and all of its data.
CDaoDatabase:: ExecuteCDaoDatabase::Execute Ejecuta una consulta de acción.Executes an action query. La llamada a Execute para una consulta que devuelve resultados produce una excepción.Calling Execute for a query that returns results throws an exception.
CDaoDatabase::GetConnectCDaoDatabase::GetConnect Devuelve la cadena de conexión que se usa para conectar el CDaoDatabase objeto a una base de datos.Returns the connection string used to connect the CDaoDatabase object to a database. Se usa para ODBC.Used for ODBC.
CDaoDatabase::GetNameCDaoDatabase::GetName Devuelve el nombre de la base de datos actualmente en uso.Returns the name of the database currently in use.
CDaoDatabase:: GetQueryDefCountCDaoDatabase::GetQueryDefCount Devuelve el número de consultas definidas para la base de datos.Returns the number of queries defined for the database.
CDaoDatabase:: GetQueryDefInfoCDaoDatabase::GetQueryDefInfo Devuelve información sobre una consulta especificada definida en la base de datos.Returns information about a specified query defined in the database.
CDaoDatabase::GetQueryTimeoutCDaoDatabase::GetQueryTimeout Devuelve el número de segundos después del cual se agotará el tiempo de espera de las operaciones de consulta de base de datos. Afecta a todas las operaciones posteriores de apertura, de actualización y de edición, así como a otras operaciones en orígenes de datos ODBC (solo), como las Execute llamadas.Returns the number of seconds after which database query operations will time out. Affects all subsequent open, add new, update, and edit operations and other operations on ODBC data sources (only) such as Execute calls.
CDaoDatabase:: GetRecordsAffectedCDaoDatabase::GetRecordsAffected Devuelve el número de registros afectados por la última operación de actualización, edición o adición, o por una llamada a Execute .Returns the number of records affected by the last update, edit, or add operation or by a call to Execute.
CDaoDatabase::GetRelationCountCDaoDatabase::GetRelationCount Devuelve el número de relaciones definidas entre las tablas de la base de datos.Returns the number of relations defined between tables in the database.
CDaoDatabase::GetRelationInfoCDaoDatabase::GetRelationInfo Devuelve información sobre una relación especificada definida entre tablas en la base de datos.Returns information about a specified relation defined between tables in the database.
CDaoDatabase:: GetTableDefCountCDaoDatabase::GetTableDefCount Devuelve el número de tablas definidas en la base de datos.Returns the number of tables defined in the database.
CDaoDatabase:: GetTableDefInfoCDaoDatabase::GetTableDefInfo Devuelve información sobre una tabla especificada en la base de datos.Returns information about a specified table in the database.
CDaoDatabase:: GetVersionCDaoDatabase::GetVersion Devuelve la versión del motor de base de datos asociada a la base de datos.Returns the version of the database engine associated with the database.
CDaoDatabase::IsOpenCDaoDatabase::IsOpen Devuelve un valor distinto de cero si el CDaoDatabase objeto está conectado actualmente a una base de datos.Returns nonzero if the CDaoDatabase object is currently connected to a database.
CDaoDatabase::OpenCDaoDatabase::Open Establece una conexión a una base de datos.Establishes a connection to a database.
CDaoDatabase:: SetQueryTimeoutCDaoDatabase::SetQueryTimeout Establece el número de segundos transcurridos los cuales se agotará el tiempo de espera de las operaciones de consulta de base de datos (solo en orígenes de datos ODBC). Afecta a todas las operaciones de apertura, actualización y eliminación posteriores.Sets the number of seconds after which database query operations (on ODBC data sources only) will time out. Affects all subsequent open, add new, update, and delete operations.

Miembros de datos públicosPublic Data Members

NombreName DescripciónDescription
CDaoDatabase:: m_pDAODatabaseCDaoDatabase::m_pDAODatabase Puntero al objeto de base de datos DAO subyacente.A pointer to the underlying DAO database object.
CDaoDatabase:: m_pWorkspaceCDaoDatabase::m_pWorkspace Un puntero al objeto CDaoWorkspace que contiene la base de datos y define su espacio de transacciones.A pointer to the CDaoWorkspace object that contains the database and defines its transaction space.

ObservacionesRemarks

Para obtener información sobre los formatos de base de datos admitidos, vea la función miembro GetName .For information about the database formats supported, see the GetName member function. Puede tener uno o más CDaoDatabase objetos activos a la vez en un "área de trabajo" determinada representada por un objeto CDaoWorkspace .You can have one or more CDaoDatabase objects active at a time in a given "workspace," represented by a CDaoWorkspace object. El área de trabajo mantiene una colección de objetos de base de datos abiertos, denominada colección de bases de datos.The workspace maintains a collection of open database objects, called the Databases collection.

UsoUsage

Puede crear objetos de base de datos de forma implícita al crear objetos de conjunto de registros.You can create database objects implicitly, when you create recordset objects. Pero también puede crear objetos de base de datos explícitamente.But you can also create database objects explicitly. Para utilizar una base de datos existente explícitamente con CDaoDatabase , realice una de las siguientes acciones:To use an existing database explicitly with CDaoDatabase, do either of the following:

  • Construya un CDaoDatabase objeto, pasando un puntero a un objeto CDaoWorkspace abierto.Construct a CDaoDatabase object, passing a pointer to an open CDaoWorkspace object.

  • O construir un CDaoDatabase objeto sin especificar el área de trabajo (MFC crea un objeto temporal de área de trabajo).Or construct a CDaoDatabase object without specifying the workspace (MFC creates a temporary workspace object).

Para crear una nueva Microsoft Jet (. MDB), construya un CDaoDatabase objeto y llame a su función miembro Create .To create a new Microsoft Jet (.MDB) database, construct a CDaoDatabase object and call its Create member function. No llame a Open después de Create .Do not call Open after Create.

Para abrir una base de datos existente, construya un CDaoDatabase objeto y llame a su función miembro abierta .To open an existing database, construct a CDaoDatabase object and call its Open member function.

Cualquiera de estas técnicas anexa el objeto de base de datos DAO a la colección de bases de datos del área de trabajo y abre una conexión a los datos.Any of these techniques appends the DAO database object to the workspace's Databases collection and opens a connection to the data. Cuando se construyen objetos CDaoRecordset, CDaoTableDefo CDaoQueryDef para trabajar en la base de datos conectada, se pasan los constructores para estos objetos a un puntero al CDaoDatabase objeto.When you then construct CDaoRecordset, CDaoTableDef, or CDaoQueryDef objects for operating on the connected database, pass the constructors for these objects a pointer to your CDaoDatabase object. Cuando termine de usar la conexión, llame a la función miembro Close y destruya el CDaoDatabase objeto.When you finish using the connection, call the Close member function and destroy the CDaoDatabase object. Close cierra los conjuntos de registros que no se han cerrado previamente.Close closes any recordsets you have not closed previously.

TransaccionesTransactions

El procesamiento de transacciones de base de datos se proporciona en el nivel de área de trabajo; vea las funciones de miembro BeginTrans, CommitTrans y Rollback de la clase CDaoWorkspace.Database transaction processing is supplied at the workspace level — see the BeginTrans, CommitTrans, and Rollback member functions of class CDaoWorkspace.

Conexiones ODBCODBC Connections

La manera recomendada de trabajar con orígenes de datos ODBC es adjuntar tablas externas a Microsoft Jet (. MDB).The recommended way to work with ODBC data sources is to attach external tables to a Microsoft Jet (.MDB) database.

ColeccionesCollections

Cada base de datos mantiene sus propias colecciones de objetos tabledef, QueryDef, Recordset y Relation.Each database maintains its own collections of tabledef, querydef, recordset, and relation objects. La clase CDaoDatabase proporciona funciones miembro para manipular estos objetos.Class CDaoDatabase supplies member functions for manipulating these objects.

Nota

Los objetos se almacenan en DAO, no en el objeto de base de datos MFC.The objects are stored in DAO, not in the MFC database object. MFC proporciona clases para objetos tabledef, QueryDef y Recordset, pero no para objetos Relation.MFC supplies classes for tabledef, querydef, and recordset objects but not for relation objects.

Jerarquía de herenciaInheritance Hierarchy

CObjectCObject

CDaoDatabase

RequisitosRequirements

Encabezado: afxdao. hHeader: afxdao.h

CDaoDatabase:: CanTransactCDaoDatabase::CanTransact

Llame a esta función miembro para determinar si la base de datos permite transacciones.Call this member function to determine whether the database allows transactions.

BOOL CanTransact();

Valor devueltoReturn Value

Distinto de cero si la base de datos admite transacciones; de lo contrario, es 0.Nonzero if the database supports transactions; otherwise 0.

ObservacionesRemarks

Las transacciones se administran en el área de trabajo de la base de datos.Transactions are managed in the database's workspace.

CDaoDatabase:: CanUpdateCDaoDatabase::CanUpdate

Llame a esta función miembro para determinar si el CDaoDatabase objeto permite actualizaciones.Call this member function to determine whether the CDaoDatabase object allows updates.

BOOL CanUpdate();

Valor devueltoReturn Value

Es distinto de cero si el CDaoDatabase objeto permite actualizaciones; de lo contrario, es 0, lo que indica que se pasó true en bReadOnly al abrir el CDaoDatabase objeto o que la propia base de datos es de solo lectura.Nonzero if the CDaoDatabase object allows updates; otherwise 0, indicating either that you passed TRUE in bReadOnly when you opened the CDaoDatabase object or that the database itself is read-only. Vea la función miembro Open .See the Open member function.

ObservacionesRemarks

Para obtener información sobre la actualización de bases de datos, vea el tema "propiedad actualizable" en la ayuda de DAO.For information about database updatability, see the topic "Updatable Property" in DAO Help.

CDaoDatabase:: CDaoDatabaseCDaoDatabase::CDaoDatabase

Construye un objeto CDaoDatabase.Constructs a CDaoDatabase object.

CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);

ParámetrosParameters

pWorkspacepWorkspace
Un puntero al CDaoWorkspace objeto que contendrá el nuevo objeto de base de datos.A pointer to the CDaoWorkspace object that will contain the new database object. Si acepta el valor predeterminado de NULL, el constructor crea un objeto temporal CDaoWorkspace que usa el área de trabajo de DAO predeterminada.If you accept the default value of NULL, the constructor creates a temporary CDaoWorkspace object that uses the default DAO workspace. Puede obtener un puntero al objeto de área de trabajo a través del miembro de datos m_pWorkspace .You can get a pointer to the workspace object via the m_pWorkspace data member.

ObservacionesRemarks

Después de construir el objeto, si está creando un nuevo Microsoft Jet (. MDB), llame a la función miembro Create del objeto.After constructing the object, if you are creating a new Microsoft Jet (.MDB) database, call the object's Create member function. Si, en su lugar, abre una base de datos existente, llame a la función miembro abierta del objeto.If you are, instead, opening an existing database, call the object's Open member function.

Cuando termine con el objeto, debe llamar a la función miembro Close y, a continuación, destruir el CDaoDatabase objeto.When you finish with the object, you should call its Close member function and then destroy the CDaoDatabase object.

Puede que le resulte conveniente insertar el CDaoDatabase objeto en la clase de documento.You might find it convenient to embed the CDaoDatabase object in your document class.

Nota

Un CDaoDatabase objeto también se crea implícitamente si se abre un objeto CDaoRecordset sin pasar un puntero a un CDaoDatabase objeto existente.A CDaoDatabase object is also created implicitly if you open a CDaoRecordset object without passing a pointer to an existing CDaoDatabase object. Este objeto de base de datos se cierra al cerrar el objeto de conjunto de registros.This database object is closed when you close the recordset object.

CDaoDatabase:: CloseCDaoDatabase::Close

Llame a esta función miembro para desconectarse de una base de datos y cerrar los conjuntos de registros abiertos, las definiciones de conjunto y las definiciones de base asociadas a la base de datos.Call this member function to disconnect from a database and close any open recordsets, tabledefs, and querydefs associated with the database.

virtual void Close();

ObservacionesRemarks

Es recomendable cerrar estos objetos antes de llamar a esta función miembro.It is good practice to close these objects yourself before you call this member function. Al cerrar un CDaoDatabase objeto se quita de la colección de bases de datos en el área de trabajoasociada.Closing a CDaoDatabase object removes it from the Databases collection in the associated workspace. Dado Close que no destruye el CDaoDatabase objeto, puede volver a usar el objeto abriendo la misma base de datos o una base de datos diferente.Because Close does not destroy the CDaoDatabase object, you can reuse the object by opening the same database or a different database.

Precaución

Llame a la función miembro Update (si hay ediciones pendientes) y a la Close función miembro en todos los objetos de conjunto de registros abiertos antes de cerrar una base de datos.Call the Update member function (if there are pending edits) and the Close member function on all open recordset objects before you close a database. Si sale de una función que declara objetos CDaoRecordset o CDaoDatabase en la pila, la base de datos está cerrada, se pierden los cambios no guardados, se revierten todas las transacciones pendientes y se pierden las modificaciones pendientes en los datos.If you exit a function that declares CDaoRecordset or CDaoDatabase objects on the stack, the database is closed, any unsaved changes are lost, all pending transactions are rolled back, and any pending edits to your data are lost.

Precaución

Si intenta cerrar un objeto de base de datos mientras hay objetos de conjunto de registros abiertos, o si intenta cerrar un objeto de área de trabajo mientras los objetos de base de datos que pertenecen a ese área de trabajo específica están abiertos, se cerrarán esos objetos de conjunto de registros y se revertirán todas las actualizaciones o ediciones pendientes.If you try to close a database object while any recordset objects are open, or if you try to close a workspace object while any database objects belonging to that specific workspace are open, those recordset objects will be closed and any pending updates or edits will be rolled back. Si intenta cerrar un objeto de área de trabajo mientras los objetos de base de datos que pertenecen a él están abiertos, la operación cierra todos los objetos de base de datos que pertenecen a ese objeto de área de trabajo específico, lo que puede dar lugar a que se cierren objetos de conjunto de registros sin cerrar.If you try to close a workspace object while any database objects belonging to it are open, the operation closes all database objects belonging to that specific workspace object, which may result in unclosed recordset objects being closed. Si no cierra el objeto de base de datos, MFC informa de un error de aserción en las compilaciones de depuración.If you do not close your database object, MFC reports an assertion failure in debug builds.

Si el objeto de base de datos se define fuera del ámbito de una función y sale de la función sin cerrarla, el objeto de base de datos permanecerá abierto hasta que se cierre explícitamente o hasta que el módulo en el que se define esté fuera del ámbito.If the database object is defined outside the scope of a function, and you exit the function without closing it, the database object will remain open until explicitly closed or the module in which it is defined is out of scope.

CDaoDatabase:: CreateCDaoDatabase::Create

Para crear una nueva Microsoft Jet (. MDB), llame a esta función miembro después de construir un CDaoDatabase objeto.To create a new Microsoft Jet (.MDB) database, call this member function after you construct a CDaoDatabase object.

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int dwOptions = 0);

ParámetrosParameters

lpszNamelpszName
Expresión de cadena que es el nombre del archivo de base de datos que se va a crear.A string expression that is the name of the database file that you are creating. Puede ser la ruta de acceso completa y el nombre de archivo, como "C: \ \MYDB. MDB ".It can be the full path and filename, such as "C:\\MYDB.MDB". Debe proporcionar un nombre.You must supply a name. Si no proporciona una extensión de nombre de archivo,. Se anexa la MDB.If you do not supply a filename extension, .MDB is appended. Si la red es compatible con la Convención de nomenclatura universal (UNC), también puede especificar una ruta de acceso de red, como " \ \ \ \MYSERVER \ \MYSHARE \ \MYDIR \ \MYDB".If your network supports the uniform naming convention (UNC), you can also specify a network path, such as "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB". Solo Microsoft Jet (. MDB) para crear archivos de base de datos mediante esta función miembro.Only Microsoft Jet (.MDB) database files can be created using this member function. (Se requieren barras diagonales inversas dobles en los literales de cadena porque " \ " es el carácter de escape de C++).(Double backslashes are required in string literals because "\" is the C++ escape character.)

lpszLocalelpszLocale
Expresión de cadena que se usa para especificar el orden de intercalación para crear la base de datos.A string expression used to specify collating order for creating the database. El valor predeterminado es dbLangGeneral.The default value is dbLangGeneral. Los valores posibles son:Possible values are:

  • dbLangGeneral Inglés, alemán, Francés, Portugués, Italiano y español modernodbLangGeneral English, German, French, Portuguese, Italian, and Modern Spanish

  • dbLangArabic ÁrabedbLangArabic Arabic

  • dbLangCyrillic RusodbLangCyrillic Russian

  • dbLangCzech ChecodbLangCzech Czech

  • dbLangDutch HolandésdbLangDutch Dutch

  • dbLangGreek GriegodbLangGreek Greek

  • dbLangHebrew HebreodbLangHebrew Hebrew

  • dbLangHungarian HúngarodbLangHungarian Hungarian

  • dbLangIcelandic IslandésdbLangIcelandic Icelandic

  • dbLangNordic Idiomas nórdicos (solo la versión 1,0 del motor de base de datos de Microsoft Jet)dbLangNordic Nordic languages (Microsoft Jet database engine version 1.0 only)

  • dbLangNorwdan Noruego y danésdbLangNorwdan Norwegian and Danish

  • dbLangPolish PolacodbLangPolish Polish

  • dbLangSpanish Español tradicionaldbLangSpanish Traditional Spanish

  • dbLangSwedfin Sueco y FinésdbLangSwedfin Swedish and Finnish

  • dbLangTurkish TurcodbLangTurkish Turkish

dwOptionsdwOptions
Entero que indica una o más opciones.An integer that indicates one or more options. Los valores posibles son:Possible values are:

  • dbEncrypt Cree una base de datos cifrada.dbEncrypt Create an encrypted database.

  • dbVersion10 Cree una base de datos con la versión 1,0 de la base de datos Microsoft Jet.dbVersion10 Create a database with Microsoft Jet database version 1.0.

  • dbVersion11 Cree una base de datos con la versión 1,1 de la base de datos Microsoft Jet.dbVersion11 Create a database with Microsoft Jet database version 1.1.

  • dbVersion20 Cree una base de datos con la versión 2,0 de la base de datos Microsoft Jet.dbVersion20 Create a database with Microsoft Jet database version 2.0.

  • dbVersion30 Cree una base de datos con la versión 3,0 de la base de datos Microsoft Jet.dbVersion30 Create a database with Microsoft Jet database version 3.0.

Si omite la constante de cifrado, se crea una base de datos sin cifrar.If you omit the encryption constant, an unencrypted database is created. Solo puede especificar una constante de versión.You can specify only one version constant. Si omite una constante de versión, se crea una base de datos que usa la versión 3,0 de la base de datos Microsoft Jet.If you omit a version constant, a database that uses the Microsoft Jet database version 3.0 is created.

Precaución

Si una base de datos no está cifrada, es posible, incluso si implementa la seguridad de usuario/contraseña, para leer directamente el archivo de disco binario que constituye la base de datos.If a database is not encrypted, it is possible, even if you implement user/password security, to directly read the binary disk file that constitutes the database.

ObservacionesRemarks

Create crea el archivo de base de datos y el objeto de base de datos DAO subyacente e inicializa el objeto de C++.Create creates the database file and the underlying DAO database object and initializes the C++ object. El objeto se anexa a la colección de bases de datos del área de trabajo asociada.The object is appended to the associated workspace's Databases collection. El objeto de base de datos está en un estado abierto; no llame a Open* después de Create .The database object is in an open state; do not call Open* after Create.

Nota

Con Create , solo puede crear Microsoft Jet (. MDB).With Create, you can create only Microsoft Jet (.MDB) databases. No se pueden crear bases de datos ISAM o bases de datos ODBC.You cannot create ISAM databases or ODBC databases.

CDaoDatabase:: CreateRelationCDaoDatabase::CreateRelation

Llame a esta función miembro para establecer una relación entre uno o varios campos de una tabla principal de la base de datos y uno o más campos de una tabla externa (otra tabla de la base de datos).Call this member function to establish a relation between one or more fields in a primary table in the database and one or more fields in a foreign table (another table in the database).

void CreateRelation(
    LPCTSTR lpszName,
    LPCTSTR lpszTable,
    LPCTSTR lpszForeignTable,
    long lAttributes,
    LPCTSTR lpszField,
    LPCTSTR lpszForeignField);

void CreateRelation(CDaoRelationInfo& relinfo);

ParámetrosParameters

lpszNamelpszName
Nombre único del objeto de relación.The unique name of the relation object. El nombre debe empezar por una letra y puede contener un máximo de 40 caracteres.The name must start with a letter and can contain a maximum of 40 characters. Puede incluir números y caracteres de subrayado, pero no puede incluir signos de puntuación ni espacios.It can include numbers and underscore characters but cannot include punctuation or spaces.

lpszTablelpszTable
Nombre de la tabla principal de la relación.The name of the primary table in the relation. Si la tabla no existe, MFC produce una excepción de tipo CDaoException.If the table does not exist, MFC throws an exception of type CDaoException.

lpszForeignTablelpszForeignTable
Nombre de la tabla externa de la relación.The name of the foreign table in the relation. Si la tabla no existe, MFC produce una excepción de tipo CDaoException .If the table does not exist, MFC throws an exception of type CDaoException.

lAttributeslAttributes
Valor Long que contiene información sobre el tipo de relación.A long value that contains information about the relationship type. Puede usar este valor para exigir la integridad referencial, entre otras cosas.You can use this value to enforce referential integrity, among other things. Puede usar el operador OR bit a bit ( |) para combinar cualquiera de los valores siguientes (siempre y cuando la combinación tenga sentido):You can use the bitwise-OR operator ( |) to combine any of the following values (as long as the combination makes sense):

  • dbRelationUnique La relación es de uno a uno.dbRelationUnique Relationship is one-to-one.

  • dbRelationDontEnforce No se aplica la relación (ninguna integridad referencial).dbRelationDontEnforce Relationship is not enforced (no referential integrity).

  • dbRelationInherited La relación existe en una base de datos no actual que contiene las dos tablas asociadas.dbRelationInherited Relationship exists in a noncurrent database that contains the two attached tables.

  • dbRelationUpdateCascade Las actualizaciones se realizarán en cascada (para obtener más información sobre las cascadas, vea la sección comentarios).dbRelationUpdateCascade Updates will cascade (for more on cascades, see Remarks).

  • dbRelationDeleteCascade Las eliminaciones se aplicarán en cascada.dbRelationDeleteCascade Deletions will cascade.

lpszFieldlpszField
Un puntero a una cadena terminada en null que contiene el nombre de un campo en la tabla principal (denominado por lpszTable).A pointer to a null-terminated string containing the name of a field in the primary table (named by lpszTable).

lpszForeignFieldlpszForeignField
Un puntero a una cadena terminada en null que contiene el nombre de un campo de la tabla externa (denominado por lpszForeignTable).A pointer to a null-terminated string containing the name of a field in the foreign table (named by lpszForeignTable).

relinforelinfo
Referencia a un objeto cdaorelationinfo ( que contiene información sobre la relación que se va a crear.A reference to a CDaoRelationInfo object that contains information about the relation you want to create.

ObservacionesRemarks

La relación no puede implicar una consulta o una tabla adjunta de una base de datos externa.The relationship cannot involve a query or an attached table from an external database.

Use la primera versión de la función cuando la relación implique un campo en cada una de las dos tablas.Use the first version of the function when the relation involves one field in each of the two tables. Use la segunda versión cuando la relación implique varios campos.Use the second version when the relation involves multiple fields. El número máximo de campos de una relación es 14.The maximum number of fields in a relation is 14.

Esta acción crea un objeto de relación DAO subyacente, pero se trata de un detalle de implementación de MFC, ya que la encapsulación de objetos de relación de MFC está incluida en la clase CDaoDatabase .This action creates an underlying DAO relation object, but this is an MFC implementation detail since MFC's encapsulation of relation objects is contained within class CDaoDatabase. MFC no proporciona una clase para las relaciones.MFC does not supply a class for relations.

Si establece los atributos del objeto de relación para activar las operaciones en cascada, el motor de base de datos actualiza o elimina automáticamente los registros de una o varias tablas cuando se realizan cambios en las tablas de clave principal relacionadas.If you set the relation object's attributes to activate cascade operations, the database engine automatically updates or deletes records in one or more other tables when changes are made to related primary key tables.

Por ejemplo, supongamos que establece una relación de eliminación en cascada entre una tabla de clientes y una tabla de pedidos.For example, suppose you establish a cascade delete relationship between a Customers table and an Orders table. Cuando se eliminan registros de la tabla Customers, también se eliminan los registros de la tabla Orders relacionados con ese cliente.When you delete records from the Customers table, records in the Orders table related to that customer are also deleted. Además, si establece relaciones de eliminación en cascada entre la tabla Orders y otras tablas, los registros de esas tablas se eliminarán automáticamente al eliminar los registros de la tabla customers.In addition, if you establish cascade delete relationships between the Orders table and other tables, records from those tables are automatically deleted when you delete records from the Customers table.

Para obtener información relacionada, vea el tema sobre el método CreateRelation en la ayuda de DAO.For related information, see the topic "CreateRelation Method" in DAO Help.

CDaoDatabase::D eleteQueryDefCDaoDatabase::DeleteQueryDef

Llame a esta función miembro para eliminar la definición de usuario (consulta guardada) especificada de la CDaoDatabase colección QueryDefs del objeto.Call this member function to delete the specified querydef — saved query — from the CDaoDatabase object's QueryDefs collection.

void DeleteQueryDef(LPCTSTR lpszName);

ParámetrosParameters

lpszNamelpszName
Nombre de la consulta guardada que se va a eliminar.The name of the saved query to delete.

ObservacionesRemarks

Después, esa consulta ya no se define en la base de datos.Afterwards, that query is no longer defined in the database.

Para obtener información sobre cómo crear objetos QueryDef, vea la clase CDaoQueryDef.For information about creating querydef objects, see class CDaoQueryDef. Un objeto QueryDef se asocia a un CDaoDatabase objeto determinado cuando se construye el CDaoQueryDef objeto, pasándole un puntero al objeto de base de datos.A querydef object becomes associated with a particular CDaoDatabase object when you construct the CDaoQueryDef object, passing it a pointer to the database object.

CDaoDatabase::D eleteRelationCDaoDatabase::DeleteRelation

Llame a esta función miembro para eliminar una relación existente de la colección de relaciones del objeto de base de datos.Call this member function to delete an existing relation from the database object's Relations collection.

void DeleteRelation(LPCTSTR lpszName);

ParámetrosParameters

lpszNamelpszName
Nombre de la relación que se va a eliminar.The name of the relation to delete.

ObservacionesRemarks

Posteriormente, la relación ya no existe.Afterwards, the relation no longer exists.

Para obtener información relacionada, vea el tema "eliminar método" en la ayuda de DAO.For related information, see the topic "Delete Method" in DAO Help.

CDaoDatabase::D eleteTableDefCDaoDatabase::DeleteTableDef

Llame a esta función miembro para eliminar la tabla especificada y todos sus datos de la CDaoDatabase colección TableDefs del objeto.Call this member function to delete the specified table and all of its data from the CDaoDatabase object's TableDefs collection.

void DeleteTableDef(LPCTSTR lpszName);

ParámetrosParameters

lpszNamelpszName
Nombre del TableDef que se va a eliminar.The name of the tabledef to delete.

ObservacionesRemarks

Después, esa tabla ya no se define en la base de datos.Afterwards, that table is no longer defined in the database.

Nota

Tenga mucho cuidado de no eliminar las tablas del sistema.Be very careful not to delete system tables.

Para obtener información sobre cómo crear objetos tabledef, vea la clase CDaoTableDef.For information about creating tabledef objects, see class CDaoTableDef. Un objeto TableDef se asocia a un CDaoDatabase objeto determinado cuando se construye el CDaoTableDef objeto, pasándole un puntero al objeto de base de datos.A tabledef object becomes associated with a particular CDaoDatabase object when you construct the CDaoTableDef object, passing it a pointer to the database object.

Para obtener información relacionada, vea el tema "eliminar método" en la ayuda de DAO.For related information, see the topic "Delete Method" in DAO Help.

CDaoDatabase:: ExecuteCDaoDatabase::Execute

Llame a esta función miembro para ejecutar una consulta de acción o ejecutar una instrucción SQL en la base de datos.Call this member function to run an action query or execute a SQL statement on the database.

void Execute(
    LPCTSTR lpszSQL,
    int nOptions = dbFailOnError);

ParámetrosParameters

lpszSQLlpszSQL
Puntero a una cadena terminada en null que contiene un comando SQL válido que se va a ejecutar.Pointer to a null-terminated string containing a valid SQL command to execute.

nOptionsnOptions
Un entero que especifica las opciones relacionadas con la integridad de la consulta.An integer that specifies options relating to the integrity of the query. Puede usar el operador OR bit a bit ( |) para combinar cualquiera de las siguientes constantes (siempre y cuando la combinación tenga sentido; por ejemplo, no se combinaría dbInconsistent con dbConsistent ):You can use the bitwise-OR operator ( |) to combine any of the following constants (provided the combination makes sense — for example, you would not combine dbInconsistent with dbConsistent):

  • dbDenyWrite Denegar el permiso de escritura a otros usuarios.dbDenyWrite Deny write permission to other users.

  • dbInconsistent Predeterminada Actualizaciones incoherentes.dbInconsistent (Default) Inconsistent updates.

  • dbConsistent Actualizaciones coherentes.dbConsistent Consistent updates.

  • dbSQLPassThrough Paso a través de SQL.dbSQLPassThrough SQL pass-through. Hace que la instrucción SQL se pase a un origen de datos ODBC para su procesamiento.Causes the SQL statement to be passed to an ODBC data source for processing.

  • dbFailOnError Revertir las actualizaciones si se produce un error.dbFailOnError Roll back updates if an error occurs.

  • dbSeeChanges Generar un error en tiempo de ejecución si otro usuario está cambiando los datos que está editando.dbSeeChanges Generate a run-time error if another user is changing data you are editing.

Nota

Si se dbInconsistent dbConsistent incluyen y, o si no se incluye ninguno, el resultado es el valor predeterminado.If both dbInconsistent and dbConsistent are included or if neither is included, the result is the default. Para obtener una explicación de estas constantes, vea el tema "Execute Method" en la ayuda de DAO.For an explanation of these constants, see the topic "Execute Method" in DAO Help.

ObservacionesRemarks

Execute solo funciona con consultas de acción o consultas de paso a través de SQL que no devuelven resultados.Execute works only for action queries or SQL pass-through queries that do not return results. No funciona para las consultas select, que devuelven registros.It does not work for select queries, which return records.

Para obtener una definición e información acerca de las consultas de acción, vea los temas "consulta de acción" y "ejecutar método" en la ayuda de DAO.For a definition and information about action queries, see the topics "Action Query" and "Execute Method" in DAO Help.

Sugerencia

Dada una instrucción SQL sintácticamente correcta y los permisos adecuados, Execute no se producirá un error en la función miembro aunque no se pueda modificar o eliminar una sola fila.Given a syntactically correct SQL statement and proper permissions, the Execute member function will not fail even if not a single row can be modified or deleted. Por lo tanto, use siempre la dbFailOnError opción al usar la Execute función miembro para ejecutar una consulta Update o DELETE.Therefore, always use the dbFailOnError option when using the Execute member function to run an update or delete query. Esta opción hace que MFC inicie una excepción de tipo CDaoException y revierta todos los cambios realizados correctamente si alguno de los registros afectados está bloqueado y no se puede actualizar o eliminar.This option causes MFC to throw an exception of type CDaoException and rolls back all successful changes if any of the records affected are locked and cannot be updated or deleted. Tenga en cuenta que siempre se puede llamar GetRecordsAffected a para ver cuántos registros se vieron afectados.Note that you can always call GetRecordsAffected to see how many records were affected.

Llame a la función miembro GetRecordsAffected del objeto de base de datos para determinar el número de registros afectados por la llamada más reciente Execute .Call the GetRecordsAffected member function of the database object to determine the number of records affected by the most recent Execute call. Por ejemplo, GetRecordsAffected devuelve información sobre el número de registros eliminados, actualizados o insertados al ejecutar una consulta de acción.For example, GetRecordsAffected returns information about the number of records deleted, updated, or inserted when executing an action query. El recuento devuelto no reflejará los cambios en las tablas relacionadas cuando las actualizaciones o eliminaciones en cascada estén en vigor.The count returned will not reflect changes in related tables when cascade updates or deletes are in effect.

Execute no devuelve un conjunto de registros.Execute does not return a recordset. ExecuteEl uso de en una consulta que selecciona registros hace que MFC produzca una excepción de tipo CDaoException .Using Execute on a query that selects records causes MFC to throw an exception of type CDaoException. (No hay ninguna ExecuteSQL función miembro análoga a CDatabase::ExecuteSQL ).(There is no ExecuteSQL member function analogous to CDatabase::ExecuteSQL.)

CDaoDatabase:: GetConnectCDaoDatabase::GetConnect

Llame a esta función miembro para recuperar la cadena de conexión que se usa para conectar el CDaoDatabase objeto a una base de datos de ODBC o ISAM.Call this member function to retrieve the connection string used to connect the CDaoDatabase object to an ODBC or ISAM database.

CString GetConnect();

Valor devueltoReturn Value

La cadena de conexión si se ha llamado correctamente a Open en un origen de datos ODBC. de lo contrario, una cadena vacía.The connection string if Open has been called successfully on an ODBC data source; otherwise, an empty string. Para un Microsoft Jet (. MDB), la cadena siempre está vacía, a menos que se establezca para su uso con la dbSQLPassThrough opción usada con la función miembro Execute o que se usa para abrir un conjunto de registros.For a Microsoft Jet (.MDB) database, the string is always empty unless you set it for use with the dbSQLPassThrough option used with the Execute member function or used in opening a recordset.

ObservacionesRemarks

La cadena proporciona información acerca del origen de una base de datos abierta o de una base de datos utilizada en una consulta de paso a través.The string provides information about the source of an open database or a database used in a pass-through query. La cadena de conexión se compone de un especificador de tipo de base de datos y cero o más parámetros separados por punto y coma.The connection string is composed of a database type specifier and zero or more parameters separated by semicolons.

Nota

El uso de las clases DAO de MFC para conectarse a un origen de datos a través de ODBC es menos eficaz que la conexión a través de una tabla adjunta.Using the MFC DAO classes to connect to a data source via ODBC is less efficient than connecting via an attached table.

Nota

La cadena de conexión se usa para pasar información adicional a ODBC y ciertos controladores ISAM según sea necesario.The connection string is used to pass additional information to ODBC and certain ISAM drivers as needed. No se utiliza para. Bases de datos MDB.It is not used for .MDB databases. En el caso de las tablas base de base de datos de Microsoft Jet, la cadena de conexión es una cadena vacía (""), excepto cuando se usa para una consulta de paso a través de SQL, tal y como se describe en valor devuelto anterior.For Microsoft Jet database base tables, the connection string is an empty string ("") except when you use it for a SQL pass-through query as described under Return Value above.

Vea la función miembro Open para obtener una descripción de cómo se crea la cadena de conexión.See the Open member function for a description of how the connection string is created. Una vez que se ha establecido la cadena de conexión en la Open llamada, puede usarla más adelante para comprobar la configuración para determinar el tipo, la ruta de acceso, el ID. de usuario, la contraseña o el origen de datos ODBC de la base de datos.Once the connection string has been set in the Open call, you can later use it to check the setting to determine the type, path, user ID, Password, or ODBC data source of the database.

CDaoDatabase:: GetNameCDaoDatabase::GetName

Llame a esta función miembro para recuperar el nombre de la base de datos abierta actualmente, que es el nombre de un archivo de base de datos existente o el nombre de un origen de datos ODBC registrado.Call this member function to retrieve the name of the currently open database, which is the name of an existing database file or the name of a registered ODBC data source.

CString GetName();

Valor devueltoReturn Value

La ruta de acceso completa y el nombre de archivo de la base de datos si se realiza correctamente; de lo contrario, un CStringvacío.The full path and file name of the database if successful; otherwise, an empty CString.

ObservacionesRemarks

Si la red es compatible con la Convención de nomenclatura universal (UNC), también puede especificar una ruta de acceso de red, por ejemplo, " \ \ \ \MYSERVER \ \MYSHARE \ \MYDIR \ \MYDB. MDB ".If your network supports the uniform naming convention (UNC), you can also specify a network path—for example, "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB.MDB". (Se requieren barras diagonales inversas dobles en los literales de cadena porque " \ " es el carácter de escape de C++).(Double backslashes are required in string literals because "\" is the C++ escape character.)

Por ejemplo, puede que desee mostrar este nombre en un encabezado.You might, for example, want to display this name in a heading. Si se produce un error mientras se recupera el nombre, MFC produce una excepción de tipo CDaoException.If an error occurs while the name is being retrieved, MFC throws an exception of type CDaoException.

Nota

Para obtener un mejor rendimiento cuando se tiene acceso a las bases de datos externas, se recomienda adjuntar tablas de bases de datos externas a una base de datos de Microsoft Jet (. MDB) en lugar de conectarse directamente al origen de datos.For better performance when external databases are being accessed, we recommend that you attach external database tables to a Microsoft Jet database (.MDB) rather than connecting directly to the data source.

El tipo de base de datos se indica mediante el archivo o directorio al que apunta la ruta de acceso, como se indica a continuación:The database type is indicated by the file or directory that the path points to, as follows:

El directorio apunta a..Pathname points to.. Tipo de base de datosDatabase type
. Archivo MDB.MDB file Base de datos de Microsoft Jet (Microsoft Access)Microsoft Jet database (Microsoft Access)
Directorio que contiene. Archivos DBFDirectory that contains .DBF file(s) base de datos dBASEdBASE database
Directorio que contiene. Archivo XLSDirectory that contains .XLS file Base de datos de Microsoft ExcelMicrosoft Excel database
Directorio que contiene. Archivos PDXDirectory that contains .PDX file(s) Base de datos de ParadoxParadox database
Directorio que contiene archivos de base de datos de texto con el formato adecuadoDirectory that contains appropriately formatted text database files Base de datos de formato de textoText format database

En el caso de las bases de datos ODBC como SQL Server y Oracle, la cadena de conexión de la base de datos identifica un nombre del origen de datos (DSN) registrado por ODBC.For ODBC databases such as SQL Server and Oracle, the database's connection string identifies a data source name (DSN) that's registered by ODBC.

CDaoDatabase:: GetQueryDefCountCDaoDatabase::GetQueryDefCount

Llame a esta función miembro para recuperar el número de consultas definidas en la colección QueryDefs de la base de datos.Call this member function to retrieve the number of queries defined in the database's QueryDefs collection.

short GetQueryDefCount();

Valor devueltoReturn Value

El número de consultas definidas en la base de datos.The number of queries defined in the database.

ObservacionesRemarks

GetQueryDefCount resulta útil si necesita recorrer todas las definiciones de la colección QueryDefs.GetQueryDefCount is useful if you need to loop through all querydefs in the QueryDefs collection. Para obtener información acerca de una consulta determinada en la colección, vea GetQueryDefInfo.To obtain information about a given query in the collection, see GetQueryDefInfo.

CDaoDatabase:: GetQueryDefInfoCDaoDatabase::GetQueryDefInfo

Llame a esta función miembro para obtener varios tipos de información sobre una consulta definida en la base de datos.Call this member function to obtain various kinds of information about a query defined in the database.

void GetQueryDefInfo(
    int nIndex,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetQueryDefInfo(
    LPCTSTR lpszName,
    CDaoQueryDefInfo& querydefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

ParámetrosParameters

nIndexnIndex
Índice de la consulta predefinida en la colección QueryDefs de la base de datos, para la búsqueda por índice.The index of the predefined query in the database's QueryDefs collection, for lookup by index.

querydefinfoquerydefinfo
Referencia a un objeto cdaoquerydefinfo ( que devuelve la información solicitada.A reference to a CDaoQueryDefInfo object that returns the information requested.

dwInfoOptionsdwInfoOptions
Opciones que especifican la información sobre el conjunto de registros que se va a recuperar.Options that specify which information about the recordset to retrieve. Aquí se enumeran las opciones disponibles junto con lo que hacen que la función devuelva información sobre el conjunto de registros:The available options are listed here along with what they cause the function to return about the recordset:

  • AFX_DAO_PRIMARY_INFO (valor predeterminado), escribaAFX_DAO_PRIMARY_INFO (Default) Name, Type

  • AFX_DAO_SECONDARY_INFO información principal más: fecha de creación, fecha de la última actualización, devuelve registros, actualizableAFX_DAO_SECONDARY_INFO Primary information plus: Date Created, Date of Last Update, Returns Records, Updatable

  • AFX_DAO_ALL_INFO información principal y secundaria más: SQL, Connect, ODBCTimeoutAFX_DAO_ALL_INFO Primary and secondary information plus: SQL, Connect, ODBCTimeout

lpszNamelpszName
Cadena que contiene el nombre de una consulta definida en la base de datos, para la búsqueda por nombre.A string containing the name of a query defined in the database, for lookup by name.

ObservacionesRemarks

Se proporcionan dos versiones de la función para que pueda seleccionar una consulta por índice en la colección QueryDefs de la base de datos o por el nombre de la consulta.Two versions of the function are supplied so you can select a query either by index in the database's QueryDefs collection or by the name of the query.

Para obtener una descripción de la información que se devuelve en querydefinfo, consulte la estructura cdaoquerydefinfo ( .For a description of the information returned in querydefinfo, see the CDaoQueryDefInfo structure. Esta estructura tiene miembros que corresponden a los elementos de la información enumerados anteriormente en la descripción de dwInfoOptions.This structure has members that correspond to the items of information listed above in the description of dwInfoOptions. Si solicita un nivel de información, también obtendrá cualquier nivel de información anterior.If you request one level of information, you get any prior levels of information as well.

CDaoDatabase:: GetQueryTimeoutCDaoDatabase::GetQueryTimeout

Llame a esta función miembro para recuperar el número actual de segundos que se permiten antes de que se agote el tiempo de espera de las operaciones posteriores en la base de datos conectada.Call this member function to retrieve the current number of seconds to allow before subsequent operations on the connected database are timed out.

short GetQueryTimeout();

Valor devueltoReturn Value

Entero corto que contiene el valor de tiempo de espera en segundos.A short integer containing the timeout value in seconds.

ObservacionesRemarks

Una operación puede agotar el tiempo de espera debido a problemas de acceso a la red, un tiempo de procesamiento excesivo de consultas, etc.An operation might time out due to network access problems, excessive query processing time, and so on. Aunque la configuración está en vigor, afecta a todas las operaciones de apertura, adición, actualización y eliminación en cualquier conjunto de registros asociado a este CDaoDatabase objeto.While the setting is in effect, it affects all open, add new, update, and delete operations on any recordsets associated with this CDaoDatabase object. Puede cambiar la configuración de tiempo de espera actual llamando a SetQueryTimeout.You can change the current timeout setting by calling SetQueryTimeout. Cambiar el valor de tiempo de espera de consulta para un conjunto de registros después de abrir no cambia el valor del conjunto de registros.Changing the query timeout value for a recordset after opening does not change the value for the recordset. Por ejemplo, las operaciones de movimiento posteriores no usan el nuevo valor.For example, subsequent Move operations do not use the new value. El valor predeterminado se establece inicialmente cuando se inicializa el motor de base de datos.The default value is initially set when the database engine is initialized.

El valor predeterminado de los tiempos de espera de consulta se toma del registro de Windows.The default value for query timeouts is taken from the Windows registry. Si no hay ninguna configuración del registro, el valor predeterminado es 60 segundos.If there is no registry setting, the default is 60 seconds. No todas las bases de datos admiten la capacidad de establecer un valor de tiempo de espera de consulta.Not all databases support the ability to set a query timeout value. Si establece un valor de tiempo de espera de consulta de 0, no se produce ningún tiempo de espera. y la comunicación con la base de datos puede dejar de responder.If you set a query timeout value of 0, no timeout occurs; and communication with the database may stop responding. Este comportamiento puede ser útil durante el desarrollo.This behavior may be useful during development. Si se produce un error en la llamada, MFC produce una excepción de tipo CDaoException.If the call fails, MFC throws an exception of type CDaoException.

Para obtener información relacionada, vea el tema "propiedad QueryTimeout" en la ayuda de DAO.For related information, see the topic "QueryTimeout Property" in DAO Help.

CDaoDatabase:: GetRecordsAffectedCDaoDatabase::GetRecordsAffected

Llame a esta función miembro para determinar el número de registros afectados por la llamada más reciente de la función miembro Execute .Call this member function to determine the number of records affected by the most recent call of the Execute member function.

long GetRecordsAffected();

Valor devueltoReturn Value

Entero largo que contiene el número de registros afectados.A long integer containing the number of records affected.

ObservacionesRemarks

El valor devuelto incluye el número de registros eliminados, actualizados o insertados por una consulta de acción ejecutada con Execute .The value returned includes the number of records deleted, updated, or inserted by an action query run with Execute. El recuento devuelto no reflejará los cambios en las tablas relacionadas cuando las actualizaciones o eliminaciones en cascada estén en vigor.The count returned will not reflect changes in related tables when cascade updates or deletes are in effect.

Para obtener información relacionada, vea el tema "propiedad RecordsAffected" en la ayuda de DAO.For related information, see the topic "RecordsAffected Property" in DAO Help.

CDaoDatabase:: GetRelationCountCDaoDatabase::GetRelationCount

Llame a esta función miembro para obtener el número de relaciones definidas entre las tablas de la base de datos.Call this member function to obtain the number of relations defined between tables in the database.

short GetRelationCount();

Valor devueltoReturn Value

El número de relaciones definidas entre tablas en la base de datos.The number of relations defined between tables in the database.

ObservacionesRemarks

GetRelationCount resulta útil si necesita recorrer todas las relaciones definidas en la colección de relaciones de la base de datos.GetRelationCount is useful if you need to loop through all defined relations in the database's Relations collection. Para obtener información sobre una relación determinada en la colección, vea GetRelationInfo.To obtain information about a given relation in the collection, see GetRelationInfo.

Para ilustrar el concepto de una relación, considere la posibilidad de una tabla Suppliers y una tabla Products, que podría tener una relación de uno a varios.To illustrate the concept of a relation, consider a Suppliers table and a Products table, which might have a one-to-many relationship. En esta relación, un proveedor puede proporcionar más de un producto.In this relationship, one supplier can supply more than one product. Otras relaciones son uno a uno y varios a varios.Other relations are one-to-one and many-to-many.

CDaoDatabase:: GetRelationInfoCDaoDatabase::GetRelationInfo

Llame a esta función miembro para obtener información sobre una relación especificada en la colección de relaciones de la base de datos.Call this member function to obtain information about a specified relation in the database's Relations collection.

void GetRelationInfo(
    int nIndex,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetRelationInfo(
    LPCTSTR lpszName,
    CDaoRelationInfo& relinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

ParámetrosParameters

nIndexnIndex
Índice del objeto de relación de la colección de relaciones de la base de datos, para la búsqueda por índice.The index of the relation object in the database's Relations collection, for lookup by index.

relinforelinfo
Referencia a un objeto cdaorelationinfo ( que devuelve la información solicitada.A reference to a CDaoRelationInfo object that returns the information requested.

dwInfoOptionsdwInfoOptions
Opciones que especifican la información sobre la relación que se va a recuperar.Options that specify which information about the relation to retrieve. Aquí se enumeran las opciones disponibles junto con lo que hacen que la función devuelva sobre la relación:The available options are listed here along with what they cause the function to return about the relation:

  • AFX_DAO_PRIMARY_INFO (valor predeterminado) nombre, tabla, tabla externaAFX_DAO_PRIMARY_INFO (Default) Name, Table, Foreign Table

  • Atributos de AFX_DAO_SECONDARY_INFO, información de campoAFX_DAO_SECONDARY_INFO Attributes, Field Information

La información del campo es un objeto cdaorelationfieldinfo ( que contiene los campos de la tabla principal implicada en la relación.The Field Information is a CDaoRelationFieldInfo object containing the fields from the primary table involved in the relation.

lpszNamelpszName
Cadena que contiene el nombre del objeto de relación, para la búsqueda por nombre.A string containing the name of the relation object, for lookup by name.

ObservacionesRemarks

Dos versiones de esta función proporcionan acceso por índice o por nombre.Two versions of this function provide access either by index or by name. Para obtener una descripción de la información que se devuelve en relinfo, consulte la estructura cdaorelationinfo ( .For a description of the information returned in relinfo, see the CDaoRelationInfo structure. Esta estructura tiene miembros que corresponden a los elementos de la información enumerados anteriormente en la descripción de dwInfoOptions.This structure has members that correspond to the items of information listed above in the description of dwInfoOptions. Si solicita información en un nivel, también obtendrá información en cualquier nivel anterior.If you request information at one level, you also get information at any prior levels as well.

Nota

Si establece los atributos del objeto de relación para activar las operaciones en cascada ( dbRelationUpdateCascades o dbRelationDeleteCascades ), el motor de base de datos de Microsoft Jet actualiza o elimina automáticamente los registros de una o varias tablas cuando se realizan cambios en las tablas de clave principal relacionadas.If you set the relation object's attributes to activate cascade operations (dbRelationUpdateCascades or dbRelationDeleteCascades), the Microsoft Jet database engine automatically updates or deletes records in one or more other tables when changes are made to related primary key tables. Por ejemplo, supongamos que establece una relación de eliminación en cascada entre una tabla de clientes y una tabla de pedidos.For example, suppose you establish a cascade delete relationship between a Customers table and an Orders table. Cuando se eliminan registros de la tabla Customers, también se eliminan los registros de la tabla Orders relacionados con ese cliente.When you delete records from the Customers table, records in the Orders table related to that customer are also deleted. Además, si establece relaciones de eliminación en cascada entre la tabla Orders y otras tablas, los registros de esas tablas se eliminarán automáticamente al eliminar los registros de la tabla customers.In addition, if you establish cascade delete relationships between the Orders table and other tables, records from those tables are automatically deleted when you delete records from the Customers table.

CDaoDatabase:: GetTableDefCountCDaoDatabase::GetTableDefCount

Llame a esta función miembro para recuperar el número de tablas definidas en la base de datos.Call this member function to retrieve the number of tables defined in the database.

short GetTableDefCount();

Valor devueltoReturn Value

Número de definiciones de código definidas en la base de datos.The number of tabledefs defined in the database.

ObservacionesRemarks

GetTableDefCount resulta útil si necesita recorrer todas las definiciones de base de la colección TableDefs de la base de datos.GetTableDefCount is useful if you need to loop through all tabledefs in the database's TableDefs collection. Para obtener información sobre una tabla determinada de la colección, vea GetTableDefInfo.To obtain information about a given table in the collection, see GetTableDefInfo.

CDaoDatabase:: GetTableDefInfoCDaoDatabase::GetTableDefInfo

Llame a esta función miembro para obtener varios tipos de información acerca de una tabla definida en la base de datos.Call this member function to obtain various kinds of information about a table defined in the database.

void GetTableDefInfo(
    int nIndex,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetTableDefInfo(
    LPCTSTR lpszName,
    CDaoTableDefInfo& tabledefinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

ParámetrosParameters

nIndexnIndex
Índice del objeto TableDef de la colección TableDefs de la base de datos, para la búsqueda por índice.The index of the tabledef object in the database's TableDefs collection, for lookup by index.

tabledefinfotabledefinfo
Referencia a un objeto cdaotabledefinfo ( que devuelve la información solicitada.A reference to a CDaoTableDefInfo object that returns the information requested.

dwInfoOptionsdwInfoOptions
Opciones que especifican la información sobre la tabla que se va a recuperar.Options that specify which information about the table to retrieve. Aquí se enumeran las opciones disponibles junto con lo que hacen que la función devuelva sobre la relación:The available options are listed here along with what they cause the function to return about the relation:

  • AFX_DAO_PRIMARY_INFO (valor predeterminado) nombre, actualizable, atributosAFX_DAO_PRIMARY_INFO (Default) Name, Updatable, Attributes

  • AFX_DAO_SECONDARY_INFO información principal más: fecha de creación, fecha de última actualización, nombre de la tabla de origen, conectarAFX_DAO_SECONDARY_INFO Primary information plus: Date Created, Date Last Updated, Source Table Name, Connect

  • AFX_DAO_ALL_INFO información principal y secundaria más: regla de validación, texto de validación, número de registrosAFX_DAO_ALL_INFO Primary and secondary information plus: Validation Rule, Validation Text, Record Count

lpszNamelpszName
Nombre del objeto TableDef, para buscar por nombre.The name of the tabledef object, for lookup by name.

ObservacionesRemarks

Se proporcionan dos versiones de la función para que pueda seleccionar una tabla por índice en la colección TableDefs de la base de datos o por el nombre de la tabla.Two versions of the function are supplied so you can select a table either by index in the database's TableDefs collection or by the name of the table.

Para obtener una descripción de la información que se devuelve en tabledefinfo, consulte la estructura cdaotabledefinfo ( .For a description of the information returned in tabledefinfo, see the CDaoTableDefInfo structure. Esta estructura tiene miembros que corresponden a los elementos de la información enumerados anteriormente en la descripción de dwInfoOptions.This structure has members that correspond to the items of information listed above in the description of dwInfoOptions. Si solicita información en un nivel, también obtendrá información para cualquier nivel anterior.If you request information at one level, you get information for any prior levels as well.

Nota

La opción AFX_DAO_ALL_INFO proporciona información que puede ser lenta de obtener.The AFX_DAO_ALL_INFO option provides information that can be slow to obtain. En este caso, el recuento de los registros de la tabla podría llevar mucho tiempo si hay muchos registros.In this case, counting the records in the table could be very time consuming if there are many records.

CDaoDatabase:: GetVersionCDaoDatabase::GetVersion

Llame a esta función miembro para determinar la versión del archivo de base de datos de Microsoft Jet.Call this member function to determine the version of the Microsoft Jet database file.

CString GetVersion();

Valor devueltoReturn Value

CString que indica la versión del archivo de base de datos asociado al objeto.A CString that indicates the version of the database file associated with the object.

ObservacionesRemarks

El valor devuelto representa el número de versión con el formato "Major. minor"; por ejemplo, "3,0".The value returned represents the version number in the form "major.minor"; for example, "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).The product version number (for example, 3.0) consists of the version number (3), a period, and the release number (0). Las versiones hasta la fecha son 1,0, 1,1, 2,0 y 3,0.The versions to date are 1.0, 1.1, 2.0, and 3.0.

Para obtener información relacionada, vea el tema "propiedad version" en la ayuda de DAO.For related information, see the topic "Version Property" in DAO Help.

CDaoDatabase:: IsOpenCDaoDatabase::IsOpen

Llame a esta función miembro para determinar si el CDaoDatabase objeto está abierto actualmente en una base de datos.Call this member function to determine whether the CDaoDatabase object is currently open on a database.

BOOL IsOpen() const;

Valor devueltoReturn Value

Es distinto de cero si el CDaoDatabase objeto está abierto actualmente; de lo contrario, es 0.Nonzero if the CDaoDatabase object is currently open; otherwise 0.

ObservacionesRemarks

CDaoDatabase:: m_pDAODatabaseCDaoDatabase::m_pDAODatabase

Contiene un puntero a la interfaz OLE para el objeto de base de datos DAO subyacente al CDaoDatabase objeto.Contains a pointer to the OLE interface for the DAO database object underlying the CDaoDatabase object.

ObservacionesRemarks

Utilice este puntero si necesita tener acceso a la interfaz de DAO directamente.Use this pointer if you need to access the DAO interface directly.

Para obtener información sobre cómo llamar directamente a DAO, vea la Nota técnica 54.For information about calling DAO directly, see Technical Note 54.

CDaoDatabase:: m_pWorkspaceCDaoDatabase::m_pWorkspace

Contiene un puntero al objeto CDaoWorkspace que contiene el objeto de base de datos.Contains a pointer to the CDaoWorkspace object that contains the database object.

ObservacionesRemarks

Utilice este puntero si necesita tener acceso directamente al área de trabajo; por ejemplo, para obtener punteros a otros objetos de base de datos en la colección de bases de datos del área de trabajo.Use this pointer if you need to access the workspace directly — for example, to obtain pointers to other database objects in the workspace's Databases collection.

CDaoDatabase:: OpenCDaoDatabase::Open

Debe llamar a esta función miembro para inicializar un objeto recién construido CDaoDatabase que representa una base de datos existente.You must call this member function to initialize a newly constructed CDaoDatabase object that represents an existing database.

virtual void Open(
    LPCTSTR lpszName,
    BOOL bExclusive = FALSE,
    BOOL bReadOnly = FALSE,
    LPCTSTR lpszConnect = _T(""));

ParámetrosParameters

lpszNamelpszName
Expresión de cadena que es el nombre de una existente de Microsoft Jet (. MDB).A string expression that is the name of an existing Microsoft Jet (.MDB) database file. Si el nombre de archivo tiene una extensión, es obligatorio.If the filename has an extension, it is required. Si la red es compatible con la Convención de nomenclatura universal (UNC), también puede especificar una ruta de acceso de red, como " \ \ \ \MYSERVER \ \MYSHARE \ \MYDIR \ \MYDB. MDB ".If your network supports the uniform naming convention (UNC), you can also specify a network path, such as "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB.MDB". (Se requieren barras diagonales inversas dobles en los literales de cadena porque " \ " es el carácter de escape de C++).(Double backslashes are required in string literals because "\" is the C++ escape character.)

Se aplican algunas consideraciones al usar lpszName.Some considerations apply when using lpszName. Si es así:If it:

  • Hace referencia a una base de datos que ya está abierta para el acceso exclusivo de otro usuario, MFC produce una excepción de tipo CDaoException.Refers to a database that is already open for exclusive access by another user, MFC throws an exception of type CDaoException. Capture esa excepción para que el usuario sepa que la base de datos no está disponible.Trap that exception to let your user know that the database is unavailable.

  • Es una cadena vacía ("") y lpszConnect es "ODBC;", se muestra un cuadro de diálogo que enumera todos los nombres de orígenes de datos ODBC registrados para que el usuario pueda seleccionar una base de datos.Is an empty string ("") and lpszConnect is "ODBC;", a dialog box listing all registered ODBC data source names is displayed so the user can select a database. Debe evitar las conexiones directas a los orígenes de datos ODBC. en su lugar, use una tabla adjunta.You should avoid direct connections to ODBC data sources; use an attached table instead.

  • De lo contrario, no hace referencia a una base de datos existente o a un nombre de origen de datos ODBC válido, MFC produce una excepción de tipo CDaoException .Otherwise does not refer to an existing database or valid ODBC data source name, MFC throws an exception of type CDaoException.

Nota

Para obtener más información sobre los códigos de error de DAO, vea DAOERR. H archivo.For details about DAO error codes, see the DAOERR.H file. Para obtener información relacionada, vea el tema "errores de acceso a datos recapturables" en la ayuda de DAO.For related information, see the topic "Trappable Data Access Errors" in DAO Help.

bExclusivebExclusive
Valor booleano que es TRUE si la base de datos se va a abrir para el acceso exclusivo (no compartido) y FALSE si la base de datos se va a abrir para el acceso compartido.A Boolean value that is TRUE if the database is to be opened for exclusive (nonshared) access and FALSE if the database is to be opened for shared access. Si omite este argumento, la base de datos se abre para el acceso compartido.If you omit this argument, the database is opened for shared access.

bReadOnlybReadOnly
Valor booleano que es TRUE si la base de datos se va a abrir para el acceso de solo lectura y FALSE si la base de datos se va a abrir para el acceso de lectura y escritura.A Boolean value that is TRUE if the database is to be opened for read-only access and FALSE if the database is to be opened for read/write access. Si omite este argumento, la base de datos se abre para acceso de lectura y escritura.If you omit this argument, the database is opened for read/write access. Todos los conjuntos de registros dependientes heredan este atributo.All dependent recordsets inherit this attribute.

lpszConnectlpszConnect
Expresión de cadena utilizada para abrir la base de datos.A string expression used for opening the database. Esta cadena constituye los argumentos de conexión ODBC.This string constitutes the ODBC connect arguments. Debe proporcionar los argumentos exclusivo y de solo lectura para proporcionar una cadena de origen.You must supply the exclusive and read-only arguments to supply a source string. Si la base de datos es una base de datos de Microsoft Jet (. MDB), esta cadena está vacía ("").If the database is a Microsoft Jet database (.MDB), this string is empty (""). La sintaxis del valor predeterminado, _T(""), proporciona portabilidad para Unicode y compilaciones ANSI de la aplicación.The syntax for the default value — _T("") — provides portability for Unicode as well as ANSI builds of your application.

ObservacionesRemarks

Open asocia la base de datos al objeto DAO subyacente.Open associates the database with the underlying DAO object. No se puede usar el objeto de base de datos para construir objetos Recordset, TableDef o QueryDef hasta que se inicialice.You cannot use the database object to construct recordset, tabledef, or querydef objects until it is initialized. Open anexa el objeto de base de datos a la colección de bases de datos del área de trabajo asociada.Open appends the database object to the associated workspace's Databases collection.

Use los parámetros de la siguiente manera:Use the parameters as follows:

  • Si está abriendo un Microsoft Jet (. MDB), use el parámetro lpszName y pase una cadena vacía para el parámetro lpszConnect o pase una cadena de contraseña con el formato "; PWD = contraseña "si la base de datos está protegida por contraseña (. Solo bases de datos MDB).If you are opening a Microsoft Jet (.MDB) database, use the lpszName parameter and pass an empty string for the lpszConnect parameter or pass a password string of the form ";PWD=password" if the database is password-protected (.MDB databases only).

  • Si está abriendo un origen de datos ODBC, pase una cadena de conexión ODBC válida en lpszConnect y una cadena vacía en lpszName.If you are opening an ODBC data source, pass a valid ODBC connection string in lpszConnect and an empty string in lpszName.

Para obtener información relacionada, vea el tema sobre el método OpenDatabase en la ayuda de DAO.For related information, see the topic "OpenDatabase Method" in DAO Help.

Nota

Para mejorar el rendimiento al obtener acceso a bases de datos externas, incluidas las bases de datos ISAM y los orígenes de datos ODBC, se recomienda adjuntar tablas de bases de datos externas a una base de datos del motor de Microsoft Jet (. MDB) en lugar de conectarse directamente al origen de datos.For better performance when accessing external databases, including ISAM databases and ODBC data sources, it is recommended that you attach external database tables to a Microsoft Jet engine database (.MDB) rather than connecting directly to the data source.

Es posible que se agote el tiempo de espera de un intento de conexión si, por ejemplo, el host de DBMS no está disponible.It is possible for a connection attempt to time out if, for example, the DBMS host is unavailable. Si se produce un error en el intento de conexión, se Open produce una excepción de tipo CDaoException.If the connection attempt fails, Open throws an exception of type CDaoException.

Las notas restantes solo se aplican a las bases de datos ODBC:The remaining remarks apply only to ODBC databases:

Si la base de datos es una base de datos ODBC y los parámetros de la Open llamada no contienen suficiente información para realizar la conexión, el controlador ODBC abre un cuadro de diálogo para obtener la información necesaria del usuario.If the database is an ODBC database and the parameters in your Open call do not contain enough information to make the connection, the ODBC driver opens a dialog box to obtain the necessary information from the user. Cuando se llama a Open , la cadena de conexión, lpszConnect, se almacena de forma privada y está disponible mediante una llamada a la función miembro GetConnect .When you call Open, your connection string, lpszConnect, is stored privately and is available by calling the GetConnect member function.

Si lo desea, puede abrir su propio cuadro de diálogo antes de llamar Open a para obtener información del usuario, como una contraseña, y después agregar esa información a la cadena de conexión que se pasa a Open .If you wish, you can open your own dialog box before you call Open to get information from the user, such as a password, then add that information to the connection string you pass to Open. O bien, puede que desee guardar la cadena de conexión que ha superado (quizás en el registro de Windows) para que pueda reutilizarla la próxima vez que la aplicación llame a Open en un CDaoDatabase objeto.Or you might want to save the connection string you pass (perhaps in the Windows registry) so you can reuse it the next time your application calls Open on a CDaoDatabase object.

También puede usar la cadena de conexión para varios niveles de autorización de inicio de sesión (cada uno para un CDaoDatabase objeto diferente) o para transmitir otra información específica de la base de datos.You can also use the connection string for multiple levels of login authorization (each for a different CDaoDatabase object) or to convey other database-specific information.

CDaoDatabase:: SetQueryTimeoutCDaoDatabase::SetQueryTimeout

Llame a esta función miembro para invalidar el número predeterminado de segundos que se va a permitir antes de que se agote el tiempo de espera de las operaciones posteriores en la base de datos conectada.Call this member function to override the default number of seconds to allow before subsequent operations on the connected database time out.

void SetQueryTimeout(short nSeconds);

ParámetrosParameters

nSecondsnSeconds
Número de segundos que se va a permitir antes de que se agote el tiempo de espera de un intento de consulta.The number of seconds to allow before a query attempt times out.

ObservacionesRemarks

Una operación puede agotar el tiempo de espera debido a problemas de acceso a la red, un tiempo de procesamiento excesivo de consultas, etc.An operation might time out because of network access problems, excessive query processing time, and so on. Llame a SetQueryTimeout antes de abrir el conjunto de registros o antes de llamar a las funciones miembro AddNew, Updateo Delete del conjunto de registros si desea cambiar el valor de tiempo de espera de la consulta.Call SetQueryTimeout before opening your recordset or before calling the recordset's AddNew, Update, or Delete member functions if you want to change the query timeout value. La configuración afecta a todas las llamadas posteriores, AddNew , Update y abiertas Delete a cualquier conjunto de registros asociado a este CDaoDatabase objeto.The setting affects all subsequent Open, AddNew, Update, and Delete calls to any recordsets associated with this CDaoDatabase object. Cambiar el valor de tiempo de espera de consulta para un conjunto de registros después de abrir no cambia el valor del conjunto de registros.Changing the query timeout value for a recordset after opening does not change the value for the recordset. Por ejemplo, las operaciones de movimiento posteriores no usan el nuevo valor.For example, subsequent Move operations do not use the new value.

El valor predeterminado de los tiempos de espera de la consulta es de 60 segundos.The default value for query timeouts is 60 seconds. No todas las bases de datos admiten la capacidad de establecer un valor de tiempo de espera de consulta.Not all databases support the ability to set a query timeout value. Si establece un valor de tiempo de espera de consulta de 0, no se produce ningún tiempo de espera. la comunicación con la base de datos puede dejar de responder.If you set a query timeout value of 0, no timeout occurs; the communication with the database may stop responding. Este comportamiento puede ser útil durante el desarrollo.This behavior may be useful during development.

Para obtener información relacionada, vea el tema "propiedad QueryTimeout" en la ayuda de DAO.For related information, see the topic "QueryTimeout Property" in DAO Help.

Consulta tambiénSee also

CObject (clase)CObject Class
Gráfico de jerarquíaHierarchy Chart
CDaoWorkspace (clase)CDaoWorkspace Class
CDaoRecordset (clase)CDaoRecordset Class
CDaoTableDef (clase)CDaoTableDef Class
CDaoQueryDef (clase)CDaoQueryDef Class
CDatabase (clase)CDatabase Class
CDaoException (clase)CDaoException Class