Compartir vía


CFieldExchange (clase)

Admite las rutinas de intercambio de campos de registro (RFX) y de intercambio masivo de campos de registro (RFX Masivo) utilizadas por las clases de base de datos.

Sintaxis

class CFieldExchange

Miembros

Métodos públicos

Nombre Descripción
CFieldExchange::IsFieldType Devuelve un valor distinto de cero si la operación actual es adecuada para el tipo de campo que se está actualizando.
CFieldExchange::SetFieldType Especifica el tipo de miembro de datos del conjunto de registros (columna o parámetro) representado por todas las siguientes llamadas a funciones RFX hasta la siguiente llamada a SetFieldType.

Comentarios

CFieldExchange no tiene una clase base.

Use esta clase si está escribiendo rutinas de intercambio de datos para tipos de datos personalizados o al implementar una captura masiva de filas; de lo contrario, no use directamente esta clase. RFX y RFX masivo intercambian datos entre los miembros de datos de campo del objeto de conjunto de registros y los campos correspondientes del registro actual en el origen de datos.

Nota:

Si está trabajando con las clases de Objetos de acceso a datos (DAO) en lugar de las clases de Conectividad abierta de bases de datos (ODBC), use la clase CDaoFieldExchange en su lugar. Para más información, consulte el artículo Información general: programación de bases de datos.

Un objeto CFieldExchange proporciona la información de contexto necesaria para que se produzca el intercambio de campos de registros o el intercambio masivo de campos de registros. Los objetos CFieldExchange admiten varias operaciones, que incluyen parámetros de enlace y los miembros de datos de campo y el establecimiento de varias marcas en los campos del registro actual. Las operaciones RFX y BULK RFX se realizan en miembros de datos de clase recordset de tipos definidos por FieldType enum en CFieldExchange. Los valores posibles de FieldType son:

  • CFieldExchange::outputColumn para miembros de datos de campo.

  • CFieldExchange::inputParam o CFieldExchange::param para miembros de datos de parámetros de entrada.

  • CFieldExchange::outputParam para miembros de datos de parámetros de salida.

  • CFieldExchange::inoutParam para miembros de datos de parámetros de entrada y salida.

La mayoría de las funciones miembro y los miembros de datos de la clase se proporcionan para escribir sus propias rutinas RFX personalizadas. Usará SetFieldType con frecuencia. Para más información, vea los artículos Intercambio de campos de registros (RFX) y Conjunto de registros (ODBC). Para más información sobre la captura masiva de filas, vea el artículo Conjunto de registros: captura de registros de forma masiva (ODBC). Para más información sobre las funciones globales RFX y RFX masivo, vea Funciones de intercambio de campos de registro en la sección Macros y variables globales de MFC de esta referencia.

Jerarquía de herencia

CFieldExchange

Requisitos

Encabezado: afxdb.h

CFieldExchange::IsFieldType

Si escribe su propia función RFX, llame a IsFieldType al principio de la función para determinar si la operación actual se puede realizar en un tipo de miembro de datos de campos o parámetros en particular (CFieldExchange::outputColumn, CFieldExchange::inputParam, CFieldExchange::param, CFieldExchange::outputParam o CFieldExchange::inoutParam).

BOOL IsFieldType(UINT* pnField);

Parámetros

pnField
El número secuencial del miembro de datos de campos o parámetros se devuelve en este parámetro. Este número corresponde al orden del miembro de datos en la función CRecordset::DoFieldExchange o CRecordset::DoBulkFieldExchange.

Valor devuelto

Distinto de cero si la operación actual se puede realizar en el tipo de campo o parámetro actual.

Comentarios

Siga el modelo de las funciones RFX existentes.

CFieldExchange::SetFieldType

Necesita una llamada a SetFieldType en la invalidación DoFieldExchange o DoBulkFieldExchange de la clase de conjunto de registros.

void SetFieldType(UINT nFieldType);

Parámetros

nFieldType
Valor de enum FieldType, declarado en CFieldExchange, que puede ser uno de los siguientes:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

Comentarios

Para los miembros de datos de campo, debe llamar a SetFieldType con un parámetro de CFieldExchange::outputColumn, seguido de llamadas a las funciones RFX o RFX masivo. Si no ha implementado la captura masiva de filas, ClassWizard coloca esta llamada a SetFieldType automáticamente en la sección de asignación de campos de DoFieldExchange.

Si parametriza la clase de conjunto de registros, debe llamar a SetFieldType nuevo, fuera de cualquier sección de asignación de campos, seguida de llamadas RFX para todos los miembros de datos de parámetros. Cada tipo de miembro de datos de parámetros debe tener su propia llamada a SetFieldType. En la tabla siguiente se distinguen los distintos valores que puede pasar a SetFieldType para representar los miembros de datos de parámetros de la clase:

Valor del parámetro SetFieldType Tipo de miembro de datos de parámetros
CFieldExchange::inputParam Parámetro de entrada. Valor que se pasa a la consulta o al procedimiento almacenado del conjunto de registros.
CFieldExchange::param igual que CFieldExchange::inputParam.
CFieldExchange::outputParam Parámetro de salida. Valor devuelto del procedimiento almacenado del conjunto de registros.
CFieldExchange::inoutParam Parámetro de entrada o salida. Valor que se pasa al procedimiento almacenado del conjunto de registros y se devuelve de él.

En general, cada grupo de llamadas de función RFX asociadas a miembros de datos de campos o miembros de datos de parámetros debe ir precedido de una llamada a SetFieldType. El parámetro nFieldType de cada llamada a SetFieldType identifica el tipo de los miembros de datos representados por las llamadas de función RFX que siguen a la llamada aSetFieldType.

Para más información sobre cómo controlar los parámetros de salida y entrada/salida, consulte la función miembro FlushResultSet de CRecordset. Para más información sobre las funciones RFX y RFX masivo, vea el tema Funciones de intercambio de campos de registro. Para información relacionada con la captura masiva de filas, vea el artículo Conjunto de registros: captura masiva de registros (ODBC).

Ejemplo

En este ejemplo se muestran varias llamadas a funciones RFX con llamadas complementarias a SetFieldType. Tenga en cuenta que SetFieldType se llama a través del puntero pFX a un 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);
}

Consulte también

Gráfico de jerarquías
CRecordset (clase)