Compartilhar via


Intercâmbio de campo do registro: Trabalhando com o código do Assistente

Este tópico explica o código que o Assistente de aplicativo do MFC e Adicionar classe (conforme descrito em Adicionando um consumidor ODBC do MFC) grave Suporte RFX e sistema autônomo talvez queira alterar esse código.

Observação:

Este tópico se aplica a classes derivadas de CRecordset em qual linha em massa a busca não foi implementada. Se você estiver usando a busca de linha em massa, troca de campo de registro em massa (Bulk RFX) é implementada.Em massa RFX é semelhante ao RFX.Para entender as diferenças, consulte conjunto de registros: Buscando os registros em massa (ODBC).

Quando você cria uma classe de conjunto de registros com o Assistente de aplicativo do MFC ou Adicionar classe, assistente grava os seguintes elementos relacionados RFX para você, com base nos dados de fonte, tabela e coluna opções feitas no Assistente:

  • Dados os membros da classe de conjunto de registros de campos de declarações do conjunto de registros

  • Uma substituir de CRecordset::DoFieldExchange

  • Inicialização de membros de dados de campo de conjunto de registros no construtor de classe do conjunto de registros

Declarações de membro dados campo

Os assistentes gravar uma declaração de classe do conjunto de registros em um arquivo .h semelhante à seguinte para classe CSections:

class CSections : public CRecordset
{
public:
   CSections(CDatabase* pDatabase = NULL);
   DECLARE_DYNAMIC(CSections)

// Field/Param Data
   CString   m_strCourseID;
   CString   m_strInstructorID;
   CString   m_strRoomNo;
   CString   m_strSchedule;
   CString   m_strSectionNo;

// Overrides
   // Wizard generated virtual function overrides
   protected:
   virtual CString GetDefaultConnect();  // Default connection string
   virtual CString GetDefaultSQL();      // Default SQL for Recordset
   virtual void DoFieldExchange(CFieldExchange* pFX);  // RFX support

// Implementation
#ifdef _DEBUG
   virtual void AssertValid() const;
   virtual void Dump(CDumpContext& dc) const;
#endif

};

Se você adicionar membros de dados de parâmetro ou novos participantes de dados de campo que ligam você mesmo, adicioná-los após os gerado pelo assistente.

Além disso, observe que o assistente substitui o DoFieldExchange função de membro de classe CRecordset.

substituir DoFieldExchange

DoFieldExchange é o coração do RFX.A estrutura chama DoFieldExchange sempre que ele precisa mover dados da fonte de dados ao conjunto de registros ou de conjunto de registros à fonte de dados. DoFieldExchange oferece suporte também para obter informações sobre campo membros de dados por meio do IscampoDirty and IscampoNull funções de membro.

A seguir DoFieldExchange substituir é para o CSections classe. O assistente grava a função no arquivo .cpp de sua classe de conjunto de registros.

void CSections::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Text(pFX, "CourseID", m_strCourseID);
   RFX_Text(pFX, "InstructorID", m_strInstructorID);
   RFX_Text(pFX, "RoomNo", m_strRoomNo);
   RFX_Text(pFX, "Schedule", m_strSchedule);
   RFX_Text(pFX, "SectionNo", m_strSectionNo);
}

Observe os seguintes recursos principais da função:

  • Esta seção da função é denominada MAP de campos.

  • Uma telefonar para CFieldExchange::SetFieldType, por meio do pFX ponteiro. Essa telefonar Especifica que todas as função RFX chama até o participante da DoFieldExchange ou a próxima telefonar para SetFieldType são colunas de saída. Para obter mais informações, consulte CFieldExchange::SetFieldType.

  • Várias chamadas para o RFX_Text função global — um por campo membro de dados (para todos que são CString variáveis no exemplo). Essas chamadas especificar o relacionamento entre um nome de coluna na fonte de dados e um campo membro de dados.As funções RFX fazem a transferência de dados real.A biblioteca de classes fornece funções RFX para todos os tipos de dados comuns.Para obter mais informações sobre funções RFX, consulte Intercâmbio de campo do registro: Usando as funções RFX.

    Observação:

    A ordem das colunas no seu conjunto de resultados deve corresponder a ordem das chamadas de função RFX em DoFieldExchange.

  • The pFX ponteiro para um CFieldExchange objeto que passa a estrutura quando chama DoFieldExchange. The CFieldExchange objeto Especifica a operação que DoFieldExchange é executar a direção da transferência e outras informações de contexto.

Construtor de conjunto de registros

O construtor de conjunto de registros que escreve os assistentes contém duas coisas relacionadas ao RFX:

  • Inicialização para cada membro de dados de campo

  • Inicialização para o m_nFields membro de dados, que contém o número de membros de campo de dados

O construtor para o CSections exemplo de conjunto de registros tem esta aparência:

CSections::CSections(CDatabase* pdb)
   : CRecordset(pdb)
{
   m_strCourseID = "";
   m_strInstructorID = "";
   m_strRoomNo = "";
   m_strSchedule = "";
   m_strSectionNo = "";
   m_nFields = 5;
}
Observação:

Se você adicionar quaisquer membros de campo de dados manualmente, sistema autônomo faria se você BIND dinamicamente novas colunas, você deve incrementar m_nFields.Para fazer isso, acrescentando outra linha de código, sistema autônomo:

m_nFields += 3;

Esse é o código para adicionar três novos campos.Se você adicionar membros de dados qualquer parâmetro, você deve inicializar o m_nParams dados membro, que contém o número de membros de dados do parâmetro.Coloca o m_nParams inicialização fora dos colchetes.

Consulte também

Conceitos

Registro de campo Exchange (RFX)