Compartir a través de


CRecordset::DoFieldExchange

 

Denominado para intercambiar los datos (en ambas direcciones) entre los miembros de datos de campo de conjunto de registros y el registro correspondiente en el origen de datos.  Implementa el intercambio masivo de campos de registros.  

Sintaxis

      virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

Parámetros

  • pFX
    Un puntero a un objeto CFieldExchange.  El marco ya tendrá configuración este objeto para especificar un contexto para la operación de intercambio de campos.  

Comentarios

Cuando la obtención masiva de filas no se implementa, el marco de trabajo llama a esta función miembro automáticamente para intercambiar datos entre los miembros de datos de campo del objeto de conjunto de registros y las columnas correspondientes del registro actual en el origen de datos.  DoFieldExchange también enlaza a los miembros de datos de parámetro, si existe, los marcadores de parámetros en la cadena de instrucción SQL para la selección de conjunto de registros.  

Si se implementa la obtención masiva de filas, el marco de trabajo llama a DoBulkFieldExchange.  Para implementar la obtención de filas masiva, debe especificar la opción de CRecordset::useMultiRowFetch de parámetro de dwOptions en la función miembro de Abrir .  

Nota

DoFieldExchange sólo está disponible si está utilizando una clase derivada de CRecordset.  Si ha creado un objeto de conjunto de registros directamente de CRecordset, se debe llamar a la función miembro de GetFieldValue para recuperar datos.  

El intercambio de datos de campo, denominado el intercambio de campos del registro (RFX), funciona en ambas direcciones: de los miembros de datos de campo del objeto de conjunto de registros a los campos del registro en el origen de datos, y del registro en el origen de datos al objeto de conjunto de registros.

Las únicas acciones que debe realizar normalmente para implementar DoFieldExchange para el conjunto de registros derivado la clase es crear la clase con ClassWizard y especificar los nombres y tipos de datos de los miembros de datos de campo.  También puede agregar código a las etiquetas de ClassWizard para especificar miembros de datos de parámetro o a tratar de cualquier columna enlaza dinámicamente.  Para obtener más información, vea el artículo conjunto de registros: Enlazar dinámicamente columnas de datos (ODBC).  

Cuando declare la clase derivada de conjunto de registros con ClassWizard, el asistente escribe una invalidación de DoFieldExchange para usted, similar al ejemplo siguiente:

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 obtener más información sobre las funciones RFX, vea el tema Grabe las funciones de Intercambio de campo.

Para obtener ejemplos y detalles más extensos sobre DoFieldExchange, vea el artículo Registre el intercambio: Funcionamiento de RFX.  Para obtener información general sobre RFX, vea el artículo Registre el intercambio.  

Excepciones

Exception

Condition

Este método puede producir excepciones de **CDBException***escrito.

Requisitos

encabezado: afxdb.h

Vea también

CRecordset Class
Gráfico de jerarquías
CRecordset::m_nFields
CRecordset::m_nParams
CRecordset::DoBulkFieldExchange
CRecordset::GetFieldValue
CFieldExchange Class
Funciones de intercambio de campos de registros