Partilhar via


Classe CFieldExchange

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Suporta as rotinas de troca de campos de registo (RFX) e troca de campos de registo em massa (Bulk RFX) usadas pelas classes da base de dados.

Sintaxe

class CFieldExchange

Membros

Métodos Públicos

Nome Description
CFieldExchange::IsFieldType Retorna diferente de zero se a operação atual for apropriada para o tipo de campo a ser atualizado.
CFieldExchange::SetFieldType Especifica o tipo de membro de dados do conjunto de registos — coluna ou parâmetro — representado por todas as chamadas seguintes às funções RFX até à próxima chamada para SetFieldType.

Observações

CFieldExchange não tem uma classe base.

Use esta classe se estiver a escrever rotinas de troca de dados para tipos de dados personalizados ou se estiver a implementar busca de linhas em massa; caso contrário, não irá usar esta disciplina diretamente. RFX e Bulk RFX trocam dados entre os membros de dados de campo do seu objeto de registo e os campos correspondentes do registo atual na fonte de dados.

Observação

Se estiver a trabalhar com as classes Data Access Objects (DAO) em vez das classes Open Database Connectivity (ODBC), use a classe CDaoFieldExchange em vez disso. Para mais informações, consulte o artigo Visão Geral:Programação de Bases de Dados.

Um CFieldExchange objeto fornece a informação de contexto necessária para que a troca de campos de registo ou troca de campos de registo em massa ocorra. CFieldExchange Os objetos suportam várias operações, incluindo parâmetros de ligação e membros de dados de campo, bem como a definição de vários indicadores nos campos do registo atual. As operações RFX e Bulk RFX são realizadas em membros de dados de classe de registos de tipos definidos pelo enumFieldType em CFieldExchange. Os valores possíveis do FieldType são:

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

  • CFieldExchange::inputParam ou CFieldExchange::param para membros de dados do parâmetro de entrada.

  • CFieldExchange::outputParam para membros de dados do parâmetro de saída.

  • CFieldExchange::inoutParam para membros de dados do parâmetro de entrada/saída.

A maioria das funções e membros de dados da classe são fornecidas para escrever as suas próprias rotinas RFX personalizadas. Vais usar SetFieldType frequentemente. Para mais informações, consulte os artigos Troca de Campos de Registos (RFX) e Conjuntos de Registos (ODBC). Para informações sobre busca de linhas em massa, consulte o artigo Recordet: Fetching Records in Bulk (ODBC). Para detalhes sobre as funções globais RFX e Bulk RFX, consulte Funções de Troca de Campos de Registo na secção MFC Macros e Globais desta referência.

Hierarquia de herança

CFieldExchange

Requerimentos

Cabeçalho: afxdb.h

CFieldExchange::IsFieldType

Se escrever a sua própria função RFX, ligue IsFieldType no início da sua função para determinar se a operação atual pode ser realizada num determinado tipo de membro de dados de campo ou parâmetro (a CFieldExchange::outputColumn, CFieldExchange::inputParam, CFieldExchange::param, CFieldExchange::outputParam, ou CFieldExchange::inoutParam).

BOOL IsFieldType(UINT* pnField);

Parâmetros

pnField
O número sequencial do elemento de dados do campo ou do parâmetro é devolvido neste parâmetro. Este número corresponde à ordem do membro de dados na função CRecordset::D oFieldExchange ou CRecordset::D oBulkFieldExchange .

Valor de retorno

Não nula se a operação atual puder ser realizada no campo ou tipo de parâmetro atual.

Observações

Siga o modelo das funções RFX existentes.

CFieldExchange::SetFieldType

Precisa de uma chamada para SetFieldType o DoFieldExchange ou DoBulkFieldExchange da sua turma de registos.

void SetFieldType(UINT nFieldType);

Parâmetros

nFieldType
Um valor do enum FieldType, declarado em CFieldExchange, que pode ser um dos seguintes:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

Observações

Para membros de dados de campo, deve chamar SetFieldType com um parâmetro de CFieldExchange::outputColumn, seguido de chamadas para as funções RFX ou Bulk RFX. Se ainda não implementou a busca de linhas em massa, o ClassWizard coloca esta SetFieldType chamada para si na secção de field map de DoFieldExchange.

Se parametrizar a sua classe de registos, deve chamar SetFieldType novamente, fora de qualquer secção de mapa de campo, seguida de chamadas RFX para todos os membros dos dados dos parâmetros. Cada tipo de membro de dados de parâmetro deve ter a sua própria SetFieldType chamada. A tabela seguinte distingue os diferentes valores a SetFieldType que pode passar para representar os membros dos dados de parâmetros da sua classe:

Valor do parâmetro SetFieldType Tipo de membro dos dados do parâmetro
CFieldExchange::inputParam Parâmetro de entrada. Um valor que é passado para a consulta ou procedimento armazenado do conjunto de registos.
CFieldExchange::param Igual a CFieldExchange::inputParam.
CFieldExchange::outputParam Parâmetro de saída. Um valor de retorno do procedimento armazenado do conjunto de registos.
CFieldExchange::inoutParam Parâmetro de entrada/saída. Um valor que é passado e devolvido a partir do procedimento armazenado do conjunto de registos.

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

Para mais informações sobre o tratamento dos parâmetros de saída e entrada/saída, consulte a CRecordset função membro FlushResultSet. Para mais informações sobre as funções RFX e Bulk RFX, consulte o tópico Funções de Troca de Campos de Registo. Para informações relacionadas sobre busca de linhas em bloco, consulte o artigo Recordset: Fetching Records in Bulk (ODBC).

Example

Este exemplo mostra várias chamadas a funções RFX com chamadas correspondentes a SetFieldType. Note que SetFieldType é chamado através do pFX ponteiro para um CFieldExchange objeto.

void CSections::DoFieldExchange(CFieldExchange *pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Text(pFX, _T("[CourseID]"), m_CourseID);
   RFX_Text(pFX, _T("[InstructorID]"), m_InstructorID);
   RFX_Text(pFX, _T("[RoomNo]"), m_RoomNo);
   RFX_Text(pFX, _T("[Schedule]"), m_Schedule);

   // output parameter
   pFX->SetFieldType(CFieldExchange::outputParam);
   RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);

   // input parameter
   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Department_Name"), m_strNameParam);
}

Consulte também

Gráfico de Hierarquia
Classe CRecordset