Compartilhar via


Classe CFieldExchange

Dá suporte às rotinas rfx (troca de campo de registro) e troca de campo de registro em massa (RFX em massa) usadas pelas classes de banco de dados.

Sintaxe

class CFieldExchange

Membros

Métodos públicos

Nome Descrição
CFieldExchange::IsFieldType Retornará um valor diferente de zero se a operação atual for apropriada para o tipo de campo que está sendo atualizado.
CFieldExchange::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 RFX até a próxima chamada para SetFieldType.

Comentários

CFieldExchange não tem uma classe base.

Use essa classe se você estiver escrevendo rotinas de troca de dados para tipos de dados personalizados ou se estiver implementando a busca em massa de linhas. Caso contrário, você não usará essa classe diretamente. RFX e RFX em massa trocam dados entre os membros de dados de campo do objeto do conjunto de registros e os campos correspondentes do registro atual na fonte de dados.

Observação

Se você estiver trabalhando com as classes DAO (objetos de acesso a dados) em vez das classes ODBC, use a classe CDaoFieldExchange. Para obter mais informações, confira o artigo Visão geral: programação de banco de dados.

Um objeto CFieldExchange fornece as informações de contexto necessárias para que a troca de campos de registro ou a troca de campos de registro em massa ocorra. Os objetos CFieldExchange 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. Operações de RFX e RFX em massa são executadas em membros de dados da classe de conjunto de registros dos tipos definidos pelo enumFieldType em CFieldExchange. Estes são possíveis valores de FieldType:

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

  • CFieldExchange::inputParam ou CFieldExchange::param para membros de dados de parâmetros 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 membro e membros de dados da classe são fornecidos para escrever suas rotinas RFX personalizadas. Você usará SetFieldType com frequência. Para saber mais, confira os artigos RFX (troca de campos de registro) e Conjunto de registros (ODBC). Para obter informações sobre a busca de linhas em massa, confira o artigo Conjunto de registros: buscando registros em massa (ODBC). Para obter detalhes sobre as funções globais de RFX e RFX em massa, consulte Funções de troca de campos de registro na seção Macros e globais do MFC desta referência.

Hierarquia de herança

CFieldExchange

Requisitos

Cabeçalho: afxdb.h

CFieldExchange::IsFieldType

Se você escrever sua função RFX, chame IsFieldType no início dela para determinar se a operação atual pode ser executada em um determinado campo ou tipo de membro de dados de parâmetro (um CFieldExchange::outputColumn, CFieldExchange::inputParam, CFieldExchange::param, CFieldExchange::outputParam ou CFieldExchange::inoutParam).

BOOL IsFieldType(UINT* pnField);

Parâmetros

pnField
O número sequencial do membro de dados de campo ou parâmetro é retornado nesse parâmetro. Esse número corresponde à ordem do membro de dados na função CRecordset::DoFieldExchange ou CRecordset::DoBulkFieldExchange.

Valor de Devolução

Diferente de zero se a operação atual puder ser executada no tipo de parâmetro ou campo atual.

Comentários

Siga o modelo das funções RFX existentes.

CFieldExchange::SetFieldType

Você precisa de uma chamada para SetFieldType na substituição de DoFieldExchange ou DoBulkFieldExchange da classe do conjunto de registros.

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

Comentários

Para membros de dados de campo, você precisa chamar SetFieldType com um parâmetro de CFieldExchange::outputColumn, seguido por chamadas para as funções RFX ou RFX em massa. Se você não tiver implementado a busca de linha em massa, ClassWizard fará essa chamada SetFieldType para você na seção de mapa de campos de DoFieldExchange.

Se você parametrizar a classe de conjunto de registros, precisará chamar SetFieldType novamente, fora de qualquer seção do mapa de campos, seguida por chamadas RFX para todos os membros de dados de parâmetro. Cada tipo de membro de dados de parâmetro deve ter a própria chamada SetFieldType. A tabela a seguir descreve os diferentes valores que você pode passar para SetFieldType para representar os membros de dados de parâmetro da classe:

Valor do parâmetro SetFieldType Tipo do membro de dados do parâmetro
CFieldExchange::inputParam parâmetro de entrada. Um valor passado para a consulta ou procedimento armazenado do conjunto de registros.
CFieldExchange::param O mesmo que CFieldExchange::inputParam.
CFieldExchange::outputParam parâmetro de saída. Um valor retornado do procedimento armazenado do conjunto de registros.
CFieldExchange::inoutParam Parâmetro de entrada/saída. Um valor passado para p procedimento armazenado do conjunto de registros e retornado dele.

Em geral, cada grupo de chamadas de função RFX 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 RFX que seguem a chamada SetFieldType.

Para obter mais informações sobre como lidar com parâmetros de saída e de entrada/saída, consulte a função membro CRecordsetFlushResultSet. Para obter mais informações sobre as funções RFX e RFX em massa, confira o tópico Funções de troca de campos de registro. Para obter informações relacionadas sobre a busca de linhas em massa, confira o artigo Conjunto de registros: buscando registros em massa (ODBC).

Exemplo

Este exemplo mostra várias chamadas para funções RFX com chamadas que as acompanham para SetFieldType. Observe que SetFieldType é chamado por meio do ponteiro pFX para um objeto CFieldExchange.

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);
}

Confira também

Gráfico da hierarquia
Classe CRecordset