Compartilhar via


Classe CDaoQueryDef

Representa uma definição de consulta, ou "querydef", geralmente salva em um banco de dados.

Sintaxe

class CDaoQueryDef : public CObject

Membros

Construtores públicos

Nome Descrição
CDaoQueryDef::CDaoQueryDef Constrói um objeto CDaoQueryDef. Em seguida, chame Open ou Create, dependendo de suas necessidades.

Métodos públicos

Nome Descrição
CDaoQueryDef::Append Acrescenta o querydef à coleção de QueryDefs do banco de dados como uma consulta salva.
CDaoQueryDef::CanUpdate Retornará um valor diferente de zero se a consulta puder atualizar o banco de dados.
CDaoQueryDef::Close Fecha o objeto querydef. Destrua o objeto C++ quando terminar de usá-lo.
CDaoQueryDef::Create Cria o objeto querydef subjacente do DAO. Use o querydef como uma consulta temporária ou chame Append para salvá-lo no banco de dados.
CDaoQueryDef::Execute Executa a consulta definida pelo objeto querydef.
CDaoQueryDef::GetConnect Retorna a cadeia de conexão associada a esse querydef. A cadeia de conexão identifica a fonte de dados. (Somente para consultas de passagem do SQL; caso contrário, uma cadeia de caracteres vazia.)
CDaoQueryDef::GetDateCreated Retorna a data em que a consulta salva foi criada.
CDaoQueryDef::GetDateLastUpdated Retorna a data em que a consulta salva foi atualizada pela última vez.
CDaoQueryDef::GetFieldCount Retorna o número de campos definidos pelo querydef.
CDaoQueryDef::GetFieldInfo Retorna informações sobre um campo especificado definido na consulta.
CDaoQueryDef::GetName Retorna o nome do querydef.
CDaoQueryDef::GetODBCTimeout Retorna o valor de tempo limite usado pelo ODBC (para uma consulta ODBC) quando o querydef é executado. Isso determina por quanto tempo permitir a conclusão da ação da consulta.
CDaoQueryDef::GetParameterCount Retorna o número de parâmetros definidos para a consulta.
CDaoQueryDef::GetParameterInfo Retorna informações sobre um parâmetro especificado para a consulta.
CDaoQueryDef::GetParamValue Retorna o valor de um parâmetro especificado para a consulta.
CDaoQueryDef::GetRecordsAffected Retorna o número de registros afetados por uma consulta de ação.
CDaoQueryDef::GetReturnsRecords Retornará um valor diferente de zero se a consulta definida pelo querydef retornar registros.
CDaoQueryDef::GetSQL Retorna a cadeia de caracteres SQL que especifica a consulta definida pelo querydef.
CDaoQueryDef::GetType Retorna o tipo de consulta: delete, update, append, make-table etc.
CDaoQueryDef::IsOpen Retornará um valor diferente de zero se o querydef estiver aberto e puder ser executado.
CDaoQueryDef::Open Abre um querydef existente armazenado na coleção QueryDefs do banco de dados.
CDaoQueryDef::SetConnect Define a cadeia de conexão para uma consulta de passagem do SQL em uma fonte de dados ODBC.
CDaoQueryDef::SetName Define o nome da consulta salva, substituindo o nome em uso quando o querydef foi criado.
CDaoQueryDef::SetODBCTimeout Define o valor de tempo limite usado pelo ODBC (para uma consulta ODBC) quando o querydef é executado.
CDaoQueryDef::SetParamValue Define o valor de um parâmetro especificado para a consulta.
CDaoQueryDef::SetReturnsRecords Especifica se o querydef retorna registros. Definir esse atributo como TRUE só é válido para consultas de passagem do SQL.
CDaoQueryDef::SetSQL Define a cadeia de caracteres SQL que especifica a consulta definida pelo querydef.

Membros de Dados Públicos

Nome Descrição
CDaoQueryDef::m_pDAOQueryDef Um ponteiro para a interface OLE para o objeto querydef subjacente do DAO.
CDaoQueryDef::m_pDatabase Um ponteiro para o objeto CDaoDatabase com o qual o querydef está associado. O querydef pode ser salvo no banco de dados ou não.

