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 aCDaoDatabase
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 aCDaoDatabase
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
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 SpanishdbLangArabic
ÁrabedbLangArabic
ArabicdbLangCyrillic
RusodbLangCyrillic
RussiandbLangCzech
ChecodbLangCzech
CzechdbLangDutch
HolandésdbLangDutch
DutchdbLangGreek
GriegodbLangGreek
GreekdbLangHebrew
HebreodbLangHebrew
HebrewdbLangHungarian
HúngarodbLangHungarian
HungariandbLangIcelandic
IslandésdbLangIcelandic
IcelandicdbLangNordic
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 DanishdbLangPolish
PolacodbLangPolish
PolishdbLangSpanish
Español tradicionaldbLangSpanish
Traditional SpanishdbLangSwedfin
Sueco y FinésdbLangSwedfin
Swedish and FinnishdbLangTurkish
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. Execute
El 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 typeCDaoException
.
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