Compartir a través de


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:

  1. En todos los casos, primero construya un objeto CDaoQueryDef, proporcionando un puntero al objeto CDaoDatabase al que pertenece la consulta.

  2. 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 a Create no se llama a Open.

    • Para crear una definición de consulta temporal, llame a Create. Pase una cadena vacía para el nombre de la consulta. No llame a Append.

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

CObject

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 a Create, inicialice la definición de consulta estableciendo directamente sus atributos. No llame a Append.

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 Select

  • Acción de dbQAction

  • dbQCrosstab Crosstab

  • dbQDelete Delete

  • dbQUpdate Update

  • dbQAppend Append

  • dbQMakeTable Make-table

  • dbQDDL Data-definition

  • dbQSQLPassThrough Pass-through

  • dbQSetOperation Union

  • dbQSPTBulk Se usa con dbQSQLPassThrough 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)