Comentários

Um querydef é um objeto de acesso a dados que contém a instrução SQL que descreve uma consulta e as respectivas propriedades, como "Date Created" e "ODBC Timeout". Você também pode criar objetos querydef temporários sem salvá-los, mas é conveniente — e muito mais eficiente — salvar consultas comumente reutilizadas em um banco de dados. Um objeto CDaoDatabase mantém uma coleção, chamada coleção QueryDefs, que contém os querydefs salvos dele.

Observação

As classes de banco de dados do DAO são diferentes das classes de banco de dados MFC com base no ODBC (Open Database Connectivity). Todos os nomes de classe de banco de dados do DAO têm o prefixo "CDao". Você ainda pode acessar fontes de dados ODBC com as classes DAO. Em geral, as classes do MFC baseadas em DAO são mais capazes do que as classes do MFC com base em ODBC. As classes baseadas em DAO podem acessar dados, inclusive por meio de drivers do ODBC, por meio de um mecanismo próprio de banco de dados. As classes baseadas em DAO também dão suporte a operações de DDL (Linguagem de Definição de Dados), como adicionar tabelas por meio das classes, sem precisar chamar o DAO diretamente.

Uso

Use objetos querydef para trabalhar com uma consulta salva existente ou para criar uma consulta salva ou uma consulta temporária:

  1. Em todos os casos, primeiro construa um objeto CDaoQueryDef, fornecendo um ponteiro para o objeto CDaoDatabase ao qual a consulta pertence.

  2. Em seguida, faça o seguinte, dependendo do que você quiser:

    • Para usar uma consulta salva existente, chame a função membro Open do objeto querydef, fornecendo o nome da consulta salva.

    • Para criar uma consulta salva, chame a função membro Create do objeto querydef, fornecendo o nome da consulta. Depois, chame Append para salvar a consulta acrescentando-a à coleção QueryDefs do banco de dados. Create coloca o querydef em um estado aberto, portanto, depois de chamar Create você não chama Open.

    • Para criar um querydef temporário, chame Create. Passe uma cadeia de caracteres vazia para o nome da consulta. Não chame Append.

Quando terminar de usar um objeto querydef, chame a respectiva função membro Close; em seguida, destrua o objeto querydef.

Dica

A maneira mais fácil de criar consultas salvas é criá-las e armazená-las no banco de dados usando o Microsoft Access. Em seguida, você pode abri-las e usá-las no seu código MFC.

Finalidades

Você pode usar um objeto querydef para qualquer uma das seguintes finalidades:

  • Para criar um objeto CDaoRecordset

  • Para chamar a função membro Execute do objeto para executar diretamente uma consulta action ou uma consulta de passagem do SQL

Você pode usar um objeto querydef para qualquer tipo de consulta, incluindo consultas select, action, crosstab, delete, update, append, make-table, data definition, passagem do SQL, union e bulk. O tipo da consulta é determinado pelo conteúdo da instrução SQL fornecida. Para obter informações sobre tipos de consulta, confira as funções membro Execute e GetType. Os conjuntos de registros são comumente usados para consultas que retornam linhas, geralmente aquelas que usam as palavras-chave SELECT ... FROM. Execute é mais comumente usado para operações em massa. Para obter mais informações, confira Execute e CDaoRecordset.

Querydefs e conjuntos de registros

Para usar um objeto querydef para criar um objeto CDaoRecordset, você normalmente cria ou abre um querydef, conforme descrito acima. Em seguida, construa um objeto de conjunto de registros, passando um ponteiro para o objeto querydef quando você chama CDaoRecordset::Open. O querydef que você passa precisa estar em um estado aberto. Para saber mais, confira a classe CDaoRecordset.

Você não pode usar um querydef para criar um conjunto de registros (o uso mais comum para um querydef), a menos que ele esteja em um estado aberto. Coloque o querydef em um estado aberto chamando Open ou Create.

Bancos de Dados Externos

