Classe CDaoQueryDef
Representa uma definição de consulta, ou "querydef", geralmente salva em um banco de dados.
Observação
O DAO (Objeto de Acesso a Dados) é suportado pelo Office 2013. DAO 3.6 é a versão final e está obsoleta.
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, o que determina por quanto tempo permitir que a ação da consulta seja concluída. |
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 suas propriedades, como "Data de Criação" e "Tempo Limite ODBC". 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 DAO são distintas das classes de banco de dados Microsoft Foundation Class (MFC) baseadas em 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:
Em todos os casos, primeiro construa um objeto
CDaoQueryDef
, fornecendo um ponteiro para o objeto CDaoDatabase ao qual a consulta pertence.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 chamarCreate
, você não chamaOpen
.Para criar um querydef temporário, chame
Create
. Passe uma cadeia de caracteres vazia para o nome da consulta. Não ligue paraAppend
.
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 conteúdo da instrução SQL fornecida determina o tipo da consulta. Para obter informações sobre tipos de consulta, consulte as Execute
funções de membro e GetType
. Os conjuntos de registros são comumente usados para consultas de retorno de linha, geralmente consultas que usam o comando SELECT ... FROM palavras-chave. Execute
é mais comumente usado para operações em massa. Para obter mais informações, consulte Execute
e CDaoRecordset
.
Querydefs e conjuntos de registros
Para usar um objeto querydef para criar um CDaoRecordset
objeto, você normalmente cria ou abre um querydef conforme descrito anteriormente. Em seguida, construa um objeto recordset, passando um ponteiro para o objeto querydef quando você chama CDaoRecordset::Open
. O querydef que você passa precisa estar em um estado aberto. Para obter mais informações, consulte 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
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 de membro para determinar se você pode modificar o querydef, como alterar seu nome ou cadeia de caracteres SQL.
BOOL CanUpdate();
Valor de retorno
Diferente de zero se você puder modificar o querydef; caso contrário, 0.
Comentários
Você poderá modificar o querydef se:
Ele não se baseia 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ê deve 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 chamarCreate
, inicialize o querydef definindo diretamente os atributos dele. Não ligue paraAppend
.
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 DAO salvo ou o objeto C++ CDaoQueryDef
. Isso não é o mesmo que CDaoDatabase::D eleteQueryDef, que exclui o querydef da coleção QueryDefs do banco de dados no DAO (se não for 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 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
Gere 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 seleção. 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 reflete as alterações nas tabelas relacionadas quando atualizações ou exclusões em cascata estão 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 retorno
A CString
contendo a cadeia de conexão para o querydef.
Comentários
Essa função é usada apenas com fontes de dados ODBC e determinados drivers ISAM. Ele não é usado com bancos de dados do Microsoft Jet (.MDB
); nesse caso, GetConnect
retorna uma cadeia de caracteres vazia. Para obter mais informações, consulte 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 retorno
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 de suas propriedades foi alterada, como seu nome, sua cadeia de caracteres SQL ou sua cadeia de conexão.
COleDateTime GetDateLastUpdated();
Valor de retorno
Um COleDateTime
objeto 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 retorno
O número de campos definidos na consulta.
Comentários
GetFieldCount
é útil para fazer loop por todos os campos no querydef. Para isso, use GetFieldCount
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 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 retorno
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 retorno
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 retorno
O número de parâmetros definidos na consulta.
Comentários
GetParameterCount
é útil para fazer loop por todos os parâmetros no querydef. Para isso, use GetParameterCount
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
(Padrão) Nome, Tipo
lpszName
Uma cadeia de caracteres que contém o nome do parâmetro desejado para pesquisa por nome. Você pode usar CString
.
Comentários
Para obter uma descrição das informações retornadas em paraminfo
, consulte a CDaoParameterInfo
estrutura. Essa estrutura tem membros que correspondem às informações descritivas acima 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 retorno
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 de membro para determinar quantos registros são afetados pela última chamada de Execute.
long GetRecordsAffected();
Valor de retorno
O número de registros afetados.
Comentários
A contagem retornada não reflete as alterações nas tabelas relacionadas quando atualizações ou exclusões em cascata estão 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 retorno
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 retorno
A instrução SQL que define a consulta na qual o querydef se baseia.
Comentários
Você pode analisar a cadeia de caracteres em busca de palavras-chave, nomes de tabelas 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 retorno
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 comdbQSQLPassThrough
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 retorno
Diferente de zero se o objeto CDaoQueryDef
estiver aberto no momento; caso contrário, 0.
Comentários
Um querydef deve estar em um estado aberto antes de usá-lo para chamar Execute
ou criar um CDaoRecordset
objeto. Para colocar um querydef em um 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-o com cautela. 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 CString
.
Comentários
Depois que o querydef estiver aberto, você poderá chamar sua Execute
função membro ou usar o querydef para criar um CDaoRecordset
objeto.
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. Ele não é usado para 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 de membro se quiser alterar o nome de um querydef que não seja 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 quiser alterar o valor de 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á deve estar estabelecido como parte da string 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