Partilhar via


Classe CDaoFieldExchange

Dá suporte às rotinas de DFX (troca de campo de registro de DAO) usadas pelas classes de banco de dados DAO.

Observação

O DAO tem suporte por meio do Office 2013. DAO 3.6 é a versão final e é considerada obsoleta.

Sintaxe

class CDaoFieldExchange

Membros

Métodos públicos

Nome Descrição
CDaoFieldExchange::IsValidOperation Retornará um valor diferente de zero se a operação atual for apropriada para o tipo de campo que está sendo atualizado.
CDaoFieldExchange::SetFieldType Especifica o tipo do membro de dados do conjunto de registros — coluna ou parâmetro — representado por todas as chamadas seguintes para funções de DFX até a próxima chamada para SetFieldType.

Membros de Dados Públicos

Nome Descrição
CDaoFieldExchange::m_nOperation A operação DFX sendo executada pela chamada atual para a função membro DoFieldExchange do conjunto de registros.
CDaoFieldExchange::m_prs Um ponteiro para o conjunto de registros no qual as operações DFX estão sendo executadas.

Comentários

CDaoFieldExchange não tem uma classe base.

Use essa classe se estiver escrevendo rotinas de troca de dados para tipos de dados personalizados. Caso contrário, você não usará essa classe diretamente. O DFX troca dados entre os membros de dados de campo do objeto CDaoRecordset e os campos correspondentes do registro atual na fonte de dados. O DFX gerencia a troca nas duas direções, da fonte de dados e para ela. Consulte a Nota Técnica 53 para obter informações sobre como escrever rotinas personalizadas do DFX.

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 MFC baseadas em DAO são mais capazes do que as classes MFC baseadas em ODBC. As classes baseadas em DAO podem acessar dados, inclusive por meio de drivers ODBC, por meio do próprio mecanismo de banco de dados. Elas também dão suporte a operações de DDL (Linguagem de Definição de Dados), como adicionar tabelas por meio das classes, em vez de precisar chamar o DAO por conta própria.

Observação

O DFX (troca de campos de registro DAO) é muito semelhante ao RFX (troca de campos de registro) nas classes de banco de dados MFC baseadas em ODBC (CDatabase, CRecordset). Se você entender o RFX, será fácil usar o DFX.

Um objeto CDaoFieldExchange fornece as informações de contexto necessárias para que a troca de campos de registro DAO ocorra. Os objetos CDaoFieldExchange dão suporte a várias operações, incluindo a associação de parâmetros e membros de dados de campo e a configuração de vários sinalizadores nos campos do registro atual. As operações DFX são executadas em membros de dados da classe recordset de tipos definidos pelo enum FieldType no CDaoFieldExchange. Estes são possíveis valores de FieldType:

  • CDaoFieldExchange::outputColumn para membros de dados de campo.

  • CDaoFieldExchange::param para membros de dados de parâmetro.

A função membro IsValidOperation é fornecida para escrever suas rotinas personalizadas de DFX. Você usará SetFieldType com frequência em suas funções CDaoRecordset::DoFieldExchange. Para obter detalhes sobre as funções globais de DFX, consulte Funções de troca de campos de registro. Para obter informações sobre como escrever rotinas personalizadas de DFX para seus tipos de dados, consulte a Nota Técnica 53.

Hierarquia de herança

CDaoFieldExchange

Requisitos

Cabeçalho: afxdao.h

CDaoFieldExchange::IsValidOperation

Se você escrever sua função DFX, chame IsValidOperation no início dela para determinar se a operação atual pode ser executada em um determinado tipo de membro de dados de campo (um CDaoFieldExchange::outputColumn ou um CDaoFieldExchange::param).

BOOL IsValidOperation();

Valor de retorno

Diferente de zero se a operação atual for apropriada para o tipo de campo que está sendo atualizado.

Comentários

Algumas das operações executadas pelo mecanismo DFX se aplicam apenas a um dos tipos de campo possíveis. Siga o modelo das funções DFX existentes.

Para obter informações adicionais sobre como escrever rotinas de DFX personalizadas, consulte a Nota Técnica 53.

CDaoFieldExchange::m_nOperation

Identifica a operação a ser executada no objeto CDaoRecordset associado ao objeto de troca de campos.

Comentários

O objeto CDaoFieldExchange fornece o contexto para várias operações de DFX diferentes no conjunto de registros.

Observação

O PSEUDONULL valor descrito nas MarkForAddNew operações e SetFieldNull abaixo é um valor usado para marcar os campos como nulos. O DFX (mecanismo de troca de campos de registro DAO) usa esse valor para determinar quais campos foram marcados explicitamente como nulo. PSEUDONULL não é necessário para COleDateTime e COleCurrency campos.

Os possíveis valores de m_nOperation são:

Operação Descrição
AddToParameterList Compila a cláusula PARAMETERS da instrução SQL.
AddToSelectList Compila a cláusula SELECT da instrução SQL.
BindField Associa um campo no banco de dados a um local de memória em seu aplicativo.
BindParam Define valores de parâmetro para a consulta do conjunto de registros.
Fixup Define o status nulo de um campo.
AllocCache Aloca o cache usado para verificar se há campos "sujos" no conjunto de registros.
StoreField Salva o registro atual no cache.
LoadField Restaura as variáveis membro de dados armazenadas em cache no conjunto de registros.
FreeCache Libera o cache usado para verificar se há campos "sujos" no conjunto de registros.
SetFieldNull Define o status de um campo como nulo e valor como PSEUDONULL.
MarkForAddNew Marca campos como "sujos" quando não são PSEUDONULL.
MarkForEdit Marca campos como "sujos" quando eles não correspondem ao cache.
SetDirtyField Define os valores de campo marcados como "sujos".
DumpField Despeja o conteúdo de um campo (somente depuração).
MaxDFXOperation Usado para verificação de entrada.

CDaoFieldExchange::m_prs

Contém um ponteiro para o objeto CDaoRecordset associado ao objeto CDaoFieldExchange.

Comentários

CDaoFieldExchange::SetFieldType

Chame SetFieldType na substituição DoFieldExchange da classe CDaoRecordset.

void SetFieldType(UINT nFieldType);

Parâmetros

nFieldType
Um valor da enumeração FieldType, declarado em CDaoFieldExchange, que pode ser um dos seguintes:

  • CDaoFieldExchange::outputColumn

  • CDaoFieldExchange::param

Comentários

Normalmente, ClassWizard escreve essa chamada para você. Se você escrever sua função e estiver usando o assistente para escrever a função DoFieldExchange, adicione chamadas à sua função fora do mapa de campo. Se você não usar o assistente, não haverá um mapa de campo. A chamada precede chamadas para funções DFX, uma para cada membro de dados de campo da classe, e identifica o tipo de campo como CDaoFieldExchange::outputColumn.

Se você parametrizar a classe do conjunto de registros, deverá adicionar chamadas de DFX para todos os membros de dados de parâmetro (fora do mapa de campos) e preceder essas chamadas com uma chamada para SetFieldType. Passe o valor CDaoFieldExchange::param. (Você pode, em vez disso, usar um CDaoQueryDef e definir seus valores de parâmetro.)

Em geral, cada grupo de chamadas de função DFX associadas a membros de dados de campo ou membros de dados de parâmetro deve ser precedido por uma chamada para SetFieldType. O parâmetro nFieldType de cada chamada SetFieldType identifica o tipo dos membros de dados representados pelas chamadas de função DFX que seguem a chamada SetFieldType.

Confira também

Gráfico da hierarquia
Classe CDaoRecordset