Os objetos querydef são a maneira preferencial de usar o dialeto SQL nativo de um mecanismo de banco de dados externo. Por exemplo, você pode criar uma consulta Transact SQL (conforme usado no Microsoft SQL Server) e armazená-la em um objeto querydef. Quando você precisa usar uma consulta SQL não baseada no mecanismo de banco de dados do Microsoft Jet, você precisa fornecer uma cadeia de conexão que aponte para a fonte de dados externa. Consultas com cadeias de conexão válidas ignoram o mecanismo de banco de dados e passam a consulta diretamente para o servidor de banco de dados externo para processamento.

Dica

A maneira preferencial de trabalhar com tabelas ODBC é anexá-las a um banco de dados do Microsoft Jet (.MDB).

Para obter informações relacionadas, confira os tópicos "Objeto QueryDef", "Coleção QueryDefs" e "Objeto CdbDatabase" no SDK do DAO.

Hierarquia de herança

CObject

CDaoQueryDef

Requisitos

Cabeçalho: afxdao.h

CDaoQueryDef::Append

Chame essa função membro depois de chamar Create para criar um objeto querydef.

virtual void Append();

Comentários

Append salva o querydef no banco de dados acrescentando o objeto à coleção QueryDefs do banco de dados. Você pode usar o querydef como um objeto temporário sem acrescentá-lo, mas se quiser que ele persista, você precisa chamar Append.

Se você tentar acrescentar um objeto querydef temporário, o MFC gerará uma exceção do tipo CDaoException.

CDaoQueryDef::CanUpdate

Chame essa função membro para determinar se você pode modificar o querydef, por exemplo, alterar o nome ou a cadeia de caracteres SQL dele.

BOOL CanUpdate();

Valor de Devolução

Diferente de zero se você tiver permissão para modificar o querydef; caso contrário, 0.

Comentários

Você poderá modificar o querydef se:

  • Ele não se basear em um banco de dados aberto somente leitura.

  • Você tiver permissões de atualização para o banco de dados.

    Isso depende se você implementou recursos de segurança. O MFC não fornece suporte para segurança; você precisa implementá-lo por conta própria, chamando o DAO diretamente ou usando o Microsoft Access. Confira o tópico "Propriedade Permissions" na Ajuda do DAO.

CDaoQueryDef::CDaoQueryDef

Constrói um objeto CDaoQueryDef.

CDaoQueryDef(CDaoDatabase* pDatabase);

Parâmetros

pDatabase
Um ponteiro para um objeto CDaoDatabase.

Comentários

O objeto pode representar um querydef existente armazenado na coleção QueryDefs do banco de dados, uma nova consulta a ser armazenada na coleção ou uma consulta temporária, não destinada a ser armazenada. Sua próxima etapa depende do tipo de querydef:

  • Se o objeto representar um querydef existente, chame a função membro Open do objeto para inicializá-lo.

  • Se o objeto representar um novo querydef a ser salvo, chame a função membro Create do objeto. Isso adiciona o objeto à coleção QueryDefs do banco de dados. Em seguida, chame as funções membro CDaoQueryDef para definir os atributos do objeto. Por fim, chame Append.

  • Se o objeto representar um querydef temporário (para não ser salvo no banco de dados), chame Create, passando uma cadeia de caracteres vazia para o nome da consulta. Depois de chamar Create, inicialize o querydef definindo diretamente os atributos dele. Não chame Append.

Para definir os atributos do querydef, você pode usar as funções membro SetName, SetSQL, SetConnect, SetODBCTimeout e SetReturnsRecords.

Quando você terminar de usar o objeto querydef, chame a função membro Close dele. Se você tiver um ponteiro para o querydef, use o operador delete para destruir o objeto C++.

CDaoQueryDef::Close

Chame essa função membro quando terminar de usar o objeto querydef.

virtual void Close();

Comentários

Fechar o querydef libera o objeto DAO subjacente, mas não destrói o objeto querydef salvo do DAO nem o objeto CDaoQueryDef do C++. Isso não é o mesmo que CDaoDatabase::DeleteQueryDef, que exclui o querydef da coleção QueryDefs do banco de dados no DAO (se ele não é um querydef temporário).

CDaoQueryDef::Create

Chame essa função membro para criar uma consulta salva ou uma consulta temporária.

virtual void Create(
    LPCTSTR lpszName = NULL,
    LPCTSTR lpszSQL = NULL);

