Clase CDaoQueryDef
Representa una definición de consulta o "querydef", normalmente guardada en una base de datos.
Nota:
El objeto de acceso a datos (DAO) se admite a través de Office 2013. DAO 3.6 es la versión final y está obsoleta.
Sintaxis
class CDaoQueryDef : public CObject
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CDaoQueryDef::CDaoQueryDef | Construye un objeto CDaoQueryDef . A continuación, llame a Open o Create , dependiendo de sus necesidades. |
Métodos públicos
Nombre | Descripción |
---|---|
CDaoQueryDef::Append | Anexa la definición de consulta a la colección QueryDefs de la base de datos como una consulta guardada. |
CDaoQueryDef::CanUpdate | Devuelve un valor distinto de cero si la consulta puede actualizar la base de datos. |
CDaoQueryDef::Close | Cierra el objeto querydef. Destruye el objeto de C++ cuando termine con él. |
CDaoQueryDef::Create | Crea el objeto querydef subyacente daO. Use la definición de consulta como consulta temporal o llame a Append para guardarla en la base de datos. |
CDaoQueryDef::Execute | Ejecuta la consulta definida por el objeto querydef. |
CDaoQueryDef::GetConnect | Devuelve la cadena de conexión asociada al querydef. La cadena de conexión identifica el origen de los datos. (Solo para consultas de paso a través de SQL; de lo contrario, una cadena vacía). |
CDaoQueryDef::GetDateCreated | Devuelve la fecha en que se creó la consulta guardada. |
CDaoQueryDef::GetDateLastUpdated | Devuelve la fecha en que se actualizó por última vez la consulta guardada. |
CDaoQueryDef::GetFieldCount | Devuelve el número de campos definidos por la definición de consulta. |
CDaoQueryDef::GetFieldInfo | Devuelve información sobre un campo especificado definido en la consulta. |
CDaoQueryDef::GetName | Devuelve el nombre de la definición de consulta. |
CDaoQueryDef::GetODBCTimeout | Devuelve el valor de tiempo de espera utilizado por ODBC (para una consulta ODBC) cuando se ejecuta la definición de consulta, que determina cuánto tiempo se debe permitir que se complete la acción de la consulta. |
CDaoQueryDef::GetParameterCount | Devuelve el número de parámetros definidos para la consulta. |
CDaoQueryDef::GetParameterInfo | Devuelve información sobre un parámetro especificado para la consulta. |
CDaoQueryDef::GetParamValue | Devuelve el valor de un parámetro especificado a la consulta. |
CDaoQueryDef::GetRecordsAffected | Devuelve el número de registros afectados por una consulta de acción. |
CDaoQueryDef::GetReturnsRecords | Devuelve un valor distinto de cero si la consulta definida por la definición de consulta devuelve registros. |
CDaoQueryDef::GetSQL | Devuelve la cadena SQL que especifica la consulta definida por la definición de consulta. |
CDaoQueryDef::GetType | Devuelve el tipo de consulta: delete, update, append, make-table, etc. |
CDaoQueryDef::IsOpen | Devuelve un valor distinto de cero si la definición de consulta está abierta y se puede ejecutar. |
CDaoQueryDef::Open | Abre una definición de consulta existente almacenada en la colección QueryDefs de la base de datos. |
CDaoQueryDef::SetConnect | Establece la cadena de conexión para una consulta de paso a través de SQL en un origen de datos ODBC. |
CDaoQueryDef::SetName | Establece el nombre de la consulta guardada, reemplazando el nombre en uso cuando se creó la definición de consulta. |
CDaoQueryDef::SetODBCTimeout | Establece el valor de tiempo de espera usado por ODBC (para una consulta ODBC) cuando se ejecuta la definición de consulta. |
CDaoQueryDef::SetParamValue | Establece el valor de un parámetro especificado a la consulta. |
CDaoQueryDef::SetReturnsRecords | Especifica si la definición de consulta devuelve registros. Establecer este atributo en TRUE solo es válido para las consultas de paso a través de SQL. |
CDaoQueryDef::SetSQL | Devuelve la cadena SQL que especifica la consulta definida por la definición de consulta. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CDaoQueryDef::m_pDAOQueryDef | Puntero a la interfaz OLE del objeto querydef subyacente de DAO. |
CDaoQueryDef::m_pDatabase | Puntero al CDaoDatabase objeto al que está asociada la definición de consulta. La definición de consulta se puede guardar en la base de datos o no. |
Comentarios
Una definición de consulta es un objeto de acceso a datos que contiene la instrucción SQL que describe una consulta y sus propiedades, como "Fecha de creación" y "Tiempo de espera odbc". También puede crear objetos querydef temporales sin guardarlos, pero resulta conveniente y mucho más eficaz para guardar las consultas reutilizadas habitualmente en una base de datos. Un objeto CDaoDatabase mantiene una colección, denominada colección QueryDefs, que contiene sus definiciones de consulta guardadas.
Nota:
Las clases de base de datos DAO son distintas de las clases de base de datos de Microsoft Foundation Class (MFC) basadas en open Database Connectivity (ODBC). Todos los nombres de las clases de base de datos DAO tienen el prefijo "CDao". Se puede seguir accediendo a orígenes de datos de ODBC usando clases DAO. En general, las clases MFC basadas en DAO son más capaces que las clases MFC basadas en ODBC; las clases basadas en DAO pueden acceder a los datos, incluso mediante controladores ODBC, a través de su propio motor de base de datos. Las clases basadas en DAO también admiten operaciones de lenguaje de definición de datos (DDL), como agregar tablas a través de las clases, sin tener que llamar directamente a DAO.
Uso
Use objetos querydef para trabajar con una consulta guardada existente o para crear una nueva consulta guardada o una consulta temporal:
En todos los casos, primero construya un objeto
CDaoQueryDef
, proporcionando un puntero al objeto CDaoDatabase al que pertenece la consulta.Luego haga lo siguiente, en función de lo que quiera:
Para usar una consulta guardada existente, llame a la función miembro Open del objeto querydef y proporcione el nombre de la consulta guardada.
Para crear una nueva consulta guardada, llame a la función Create member del objeto querydef y proporcione el nombre de la consulta. A continuación, llame a Append para guardar la consulta anexando a la colección QueryDefs de la base de datos.
Create
coloca la definición de consulta en un estado abierto, por lo que después de llamar aCreate
no se llama aOpen
.Para crear una definición de consulta temporal, llame a
Create
. Pase una cadena vacía para el nombre de la consulta. No llame aAppend
.
Cuando termine de usar un objeto querydef, llame a su función miembro Close ; a continuación, destruye el objeto querydef.
Sugerencia
La manera más fácil de crear consultas guardadas es crearlas y almacenarlas en la base de datos mediante Microsoft Access. Luego puede abrirlas y usarlas en el código MFC.
Finalidades
Puede usar un objeto querydef para cualquiera de los siguientes fines:
Para crear un objeto
CDaoRecordset
Para llamar a la función miembro del
Execute
objeto para ejecutar directamente una consulta de acción o una consulta de paso a través de SQL
Puede usar un objeto querydef para cualquier tipo de consulta, como select, action, crosstab, delete, update, append, make-table, data definition, SQL pass-through, union y bulk queries. El contenido de la instrucción SQL que proporcione determina el tipo de la consulta. Para obtener información sobre los tipos de consulta, consulte las Execute
funciones miembro y GetType
. Los conjuntos de registros se usan normalmente para las consultas que devuelven filas, normalmente las consultas que usan select ... Palabras clave FROM . Execute
se usa normalmente para las operaciones masivas. Para obtener más información, vea Execute
y CDaoRecordset
.
Definiciones de consulta y conjuntos de registros
Para usar un objeto querydef para crear un CDaoRecordset
objeto, normalmente se crea o se abre una definición de consulta como se ha descrito anteriormente. A continuación, construya un objeto de conjunto de registros y pase un puntero al objeto querydef cuando llame a CDaoRecordset::Open
. La definición de consulta que pase debe estar en un estado abierto. Para obtener más información, vea la clase CDaoRecordset
.
No se puede usar una definición de consulta para crear un conjunto de registros (el uso más común para una definición de consulta), a menos que esté en un estado abierto. Coloque la definición de consulta en un estado abierto mediante una llamada a Open
o Create
.
Bases de datos externas
Los objetos querydef son la manera preferida de usar el dialecto SQL nativo de un motor de base de datos externo. Por ejemplo, puede crear una consulta transact SQL (como se usa en Microsoft SQL Server) y almacenarla en un objeto querydef. Cuando necesite usar una consulta SQL no basada en el motor de base de datos de Microsoft Jet, debe proporcionar una cadena de conexión que apunte al origen de datos externo. Las consultas con cadenas de conexión válidas omiten el motor de base de datos y pasan la consulta directamente al servidor de bases de datos externo para su procesamiento.
Sugerencia
La manera preferida de trabajar con tablas ODBC es asociarlas a microsoft Jet (. Base de datos MDB).
Para obtener información relacionada, vea los temas "QueryDef Object", "QueryDefs Collection" y "CdbDatabase Object" en el SDK de DAO.
Jerarquía de herencia
CDaoQueryDef
Requisitos
Encabezado: afxdao.h
CDaoQueryDef::Append
Llame a esta función miembro después de llamar a Create para crear un nuevo objeto querydef.
virtual void Append();
Comentarios
Append
guarda la definición de consulta en la base de datos anexando el objeto a la colección QueryDefs de la base de datos. Puede usar la definición de consulta como un objeto temporal sin anexarlo, pero si desea que persista, debe llamar a Append
.
Si intenta anexar un objeto querydef temporal, MFC produce una excepción de tipo CDaoException.
CDaoQueryDef::CanUpdate
Llame a esta función miembro para determinar si puede modificar la definición de consulta, como cambiar su nombre o cadena SQL.
BOOL CanUpdate();
Valor devuelto
Distinto de cero si puede modificar la definición de consulta; de lo contrario, 0.
Comentarios
Puede modificar la definición de consulta si:
No se basa en una base de datos que esté abierta de solo lectura.
Tiene permisos de actualización para la base de datos.
Esto depende de si ha implementado características de seguridad. MFC no proporciona compatibilidad con la seguridad; Debe implementarlo usted mismo mediante una llamada a DAO directamente o mediante Microsoft Access. Consulte el tema "Permissions Property" en la Ayuda de DAO.
CDaoQueryDef::CDaoQueryDef
Construye un objeto CDaoQueryDef
.
CDaoQueryDef(CDaoDatabase* pDatabase);
Parámetros
pDatabase
Puntero a un objeto CDaoDatabase abierto.
Comentarios
El objeto puede representar una definición de consulta existente almacenada en la colección QueryDefs de la base de datos, una nueva consulta que se va a almacenar en la colección, o una consulta temporal, que no se va a almacenar. El paso siguiente depende del tipo de querydef:
Si el objeto representa una definición de consulta existente, llame a la función miembro Open del objeto para inicializarla.
Si el objeto representa una nueva definición de consulta que se va a guardar, llame a la función Create miembro del objeto. Esto agrega el objeto a la colección QueryDefs de la base de datos. A continuación, llame a
CDaoQueryDef
funciones miembro para establecer los atributos del objeto. Por último, llame a Append.Si el objeto representa una definición de consulta temporal (no se va a guardar en la base de datos), llame a
Create
, pasando una cadena vacía para el nombre de la consulta. Después de llamar aCreate
, inicialice la definición de consulta estableciendo directamente sus atributos. No llame aAppend
.
Para establecer los atributos de la definición de consulta, puede usar las funciones miembro SetName, SetSQL, SetConnect, SetODBCTimeout y SetReturnsRecords .
Cuando termine con el objeto querydef, llame a su función miembro Close . Si tiene un puntero a la definición de consulta, use el delete
operador para destruir el objeto de C++.
CDaoQueryDef::Close
Llame a esta función miembro cuando termine de usar el objeto querydef.
virtual void Close();
Comentarios
Al cerrar la definición de consulta se libera el objeto DAO subyacente, pero no se destruye el objeto querydef de DAO guardado ni el objeto C++ CDaoQueryDef
. Esto no es lo mismo que CDaoDatabase::D eleteQueryDef, que elimina la definición de consulta de la colección QueryDefs de la base de datos en DAO (si no es una definición de consulta temporal).
CDaoQueryDef::Create
Llame a esta función miembro para crear una nueva consulta guardada o una nueva consulta temporal.
virtual void Create(
LPCTSTR lpszName = NULL,
LPCTSTR lpszSQL = NULL);
Parámetros
lpszName
Nombre único de la consulta guardada en la base de datos. Para obtener más información sobre la cadena, vea el tema "CreateQueryDef Method" (Método CreateQueryDef) en la Ayuda de DAO. Si acepta el valor predeterminado, se crea una cadena vacía, se crea una definición de consulta temporal. Esta consulta no se guarda en la colección QueryDefs.
lpszSQL
Cadena que define la consulta de la vista. Si acepta el valor predeterminado de NULL, debe llamar más adelante a SetSQL para establecer la cadena. Hasta entonces, la consulta no está definida. Sin embargo, puede usar la consulta sin definir para abrir un conjunto de registros; vea Comentarios para obtener más información. La instrucción SQL debe definirse para poder anexar la definición de consulta a la colección QueryDefs.
Comentarios
Si pasa un nombre en lpszName, puede llamar a Append para guardar la definición de consulta en la colección QueryDefs de la base de datos. De lo contrario, el objeto es una definición de consulta temporal y no se guarda. En cualquier caso, la definición de consulta está en un estado abierto y puede usarla para crear un objeto CDaoRecordset o llamar a la función miembro Execute de querydef.
Si no proporciona una instrucción SQL en lpszSQL, no puede ejecutar la consulta con Execute
, pero puede usarla para crear un conjunto de registros. En ese caso, MFC usa la instrucción SQL predeterminada del conjunto de registros.
CDaoQueryDef::Execute
Se debe llamar a esta función miembro para ejecutar la consulta definida por el conjunto de registros.
virtual void Execute(int nOptions = dbFailOnError);
Parámetros
nOptions
que determina las características del relleno. Para obtener información relacionada, consulte el tema "Execute Method" en la Ayuda de DAO. Puede usar el operador OR bit a bit (|
) para combinar las siguientes constantes para este argumento:
dbDenyWrite
Denegar el permiso de escritura a otros usuarios.dbInconsistent
Actualizaciones incoherentes.dbConsistent
Actualizaciones coherentes.dbSQLPassThrough
Paso a través de SQL. Hace que la instrucción SQL se pase a una base de datos ODBC para su procesamiento.dbFailOnError
Valor predeterminado Revierte las actualizaciones si se produce un error y notifica el error al usuario.dbSeeChanges
Genere un error en tiempo de ejecución si otro usuario está cambiando los datos que está editando.
Nota:
Para obtener una explicación de los términos "incoherentes" y "coherentes", vea el tema "Execute Method" en la Ayuda de DAO.
Comentarios
Los objetos Querydef usados para la ejecución de esta manera solo pueden representar uno de los siguientes tipos de consulta:
Consultas de acción
Consultas de paso a través
Execute
no funciona para las consultas que devuelven registros, como las consultas de selección. Execute
se usa normalmente para las consultas de operaciones masivas, como UPDATE, INSERT o SELECT INTO, o para las operaciones del lenguaje de definición de datos (DDL).
Sugerencia
La manera preferida de trabajar con tablas ODBC es asociarlas a microsoft Jet (. Base de datos MDB). Para obtener más información, vea el tema "Acceso a bases de datos externas con DAO" en la Ayuda de DAO.
Llame a la función miembro GetRecordsAffected del objeto querydef para determinar el número de registros afectados por la llamada más reciente Execute
. Por ejemplo, GetRecordsAffected
devuelve información sobre el número de registros eliminados, actualizados o insertados al ejecutar una consulta de acción. El recuento devuelto no refleja los cambios en las tablas relacionadas cuando las actualizaciones o eliminaciones en cascada están en vigor.
Si incluye dbInconsistent
y dbConsistent
o si no incluye ninguno, el resultado es el valor predeterminado, dbInconsistent
.
Execute
no devuelve un conjunto de registros. El uso Execute
de en una consulta que selecciona registros hace que MFC produzca una excepción de tipo CDaoException.
CDaoQueryDef::GetConnect
Llame a esta función miembro para obtener la cadena de conexión asociada al origen de datos de querydef.
CString GetConnect();
Valor devuelto
CString
que contiene el cadena de conexión para la definición de consulta.
Comentarios
Esta función solo se usa con orígenes de datos ODBC y determinados controladores ISAM. No se usa con bases de datos de Microsoft Jet (.MDB
); en este caso, GetConnect
devuelve una cadena vacía. Para obtener más información, vea SetConnect
.
Sugerencia
La manera preferida de trabajar con tablas ODBC es asociarlas a microsoft Jet (. Base de datos MDB). Para obtener más información, vea el tema "Acceso a bases de datos externas con DAO" en la Ayuda de DAO.
Para obtener información sobre las cadenas de conexión, vea el tema "Connect Property" en la Ayuda de DAO.
CDaoQueryDef::GetDateCreated
Llame a esta función miembro para obtener la fecha en que se creó el objeto querydef.
COleDateTime GetDateCreated();
Valor devuelto
Objeto COleDateTime que contiene la fecha y hora en que se creó la definición de consulta.
Comentarios
Para obtener información relacionada, vea el tema "DateCreated, LastUpdated Properties" en la Ayuda de DAO.
CDaoQueryDef::GetDateLastUpdated
Llame a esta función miembro para obtener la fecha en que el objeto querydef se actualizó por última vez, cuando se cambió cualquiera de sus propiedades, como su nombre, su cadena SQL o su cadena de conexión.
COleDateTime GetDateLastUpdated();
Valor devuelto
Objeto COleDateTime
que contiene la fecha y hora en que se actualizó la definición de consulta por última vez.
Comentarios
Para obtener información relacionada, vea el tema "DateCreated, LastUpdated Properties" en la Ayuda de DAO.
CDaoQueryDef::GetFieldCount
Llame a esta función miembro para recuperar el número de campos de la consulta.
short GetFieldCount();
Valor devuelto
Número de campos definidos en la consulta.
Comentarios
GetFieldCount
es útil para recorrer en bucle todos los campos de la definición de consulta. Para ello, use GetFieldCount
con GetFieldInfo
.
CDaoQueryDef::GetFieldInfo
Llame a esta función miembro para obtener varios tipos de información sobre un campo definido en la definición de consulta.
void GetFieldInfo(
int nIndex,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetFieldInfo(
LPCTSTR lpszName,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parámetros
nIndex
Índice de base cero del campo deseado en la colección Fields de querydef para la búsqueda por índice.
fieldinfo
Referencia a un objeto CDaoFieldInfo
que devuelve la información solicitada.
dwInfoOptions
Opciones que especifican qué información sobre el campo que se va a recuperar. Las opciones disponibles se enumeran aquí junto con lo que hacen que la función devuelva:
nombre de AFX_DAO_PRIMARY_INFO (valor predeterminado), tipo, tamaño, atributos
AFX_DAO_SECONDARY_INFO información principal más: posición ordinal, requerida, permitir longitud cero, campo de origen, nombre externo, tabla de origen, orden de intercalación
AFX_DAO_ALL_INFO información principal y secundaria más: Valor predeterminado, Texto de validación, Regla de validación
lpszName
Cadena que contiene el nombre del campo deseado para la búsqueda por nombre. Puede utilizar un bucle CString
.
Comentarios
Para obtener una descripción de la información devuelta en fieldinfo, vea la estructura CDaoFieldInfo . Esta estructura tiene miembros que corresponden a la información descriptiva en dwInfoOptions anterior. Si solicita un nivel de información, también obtendrá los niveles anteriores de información.
CDaoQueryDef::GetName
Llame a esta función miembro para recuperar el nombre de la consulta representada por la definición de consulta.
CString GetName();
Valor devuelto
Nombre de la consulta.
Comentarios
Los nombres de la definición de consulta son nombres únicos definidos por el usuario. Para más información, consulte el tema "Name Property" (Propiedad de nombre) en la Ayuda de DAO.
CDaoQueryDef::GetODBCTimeout
Llame a esta función miembro para recuperar el límite de tiempo actual antes de que se agote el tiempo de espera de una consulta a un origen de datos ODBC.
short GetODBCTimeout();
Valor devuelto
Número de segundos antes de que se agote el tiempo de espera de una consulta.
Comentarios
Para obtener información sobre este límite de tiempo, vea el tema "ODBCTimeout Property" en la Ayuda de DAO.
Sugerencia
La manera preferida de trabajar con tablas ODBC es asociarlas a microsoft Jet (. Base de datos MDB). Para obtener más información, vea el tema "Acceso a bases de datos externas con DAO" en la Ayuda de DAO.
CDaoQueryDef::GetParameterCount
Llame a esta función miembro para recuperar el número de parámetros de la consulta guardada.
short GetParameterCount();
Valor devuelto
Número de parámetros definidos en la consulta.
Comentarios
GetParameterCount
es útil para recorrer en bucle todos los campos de la definición de consulta. Para ello, use GetParameterCount
con GetParameterInfo
.
Para obtener información relacionada, vea los temas "Parameter Object", "Parameters Collection" y "PARAMETERS Declaration (SQL)" en la Ayuda de DAO.
CDaoQueryDef::GetParameterInfo
Llame a esta función miembro para obtener información sobre un parámetro definido en la definición de consulta.
void GetParameterInfo(
int nIndex,
CDaoParameterInfo& paraminfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetParameterInfo(
LPCTSTR lpszName,
CDaoParameterInfo& paraminfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parámetros
nIndex
Índice de base cero del campo deseado en la colección Fields de querydef para la búsqueda por índice.
paraminfo
Referencia a un objeto CDaoParameterInfo que devuelve la información solicitada.
dwInfoOptions
Opciones que especifican qué información sobre el campo que se va a recuperar. La opción disponible se muestra aquí junto con lo que hace que la función devuelva:
AFX_DAO_PRIMARY_INFO
(Valor predeterminado) Nombre, tipo
lpszName
Cadena que contiene el nombre del campo deseado para la búsqueda por nombre. Puede utilizar un bucle CString
.
Comentarios
Para obtener una descripción de la información devuelta en paraminfo
, vea la CDaoParameterInfo
estructura . Esta estructura tiene miembros que corresponden a la información dwInfoOptions
descriptiva anterior.
Para obtener información relacionada, vea el tema "DECLARACIÓN DE PARÁMETROS (SQL)" en la Ayuda de DAO.
CDaoQueryDef::GetParamValue
Llame a esta función miembro para recuperar el valor actual del parámetro especificado almacenado en la colección Parameters de querydef.
virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);
Parámetros
lpszName
Nombre del parámetro cuyo valor desea, para la búsqueda por nombre.
nIndex
Índice de base cero del campo deseado en la colección Fields de querydef para la búsqueda por índice. Puede obtener este valor con llamadas a GetParameterCount y GetParameterInfo.
Valor devuelto
Objeto de la clase COleVariant que contiene el valor del parámetro.
Comentarios
Puede acceder al parámetro por nombre o por su posición ordinal en la colección.
Para obtener información relacionada, vea el tema "DECLARACIÓN DE PARÁMETROS (SQL)" en la Ayuda de DAO.
CDaoQueryDef::GetRecordsAffected
Llame a esta función miembro para determinar cuántos registros se ven afectados por la última llamada de Execute.
long GetRecordsAffected();
Valor devuelto
Número de registros afectados.
Comentarios
El recuento devuelto no refleja los cambios en las tablas relacionadas cuando las actualizaciones o eliminaciones en cascada están en vigor.
Para obtener información relacionada, vea el tema sobre la propiedad RecordsAffected en la Ayuda de DAO.
CDaoQueryDef::GetReturnsRecords
Llame a esta función miembro para determinar si la definición de consulta se basa en una consulta que devuelve registros.
BOOL GetReturnsRecords();
Valor devuelto
Distinto de cero si la definición de consulta se basa en una consulta que devuelve registros; de lo contrario, 0.
Comentarios
Esta función miembro solo se usa para las consultas de paso a través de SQL. Para obtener más información sobre las consultas SQL, consulte la función miembro Execute . Para obtener más información sobre cómo trabajar con consultas de paso a través de SQL, consulte la función miembro SetReturnsRecords .
Para obtener más información, consulte el tema "UserName Property" (Propiedad de UserName) en la Ayuda de DAO.
CDaoQueryDef::GetSQL
Llame a esta función miembro para recuperar la instrucción SQL que define la consulta en la que se basa la definición de consulta.
CString GetSQL();
Valor devuelto
Instrucción SQL que define la consulta en la que se basa la definición de consulta.
Comentarios
Puede analizar la cadena para palabras clave, nombres de tabla, etc.
Para obtener información relacionada, vea los temas "Sql Property", "Comparison of Microsoft Jet Database Engine SQL and ANSI SQL" (Comparación de SQL del motor de base de datos de Microsoft Jet y ANSI SQL) y "Querying a Database with SQL in Code" (Consulta de una base de datos con SQL en el código) en la Ayuda de DAO.
CDaoQueryDef::GetType
Llame a esta función miembro para determinar el tipo de consulta de la definición de consulta.
short GetType();
Valor devuelto
Tipo de la consulta definida por la definición de consulta. Vea los valores en la sección "Comentarios".
Comentarios
El tipo de consulta se establece mediante lo que se especifica en la cadena SQL de querydef al crear la querydef o llamar a la función miembro SetSQL de una definición de consulta existente. El tipo de consulta devuelto por esta función puede ser uno de los siguientes valores:
dbQSelect
SelectAcción de
dbQAction
dbQCrosstab
CrosstabdbQDelete
DeletedbQUpdate
UpdatedbQAppend
AppenddbQMakeTable
Make-tabledbQDDL
Data-definitiondbQSQLPassThrough
Pass-throughdbQSetOperation
UniondbQSPTBulk
Se usa condbQSQLPassThrough
para especificar una consulta que no devuelve registros.
Nota:
Para crear una consulta de paso a través de SQL, no establezca la dbSQLPassThrough
constante. El motor de base de datos de Microsoft Jet lo establece automáticamente cuando se crea un objeto querydef y se establece la cadena de conexión.
Para obtener información sobre las cadenas SQL, consulte GetSQL. Para obtener información sobre los tipos de consulta, vea Ejecutar.
CDaoQueryDef::IsOpen
Llame a esta función miembro para determinar si el CDaoQueryDef
objeto está abierto actualmente.
BOOL IsOpen() const;
Valor devuelto
Distinto de cero si el CDaoQueryDef
objeto está abierto actualmente; de lo contrario, es 0.
Comentarios
Una definición de consulta debe estar en un estado abierto antes de usarla para llamar Execute
a o para crear un CDaoRecordset
objeto. Para colocar una definición de consulta en un estado abierto, llame Create
a (para una nueva definición de consulta) o Open
(para una definición de consulta existente).
CDaoQueryDef::m_pDatabase
Contiene un puntero al objeto CDaoDatabase asociado al objeto querydef.
Comentarios
Use este puntero si necesita acceder directamente a la base de datos. Por ejemplo, para obtener punteros a otros objetos querydef o recordset de las colecciones de la base de datos.
CDaoQueryDef::m_pDAOQueryDef
Contiene un puntero a la interfaz OLE del objeto querydef de DAO subyacente.
Comentarios
Este puntero se proporciona para la integridad y la coherencia con las demás clases. Sin embargo, dado que MFC encapsula completamente las definiciones de consulta DAO, es poco probable que la necesite. Si lo usa, hágalo con precaución. En concreto, no cambie el valor del puntero a menos que sepa lo que está haciendo.
CDaoQueryDef::Open
Llame a esta función miembro para abrir una definición de consulta guardada anteriormente en la colección QueryDefs de la base de datos.
virtual void Open(LPCTSTR lpszName = NULL);
Parámetros
lpszName
Una cadena que contiene el nombre de archivo querydef que se va a abrir. Puede utilizar un bucle CString
.
Comentarios
Una vez abierta la definición de consulta, puede llamar a su Execute
función miembro o usar la definición de consulta para crear un CDaoRecordset
objeto.
CDaoQueryDef::SetConnect
Llame a esta función miembro para establecer la cadena de conexión del objeto querydef.
void SetConnect(LPCTSTR lpszConnect);
Parámetros
lpszConnect
Cadena que contiene una cadena de conexión para el objeto CDaoDatabase asociado.
Comentarios
La cadena de conexión se usa para pasar información adicional a ODBC y determinados controladores ISAM según sea necesario. No se usa para las bases de datos de Microsoft Jet (.MDB
).
Sugerencia
La manera preferida de trabajar con tablas ODBC es asociarlas a microsoft Jet (. Base de datos MDB).
Antes de ejecutar una definición de consulta que representa una consulta de paso a través de SQL en un origen de datos ODBC, establezca la cadena de conexión con SetConnect
y llame a SetReturnsRecords para especificar si la consulta devuelve registros.
Para obtener más información sobre la estructura de la cadena de conexión y ejemplos de componentes de cadena de conexión, vea el tema "Connect Property" en la Ayuda de DAO.
CDaoQueryDef::SetName
Llame a esta función miembro si desea cambiar el nombre de una definición de consulta que no es temporal.
void SetName(LPCTSTR lpszName);
Parámetros
lpszName
Cadena que contiene el nuevo nombre de una consulta nontemporary en el objeto CDaoDatabase asociado.
Comentarios
Los nombres de la definición de consulta son nombres únicos definidos por el usuario. Puede llamar SetName
a antes de anexar el objeto querydef a la colección QueryDefs.
CDaoQueryDef::SetODBCTimeout
Llame a esta función miembro para establecer el límite de tiempo antes de que se agote el tiempo de espera de una consulta en un origen de datos ODBC.
void SetODBCTimeout(short nODBCTimeout);
Parámetros
nODBCTimeout
Número de segundos antes de que se agote el tiempo de espera de una consulta.
Comentarios
Esta función miembro permite invalidar el número predeterminado de segundos antes de las operaciones posteriores en el origen de datos conectado "tiempo de espera". Una operación puede agotar el tiempo de espera debido a problemas de acceso a la red, un tiempo excesivo de procesamiento de consultas, etc. Llame SetODBCTimeout
a antes de ejecutar una consulta con esta definición de consulta si desea cambiar el valor de tiempo de espera de la consulta. (A medida que ODBC reutiliza las conexiones, el valor de tiempo de espera es el mismo para todos los clientes de la misma conexión).
El valor predeterminado de tiempo de espera para consultas es de 60 segundos.
CDaoQueryDef::SetParamValue
Llame a esta función miembro para establecer el valor de un parámetro en la definición de consulta en tiempo de ejecución.
virtual void SetParamValue(
LPCTSTR lpszName,
const COleVariant& varValue);
virtual void SetParamValue(
int nIndex,
const COleVariant& varValue);
Parámetros
lpszName
Nombre del parámetro para el que desea establecer el valor.
varValue
Valor que se va a establecer; vea Comentarios.
nIndex
Posición ordinal del parámetro en la colección Parameters de la definición de consulta. Puede obtener este valor con llamadas a GetParameterCount y GetParameterInfo.
Comentarios
El parámetro ya debe establecerse como parte de la cadena SQL de querydef. Puede acceder al parámetro por nombre o por su posición ordinal en la colección.
Especifique el valor que se va a establecer como un objeto COleVariant
. Para obtener información sobre cómo establecer el valor deseado y escribir en el COleVariant
objeto, vea la clase COleVariant.
CDaoQueryDef::SetReturnsRecords
Llame a esta función miembro como parte del proceso de configuración de una consulta de paso a través de SQL en una base de datos externa.
void SetReturnsRecords(BOOL bReturnsRecords);
Parámetros
bReturnsRecords
Pase TRUE si la consulta de una base de datos externa devuelve registros; de lo contrario, FALSE.
Comentarios
En tal caso, debe crear la definición de consulta y establecer sus propiedades mediante otras CDaoQueryDef
funciones miembro. Para obtener una descripción de las bases de datos externas, consulte SetConnect.
CDaoQueryDef::SetSQL
Llame a esta función miembro para establecer la instrucción SQL que ejecuta la definición de consulta.
void SetSQL(LPCTSTR lpszSQL);
Parámetros
lpszSQL
Cadena que contiene una instrucción SQL completa, adecuada para su ejecución. La sintaxis de esta cadena depende del DBMS al que se dirige la consulta. Para obtener una explicación de la sintaxis usada en el motor de base de datos de Microsoft Jet, vea el tema "Building SQL Statements in Code" (Compilar instrucciones SQL en código) en la Ayuda de DAO.
Comentarios
Un uso típico de SetSQL
es configurar un objeto querydef para su uso en una consulta de paso a través de SQL. (Para obtener la sintaxis de las consultas de paso a través de SQL en el DBMS de destino, consulte la documentación de DBMS).
Consulte también
CObject
(clase)
Gráfico de jerarquías
CDaoRecordset
(clase)
CDaoDatabase
(clase)
CDaoTableDef
(clase)
CDaoException
(clase)