Compartilhar via


CRecordset::DoFieldExchange

Chamado para trocar dados (em ambas as direções) entre os membros de dados do campo do conjunto de registros e o registro correspondente na fonte de dados. Troca do campo do registro implements (RFX).

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

Parâmetros

  • pFX
    Um ponteiro para um objeto de CFieldExchange . A estrutura configurado já terá esse objeto para especificar um contexto para a operação de troca do campo.

Comentários

Quando buscar em massa de linha não é implementado, a estrutura chama essa função de membro automaticamente para trocar dados entre os membros de dados do campo do seu objeto do conjunto de registros e colunas correspondentes do registro atual na fonte de dados. DoFieldExchange também associa os membros de dados do parâmetro, se houver, aos espaços reservados de parâmetro na cadeia de caracteres da instrução SQL para a seleção do conjunto de registros.

Se a busca em massa de linha é implementado, a estrutura chama DoBulkFieldExchange. Para implementar a linha em massa que pesquisa, você deve especificar a opção de CRecordset::useMultiRowFetch de parâmetro de dwOptions na função de membro de Abrir .

Dica

DoFieldExchange está disponível somente se você estiver usando uma classe derivada de CRecordset.Se você criou um objeto do conjunto de registros diretamente de CRecordset, você deve chamar a função de membro de GetFieldValue para recuperar dados.

A troca de dados do campo, chamada a troca do campo do registro (RFX), funciona em ambas as direções: membros de dados do campo do conjunto de registros para campos de registro na fonte de dados, e do registro na fonte de dados ao conjunto de registros objeto.

A única ação que geralmente você deve executar para implementar DoFieldExchange para sua classe derivado do conjunto de registros é criar a classe com o ClassWizard e especificar os nomes e tipos de dados dos membros de dados do campo. Você pode também adicionar o código que grava de ClassWizard para especificar membros de dados do parâmetro ou para tratar todas as colunas você associa dinamicamente. Para obter mais informações, consulte o artigo conjunto de registros: Colunas de dados dinamicamente de associação (ODBC).

Quando você declara sua classe derivado do conjunto de registros com ClassWizard, o assistente grava uma substituição de DoFieldExchange para você, que lembra o exemplo a seguir:

void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   // Macros such as RFX_Text() and RFX_Int() are dependent on the 
   // type of the member variable, not the type of the field in the database. 
   // ODBC will try to automatically convert the column value to the requested type
   RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
   RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
   RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
   RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
   RFX_Long(pFX, _T("[BillingID]"), m_BillingID);

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param"), m_strParam);
}

Para obter mais informações sobre funções de RFX, consulte o tópico Registrar funções de Exchange do campo.

Para os exemplos e obter mais detalhes sobre DoFieldExchange, consulte o artigo Registrar o campo Exchange: Como RFX funciona. Para obter informações gerais sobre RFX, consulte o artigo Registrar o campo Exchange.

Exceções

Esse método pode lançar exceções do tipo CDBException*.

Requisitos

Cabeçalho: afxdb.h

Consulte também

Referência

Classe CRecordset

Gráfico da hierarquia

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

Classe CFieldExchange

Outros recursos

Registrar funções de troca de campos