Parâmetros

lpszName
O nome exclusivo da consulta salva no banco de dados. Para obter detalhes sobre a cadeia de caracteres, confira o tópico "Método CreateQueryDef" na Ajuda do DAO. Se você aceitar o valor padrão (uma cadeia de caracteres vazia), um querydef temporário será criado. Essa consulta não é salva na coleção QueryDefs.

lpszSQL
A cadeia de caracteres do SQL que define a consulta. Se você aceitar o valor padrão de NULL, precisará chamar SetSQL posteriormente para definir a cadeia de caracteres. Até lá, a consulta é indefinida. No entanto, você pode usar a consulta indefinida para abrir um conjunto de registros; consulte Comentários para obter detalhes. A instrução SQL precisa ser definida antes que você possa acrescentar o querydef à coleção QueryDefs.

Comentários

Se você passar um nome em lpszName, poderá chamar Append para salvar o querydef na coleção QueryDefs do banco de dados. Caso contrário, o objeto é um querydef temporário e não é salvo. Em ambos os casos, o querydef está em um estado aberto e você pode usá-lo para criar um objeto CDaoRecordset ou chamar a função membro Execute do querydef.

Se você não fornecer uma instrução SQL em lpszSQL, não poderá executar a consulta com Execute, mas poderá usá-la para criar um conjunto de registros. Nesse caso, o MFC usa a instrução SQL padrão do conjunto de registros.

CDaoQueryDef::Execute

Chame essa função membro para executar a consulta definida pelo objeto querydef.

virtual void Execute(int nOptions = dbFailOnError);

Parâmetros

nOptions
Um inteiro que determina as características da consulta. Para obter informações relacionadas, confira o tópico "Método Execute" na ajuda do DAO. Você pode usar o operador OR bit a bit (|) para combinar as seguintes constantes para este argumento:

  • dbDenyWrite Negar permissão de gravação para outros usuários.

  • dbInconsistent Atualizações inconsistentes.

  • dbConsistent Atualizações consistentes.

  • dbSQLPassThrough Passagem do SQL. Faz com que a instrução SQL seja passada para um banco de dados ODBC para processamento.

  • dbFailOnError Valor padrão. Reverter as atualizações se um erro ocorrer e relatar o erro ao usuário.

  • dbSeeChanges Gerar um erro em tempo de execução se outro usuário estiver alterando os dados que você está editando.

Observação

Para obter uma explicação dos termos "inconsistente" e "consistente", confira o tópico "Método Execute" na Ajuda do DAO.

Comentários

Os objetos querydef usados para execução dessa maneira só podem representar um dos seguintes tipos de consulta:

  • Consultas action

  • Consultas de passagem do SQL

Execute não funciona para consultas que retornam registros, como consultas select. Execute é comumente usado para consultas de operação em massa, como UPDATE, INSERT ou SELECT INTO, ou para operações de DDL (linguagem de definição de dados).

Dica

A maneira preferencial de trabalhar com fontes de dados ODBC é anexar tabelas a um banco de dados do Microsoft Jet (.MDB). Para obter mais informações, confura o tópico "Acessando bancos de dados externos com DAO" na Ajuda do DAO.

Chame a função membro GetRecordsAffected do objeto querydef para determinar o número de registros afetados pela chamada mais recente para Execute. Por exemplo, GetRecordsAffected retorna informações sobre o número de registros excluídos, atualizados ou inseridos ao executar uma consulta de ação. A contagem retornada não refletirá alterações em tabelas relacionadas quando as atualizações ou exclusões em cascata estiverem em vigor.

Se você incluir ambos dbInconsistent e dbConsistent ou se não incluir nenhum, o resultado será o padrão, dbInconsistent.

Execute não retorna um conjunto de registros. Usar Execute em uma consulta que seleciona registros faz com que o MFC gere uma exceção do tipo CDaoException.

CDaoQueryDef::GetConnect

Chame essa função membro para obter a cadeia de conexão associada à fonte de dados do querydef.

CString GetConnect();

Valor de Devolução

Um CString que contém a cadeia de conexão do querydef.

Comentários

Essa função é usada apenas com fontes de dados ODBC e determinados drivers ISAM. Ela não é usada com o bancos de dados do Microsoft Jet (.MDB); nesse caso, GetConnect retorna uma cadeia de caracteres vazia. Para obter mais informações sobre, confira SetConnect.

Dica

A maneira preferencial de trabalhar com tabelas ODBC é anexá-las a um banco de dados .MDB. Para obter mais informações, confura o tópico "Acessando bancos de dados externos com DAO" na Ajuda do DAO.

Para obter informações sobre cadeias de conexão, confira o tópico "Propriedade Connect" na Ajuda do DAO.

CDaoQueryDef::GetDateCreated

Chame essa função membro para obter a data em que o objeto querydef foi criado.

COleDateTime GetDateCreated();

Valor de Devolução

Um objeto COleDateTime que contém a data e a hora em que o querydef foi criado.

Comentários

Para obter informações relacionadas, confira o tópico "Propriedades DateCreated, LastUpdated" na ajuda do DAO.

CDaoQueryDef::GetDateLastUpdated

Chame essa função membro para obter a data em que o objeto querydef foi atualizado pela última vez , quando qualquer uma das propriedades dele foi alterada, como o nome, a cadeia de caracteres SQL ou a cadeia de conexão.

COleDateTime GetDateLastUpdated();

Valor de Devolução

Um objeto COleDateTime que contém a data e a hora em que o querydef foi atualizado pela última vez.

Comentários

Para obter informações relacionadas, confira o tópico "Propriedades DateCreated, LastUpdated" na ajuda do DAO.

CDaoQueryDef::GetFieldCount

Chame essa função membro para recuperar o número de campos na consulta.

short GetFieldCount();

Valor de Devolução

O número de campos definidos na consulta.

Comentários

GetFieldCount é útil para fazer loop por todos os campos no querydef. Para essa finalidade, use GetFieldCount em conjunto com GetFieldInfo.

CDaoQueryDef::GetFieldInfo

Chame essa função membro para obter vários tipos de informações sobre um campo definido no querydef.

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
O índice baseado em zero do campo desejado na coleção Fields do querydef, para pesquisa por índice.

fieldinfo
Uma referência a um objeto CDaoFieldInfo que retorna as informações solicitadas.

dwInfoOptions
Opções que especificam quais informações sobre o campo devem ser recuperadas. As opções disponíveis estão listadas aqui junto com o que elas fazem com que a função retorne:

  • AFX_DAO_PRIMARY_INFO (padrão) Nome, tipo, tamanho, atributos

  • AFX_DAO_SECONDARY_INFO Informações primárias, mais: posição ordinal, obrigatório, permitir comprimento zero, campo de origem, tabela de origem, direção de ordenação

  • AFX_DAO_ALL_INFO Informações primárias e secundárias mais: valor padrão, texto de validação, regra de validação

lpszName
Uma cadeia de caracteres que contém o nome do campo desejado para pesquisa por nome. Você pode usar um CString.

Comentários

Para obter uma descrição das informações retornadas em fieldInfo, confira a estrutura CDaoFieldInfo. Essa estrutura tem membros que correspondem às informações descritivas mostradas acima em dwInfoOptions. Se você solicitar um determinado nível de informações, também obterá os níveis anteriores, se houver.

CDaoQueryDef::GetName

Chame essa função membro para recuperar o nome da consulta representada pelo querydef.

CString GetName();

Valor de Devolução

O nome da consulta.

Comentários

Os nomes de querydef são nomes exclusivos definidos pelo usuário. Para obter mais informações sobre nomes de querydef, confira o tópico "Propriedade Name" na Ajuda do DAO.

CDaoQueryDef::GetODBCTimeout

Chame essa função membro para recuperar o limite de tempo atual antes de uma consulta a uma fonte de dados ODBC atingir o tempo limite.

short GetODBCTimeout();

Valor de Devolução

O número de segundos antes de uma consulta atingir o tempo limite.

Comentários

Para obter informações sobre esse limite de tempo, confira o tópico "Propriedade ODBCTimeout" na Ajuda do DAO.

Dica

A maneira preferencial de trabalhar com tabelas ODBC é anexá-las a um banco de dados do Microsoft Jet (.MDB). Para obter mais informações, confura o tópico "Acessando bancos de dados externos com DAO" na Ajuda do DAO.

CDaoQueryDef::GetParameterCount

Chame essa função membro para recuperar o número de parâmetros na consulta salva.

short GetParameterCount();

Valor de Devolução

O número de parâmetros definidos na consulta.

Comentários

GetParameterCount é útil para fazer loop por todos os parâmetros no querydef. Para essa finalidade, use GetParameterCount em conjunto com GetParameterInfo.

Para obter informações relacionadas, confira os tópicos "Objeto Parameter", "Coleção Parameters" e "Declaração PARAMETERS (SQL)" na Ajuda do DAO.

CDaoQueryDef::GetParameterInfo

Chame essa função membro para obter informações sobre um parâmetro definido no querydef.

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
O índice baseado em zero do parâmetro desejado na coleção Parameters do querydef, para pesquisa por índice.

paraminfo
Uma referência a um objeto CDaoParameterInfo que retorna as informações solicitadas.

dwInfoOptions
Opções que especificam quais informações sobre o parâmetro devem ser recuperadas. As opções disponíveis estão listadas aqui, junto com o que elas fazem que a função retorne:

  • AFX_DAO_PRIMARY_INFO (Default) Nome, Tipo

lpszName
Uma cadeia de caracteres que contém o nome do parâmetro desejado para pesquisa por nome. Você pode usar um CString.

Comentários

Para obter uma descrição das informações retornadas em paraminfo, confira a estrutura CDaoParameterInfo. Essa estrutura tem membros que correspondem às informações descritivas mostradas acima em dwInfoOptions.

Para obter informações relacionadas, confira o tópico "Declaração PARAMETERS (SQL)" na ajuda do DAO.

CDaoQueryDef::GetParamValue

Chame essa função membro para recuperar o valor atual do parâmetro especificado armazenado na coleção Parameters do querydef.

virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);

Parâmetros

lpszName
O nome do parâmetro cujo valor você deseja, para pesquisa por nome.

nIndex
O índice baseado em zero do parâmetro na coleção Parameters do querydef, para pesquisa por índice. Você pode obter esse valor com chamadas para GetParameterCount e GetParameterInfo.

Valor de Devolução

Um objeto da classe COleVariant que contém o valor do parâmetro.

Comentários

Você pode acessar o parâmetro por nome ou pela posição ordinal dele na coleção.

Para obter informações relacionadas, confira o tópico "Declaração PARAMETERS (SQL)" na ajuda do DAO.

CDaoQueryDef::GetRecordsAffected

Chame essa função membro para determinar quantos registros foram afetados pela última chamada de Execute.

long GetRecordsAffected();

Valor de Devolução

O número de registros afetados.

Comentários

A contagem retornada não refletirá alterações em tabelas relacionadas quando as atualizações ou exclusões em cascata estiverem em vigor.

Para obter informações relacionadas, confira o tópico "Propriedade RecordsAffected" na ajuda do DAO.

CDaoQueryDef::GetReturnsRecords

Chame essa função membro para determinar se o querydef é baseado em uma consulta que retorna registros.

BOOL GetReturnsRecords();

Valor de Devolução

Diferente de zero se o querydef for baseado em uma consulta que retorna registros; caso contrário, 0.

Comentários

Essa função membro só é usada para consultas de passagem do SQL. Para obter mais informações sobre consultas SQL, confira a função membro Execute. Para obter mais informações sobre como trabalhar com consultas de passagem do SQL, confira a função membro SetReturnsRecords.

Para obter informações relacionadas, confira o tópico "Propriedade ReturnsRecords" na Ajuda do DAO.

CDaoQueryDef::GetSQL

Chame essa função membro para recuperar a instrução SQL que define a consulta na qual o querydef se baseia.

CString GetSQL();

Valor de Devolução

A instrução SQL que define a consulta na qual o querydef se baseia.

Comentários

Você provavelmente analisará a cadeia de caracteres para palavras-chave, nomes de tabela e assim por diante.

Para obter informações relacionadas, confira os tópicos "Propriedade SQL", "Comparação do SQL do Mecanismo de Banco de Dados do Microsoft Jet e do SQL ANSI" e "Consultando um banco de dados com SQL no código" na Ajuda do DAO.

CDaoQueryDef::GetType

Chame essa função membro para determinar o tipo de consulta do querydef.

short GetType();

Valor de Devolução

O tipo da consulta definida pelo querydef. Para obter os valores, confira Comentários.

Comentários

O tipo de consulta é definido pelo que você especifica na cadeia de caracteres SQL do querydef quando você cria o querydef ou chama a função membro SetSQL de um querydef existente. O tipo de consulta retornado por essa função pode ser um dos seguintes valores:

  • dbQSelect Select (selecionar)

  • dbQAction Action (ação)

  • dbQCrosstab Crosstab (cruzamento de tabela)

  • dbQDelete Delete (excluir)

  • dbQUpdate Update (atualizar)

  • dbQAppend Append (acrescentar)

  • dbQMakeTable Make-table (criar tabela)

  • dbQDDL Data-definition (definição de dados)

  • dbQSQLPassThrough Pass-through (passagem)

  • dbQSetOperation Union (união)

  • dbQSPTBulk Usado com dbQSQLPassThrough para especificar uma consulta que não retorna registros.

Observação

Para criar uma consulta de passagem do SQL, você não define a constante dbSQLPassThrough. Ela é definida automaticamente pelo mecanismo de banco de dados do Microsoft Jet quando você cria um objeto querydef e define a cadeia de conexão.

Para obter informações sobre cadeias de caracteres SQL, confira GetSQL. Para obter informações sobre tipos de consulta, confira Execute.

CDaoQueryDef::IsOpen

Chame essa função membro para determinar se o objeto CDaoQueryDef está aberto no momento.

BOOL IsOpen() const;

Valor de Devolução

Diferente de zero se o objeto CDaoQueryDef estiver aberto no momento; caso contrário, 0.

Comentários

Um querydef precisa estar em um estado aberto antes que seja possível usá-lo para chamar Execute ou criar um objeto CDaoRecordset. Para colocar um querydef em uma chamada de estado aberto, chame Create (para um novo querydef) ou Open (para um querydef existente).

CDaoQueryDef::m_pDatabase

Contém um ponteiro para o objeto CDaoDatabase associado ao objeto querydef.

Comentários

Use esse ponteiro se precisar acessar o banco de dados diretamente – por exemplo, para obter ponteiros para outros objetos querydef ou recordset nas coleções do banco de dados.

CDaoQueryDef::m_pDAOQueryDef

Contém um ponteiro para a interface OLE para o objeto querydef subjacente do DAO.

Comentários

Esse ponteiro é fornecido para integridade e consistência com as outras classes. No entanto, como o MFC encapsula totalmente os querydefs do DAO, é improvável que você precise dele. Se você usá-lo, faça isso com cuidado – em particular, não altere o valor do ponteiro, a menos que você saiba o que está fazendo.

CDaoQueryDef::Open

Chame essa função membro para abrir um querydef salvo anteriormente na coleção QueryDefs do banco de dados.

virtual void Open(LPCTSTR lpszName = NULL);

Parâmetros

lpszName
Uma cadeia de caracteres que contém o nome do querydef salvo a ser aberto. Você pode usar um CString.

Comentários

Depois que o querydef estiver aberto, você poderá chamar a respectiva função membro Execute ou usar o querydef para criar um objeto CDaoRecordset.

CDaoQueryDef::SetConnect

Chame essa função membro para definir a cadeia de conexão do objeto querydef.

void SetConnect(LPCTSTR lpszConnect);

Parâmetros

lpszConnect
Uma cadeia de caracteres que contém uma cadeia de conexão para o objeto CDaoDatabase associado.

Comentários

A cadeia de conexão é usada para passar informações adicionais para ODBC e determinados drivers ISAM, conforme necessário. Ela não é usada para o bancos de dados do Microsoft Jet (.MDB).

Dica

A maneira preferencial de trabalhar com tabelas ODBC é anexá-las a um banco de dados .MDB.

Antes de executar um querydef que representa uma consulta de passagem do SQL para uma fonte de dados ODBC, defina a cadeia de conexão com SetConnect e chame SetReturnsRecords para especificar se a consulta retorna registros.

Para obter mais informações sobre a estrutura da cadeia de conexão e exemplos de componentes de cadeia de conexão, confira o tópico "Propriedade Connect" na Ajuda do DAO.

CDaoQueryDef::SetName

Chame essa função membro se você quiser alterar o nome de um querydef não temporário.

void SetName(LPCTSTR lpszName);

Parâmetros

lpszName
Uma cadeia de caracteres que contém o novo nome para uma consulta não temporária no objeto CDaoDatabase associado.

Comentários

Os nomes de querydef são nomes exclusivos definidos pelo usuário. Você pode chamar SetName antes que o objeto querydef seja acrescentado à coleção QueryDefs.

CDaoQueryDef::SetODBCTimeout

Chame essa função membro para definir o limite de tempo antes de uma consulta a uma fonte de dados ODBC atingir o tempo limite.

void SetODBCTimeout(short nODBCTimeout);

Parâmetros

nODBCTimeout
O número de segundos antes de uma consulta atingir o tempo limite.

Comentários

Essa função membro permite substituir o número padrão de segundos antes que operações subsequentes na fonte de dados conectada atinjam o tempo limite. Uma operação pode perder atingir o tempo limite devido a problemas de acesso à rede, tempo excessivo de processamento de consulta e assim por diante. Chame SetODBCTimeout antes de executar uma consulta com este querydef se você quiser alterar o valor do tempo limite da consulta. (À medida que o ODBC reutiliza as conexões, o valor do tempo limite é o mesmo para todos os clientes na mesma conexão.)

O valor padrão para tempos limite de consulta é de 60 segundos.

CDaoQueryDef::SetParamValue

Chame essa função membro para definir o valor de um parâmetro no querydef em tempo de execução.

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

Parâmetros

lpszName
O nome do parâmetro cujo valor você deseja definir.

varValue
O valor a ser definido; consulte Comentários.

nIndex
A posição numérica do parâmetro na coleção Parameters do querydef. Você pode obter esse valor com chamadas para GetParameterCount e GetParameterInfo.

Comentários

O parâmetro já precisa ter sido estabelecido como parte da cadeia de caracteres SQL do querydef. Você pode acessar o parâmetro por nome ou pela posição ordinal dele na coleção.

Especifique o valor a ser definido como um objeto COleVariant. Para obter informações sobre como definir o valor desejado e o tipo em seu objeto COleVariant, consulte a classe COleVariant.

CDaoQueryDef::SetReturnsRecords

Chame essa função membro como parte do processo de configuração de uma consulta de passagem do SQL para um banco de dados externo.

void SetReturnsRecords(BOOL bReturnsRecords);

Parâmetros

bReturnsRecords
Passe TRUE se a consulta em um banco de dados externo retornar registros; caso contrário, FALSE.

Comentários

Nesse caso, você precisa criar o querydef e definir as propriedades dele usando outras funções membro CDaoQueryDef. Para obter uma descrição de bancos de dados externos, confira SetConnect.

CDaoQueryDef::SetSQL

Chame essa função membro para definir a instrução SQL que o querydef executa.

void SetSQL(LPCTSTR lpszSQL);

Parâmetros

lpszSQL
Uma cadeia de caracteres que contém uma instrução SQL completa, adequada para execução. A sintaxe dessa cadeia de caracteres depende do DBMS ao qual a sua consulta se destina. Para acessar uma discussão sobre a sintaxe usada no mecanismo de banco de dados do Microsoft Jet, confira o tópico "Criando instruções SQL no código" na Ajuda do DAO.

Comentários

Um uso típico é SetSQL configurar um objeto querydef para uso em uma consulta de passagem do SQL. (Para obter a sintaxe das consultas de passagem do SQL no DBMS de destino, confira a documentação do DBMS.)

Confira também

Classe CObject
Gráfico da hierarquia
Classe CDaoRecordset
Classe CDaoDatabase
Classe CDaoTableDef
Classe CDaoException