Funciones de intercambio de campos de registros

Este tema muestra las funciones de intercambio de campos de registros (RFX, RFX masivoy DFX) usadas para automatizar la transferencia de datos entre un objeto de conjunto de registros y su origen de datos y para realizar otras operaciones en los datos.

Si está usando las clases basadas en ODBC y ha implementado la obtención masiva de filas, debe reemplazar manualmente la función miembro DoBulkFieldExchange de CRecordset por las funciones de RFX masivo para cada miembro de datos correspondiente a una columna de origen de datos.

Si no ha implementado la recuperación masiva de filas en las clases basadas en ODBC, o si usa las clases basadas en DAO (obsoletas), ClassWizard reemplazará la función miembro DoFieldExchange de CRecordset o CDaoRecordset llamando a las funciones de RFX (para las clases ODBC) o a las funciones de DFX (para las clases DAO) para cada miembro de datos de campos del conjunto de registros.

Las funciones de intercambio de campos de registros transfieren datos cada vez que el marco de trabajo llama a DoFieldExchange o DoBulkFieldExchange. Cada función transfiere un tipo de datos específico.

Para obtener más información sobre cómo se usan estas funciones, vea los artículos Intercambio de campos de registros: Funcionamiento de RFX (ODBC). Para obtener más información sobre la obtención masiva de filas, vea el artículo Conjunto de registros: obtener registros de forma masiva (ODBC).

Para las columnas de datos que enlaza dinámicamente, también puede llamar a las funciones de RFX o DFX como se explica en los artículos Conjunto de registros: Enlazar dinámicamente columnas de datos (ODBC). Además, puede escribir sus propias rutinas personalizadas de RFX o DFX, como se explica en la nota técnica 43 (para ODBC) y en la nota técnica 53 (para DAO).

Para obtener un ejemplo de funciones de RFX y de RFX de forma masiva tal y como aparecen en las funciones DoFieldExchange y DoBulkFieldExchange, consulte RFX_Text y [RFX_Text_Bulk]#rfx_text_bulk). Las funciones de DFX son muy similares a las funciones de RFX.

Funciones de RFX (ODBC)

Nombre Descripción
RFX_Binary Transfiere matrices de bytes del tipo CByteArray.
RFX_Bool Transfiere datos Boolean.
RFX_Byte Transfiere un solo byte de datos.
RFX_Date Transfiere los datos de fecha y hora con CTime o TIMESTAMP_STRUCT.
RFX_Double Transfiere datos Float de doble precisión.
RFX_Int Transfiere datos enteros.
RFX_Long Transfiere datos enteros largos.
RFX_LongBinary Transfiere datos de objetos binarios grandes (BLOB) con un objeto de la clase CLongBinary .
RFX_Single Transfiere datos Float.
RFX_Text Transfiere datos String.

Funciones de RFX masivo (ODBC)

Nombre Descripción
RFX_Binary_Bulk Transfiere matrices de datos Byte.
RFX_Bool_Bulk Transfiere matrices de datos Boolean.
RFX_Byte_Bulk Transfiere matrices de un solo byte.
RFX_Date_Bulk Transfiere matrices de datos del tipo TIMESTAMP_STRUCT.
RFX_Double_Bulk Transfiere matrices de datos de punto flotante de doble precisión.
RFX_Int_Bulk Transfiere matrices de datos enteros.
RFX_Long_Bulk Transfiere matrices de datos enteros largos.
RFX_Single_Bulk Transfiere matrices de datos de punto flotante.
RFX_Text_Bulk Transfiere matrices de datos de tipo LPSTR.

Funciones de DFX (DAO)

Nombre Descripción
DFX_Binary Transfiere matrices de bytes del tipo CByteArray.
DFX_Bool Transfiere datos Boolean.
DFX_Byte Transfiere un solo byte de datos.
DFX_Currency Transfiere datos de divisa del tipo COleCurrency.
DFX_DateTime Transfiere datos de fecha y hora del tipo COleDateTime.
DFX_Double Transfiere datos Float de doble precisión.
DFX_Long Transfiere datos enteros largos.
DFX_LongBinary Transfiere datos de objetos binarios grandes (BLOB) con un objeto de la clase CLongBinary . Para DAO, se recomienda que use DFX_Binary en su lugar.
DFX_Short Transfiere datos enteros cortos.
DFX_Single Transfiere datos Float.
DFX_Text Transfiere datos String.

=============================================

RFX_Binary

Transfiere matrices de bytes entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_BINARY, SQL_VARBINARY o SQL_LONGVARBINARY de ODBC.

Sintaxis

void RFX_Binary(
   CFieldExchange* pFX,
   const char* szName,
   CByteArray& value,
   int nMaxLength = 255);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo CByteArray, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

nMaxLength
Longitud máxima permitida de la cadena o matriz que se transfiere. El valor predeterminado de nMaxLength es 255. Los valores permitidos oscilan entre 1 y e INT_MAX. El marco de trabajo asigna esta cantidad de espacio para los datos. Para obtener el mejor rendimiento, pase un valor lo suficientemente grande como para acomodar el elemento de datos más grande que espera.

Comentarios

Los datos del origen de datos de estos tipos se asignan a y desde el tipo CByteArray del conjunto de registros.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Bool

Transfiere datos booleanos entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_BIT de ODBC.

Sintaxis

void RFX_Bool(
   CFieldExchange* pFX,
   const char* szName,
   BOOL& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo BOOL, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Byte

Transfiere bytes individuales entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_TINYINT de ODBC.

Sintaxis

void RFX_Byte(
   CFieldExchange* pFX,
   const char* szName,
   BYTE& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo BYTE, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Date

Transfiere datos de tipo CTime o TIMESTAMP_STRUCT entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_DATE, SQL_TIME o SQL_TIMESTAMP de ODBC.

Sintaxis

void RFX_Date(
   CFieldExchange* pFX,
   const char* szName,
   CTime& value);

void RFX_Date(
   CFieldExchange* pFX,
   const char* szName,
   TIMESTAMP_STRUCT& value);

void RFX_Date(
   CFieldExchange* pFX,
   const char* szName,
   COleDateTime& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Las distintas versiones de la función toman diferentes tipos de datos para el valor:

La primera versión de la función toma una referencia a un objeto CTime. Para una transferencia del conjunto de registros al origen de datos, el valor se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

La segunda versión de la función toma una referencia a una estructura TIMESTAMP_STRUCT. Debe configurar esta estructura usted mismo antes de la llamada. No hay compatibilidad con el intercambio de datos de cuadros de diálogo (DDX) ni compatibilidad con el asistente para código en esta versión. La tercera versión de la función funciona de forma similar a la primera versión, salvo que toma una referencia a un objeto COleDateTime.

Comentarios

La versión de CTime de la función impone la sobrecarga de algún procesamiento intermedio y tiene un intervalo algo limitado. Si encuentra que alguno de estos factores limita demasiado, use la segunda versión de la función. Pero tenga en cuenta su falta de compatibilidad con el asistente para código y DDX, y el requisito de configurar la estructura usted mismo.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Double

Transfiere datos de tipo float de doble precisión entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_DOUBLE de ODBC.

Sintaxis

void RFX_Double(
   CFieldExchange* pFX,
   const char* szName,
   double& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo double, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Int

Transfiere datos enteros entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_SMALLINT de ODBC.

Sintaxis

void RFX_Int(
   CFieldExchange* pFX,
   const char* szName,
   int& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo int, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Long

Transfiere datos de tipo entero largo entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_INTEGER de ODBC.

Sintaxis

void RFX_Long(
   CFieldExchange* pFX,
   const char* szName,
   LONG&
value );

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo long, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_LongBinary

Transfiere datos de objetos binarios grandes (BLOB) mediante la clase CLongBinary entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos de tipo SQL_LONGVARBINARY o SQL_LONGVARCHAR de ODBC.

Sintaxis

void RFX_LongBinary(
   CFieldExchange* pFX,
   const char* szName,
   CLongBinary& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo CLongBinary, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Single

Transfiere datos de tipo punto flotante entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_REAL de ODBC.

Sintaxis

void RFX_Single(
   CFieldExchange* pFX,
   const char* szName,
   float& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo float, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Text

Transfiere datos de tipo CString entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL o SQL_NUMERIC de ODBC.

Sintaxis

void RFX_Text(
   CFieldExchange* pFX,
   const char* szName,
   CString& value,
   int nMaxLength = 255,
   int nColumnType = SQL_VARCHAR,
   short nScale = 0);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo CString, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

nMaxLength
Longitud máxima permitida de la cadena o matriz que se transfiere. El valor predeterminado de nMaxLength es 255. Los valores permitidos oscilan entre 1 y e INT_MAX. El marco de trabajo asigna esta cantidad de espacio para los datos. Para obtener el mejor rendimiento, pase un valor lo suficientemente grande como para acomodar el elemento de datos más grande que espera.

nColumnType
Se usa principalmente para parámetros. Número entero que indica el tipo de datos del parámetro. El tipo es un tipo de datos de ODBC con el formato SQL_XXX.

nScale
Especifica la escala de los valores de tipo SQL_DECIMAL o SQL_NUMERIC de ODBC. nScale solo es útil al establecer valores de parámetro. Para obtener más información, consulte el tema "Precisión, escala, longitud y tamaño de presentación" en el apéndice D de la referencia del programador del SDK de ODBC.

Comentarios

Los datos del origen de datos de todos estos tipos se asignan a y desde el tipo CString del conjunto de registros.

Ejemplo

En este ejemplo, se muestran varias llamadas a RFX_Text. Observe también las dos llamadas a CFieldExchange::SetFieldType. Para los parámetros, debe escribir la llamada a SetFieldType y su llamada a RFX. Normalmente, un asistente para código escribe la llamada de la columna de salida y sus llamadas a RFX asociadas.

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

Requisitos

Encabezado: afxdb.h

RFX_Binary_Bulk

Transfiere varias filas de datos de bytes de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Binary_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   BYTE** prgByteVals,
   long** prgLengths,
   int nMaxLength);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgByteVals
Puntero a una matriz de valores BYTE. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgByteVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

nMaxLength
Longitud máxima permitida de los valores almacenados en la matriz a la que apunta prgByteVals. Para asegurarse de que los datos no se truncarán, pase un valor lo suficientemente grande como para acomodar el elemento de datos más grande que espera.

Comentarios

La columna del origen de datos puede tener un tipo SQL_BINARY, SQL_VARBINARY o SQL_LONGVARBINARY de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a BYTE.

Si inicializa prgByteVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Bool_Bulk

Transfiere varias filas de datos booleanos de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Bool_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   BOOL** prgBoolVals,
   long** prgLengths);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgBoolVals
Puntero a una matriz de valores BOOL. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgBoolVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

Comentarios

La columna del origen de datos debe tener el tipo SQL_BIT de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a BOOL.

Si inicializa prgBoolVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Byte_Bulk

Transfiere varias filas de bytes individuales de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Byte_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   BYTE** prgByteVals,
   long** prgLengths);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgByteVals
Puntero a una matriz de valores BYTE. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgByteVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

Comentarios

La columna del origen de datos debe tener el tipo SQL_TINYINT de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a BYTE.

Si inicializa prgByteVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Date_Bulk

Transfiere varias filas de datos de tipo TIMESTAMP_STRUCT de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Date_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   TIMESTAMP_STRUCT** prgTSVals,
   long** prgLengths);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgTSVals
Puntero a una matriz de valores TIMESTAMP_STRUCT. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros. Para obtener más información sobre el tipo de datos TIMESTAMP_STRUCT, consulte el tema "Tipos de datos de C" en el apéndice D de la referencia del programador del SDK de ODBC.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgTSVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

Comentarios

La columna del origen de datos puede tener un tipo SQL_DATE, SQL_TIME o SQL_TIMESTAMP de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a TIMESTAMP_STRUCT.

Si inicializa prgTSVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Double_Bulk

Transfiere varias filas de datos de doble precisión de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Double_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   double** prgDblVals,
   long** prgLengths);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgDblVals
Puntero a una matriz de double valores. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgDblVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

Comentarios

La columna del origen de datos debe tener el tipo SQL_DOUBLE de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a double.

Si inicializa prgDblVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Int_Bulk

Transfiere datos enteros entre los miembros de datos de campo de un objeto CRecordset y las columnas de un registro del origen de datos del tipo SQL_SMALLINT de ODBC.

Sintaxis

void RFX_Int(
   CFieldExchange* pFX,
   const char* szName,
   int& value);

Parámetros

pFX
Puntero a un objeto de la clase CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para obtener más información sobre las operaciones que puede especificar un objeto CFieldExchange, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo int, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

Ejemplo

Consulte RFX_Text.

Requisitos

Encabezado: afxdb.h

RFX_Long_Bulk

Transfiere varias filas de datos de tipo entero largo de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Long_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   long** prgLongVals,
   long** prgLengths);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgLongVals
Puntero a una matriz de enteros largos. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgLongVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

Comentarios

La columna del origen de datos debe tener el tipo SQL_INTEGER de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a long.

Si inicializa prgLongVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Single_Bulk

Transfiere varias filas de datos de tipo punto flotante de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Single_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   float** prgFltVals,
   long** prgLengths);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgFltVals
Puntero a una matriz de float valores. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgFltVals. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

Comentarios

La columna del origen de datos debe tener el tipo SQL_REAL de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo puntero a float.

Si inicializa prgFltVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Consulte RFX_Text_Bulk.

Requisitos

Encabezado: afxdb.h

RFX_Text_Bulk

Transfiere varias filas de datos de tipo carácter de una columna de un origen de datos ODBC a una matriz correspondiente en un objeto derivado de CRecordset.

Sintaxis

void RFX_Text_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   LPSTR* prgStrVals,
   long** prgLengths,
   int nMaxLength);

Parámetros

pFX
Puntero a un objeto CFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función. Para más información, consulte el artículo Intercambio de campos de registros: funcionamiento de RFX.

szName
Nombre de una columna de datos.

prgStrVals
Puntero a una matriz de valores LPSTR. Esta matriz almacenará los datos que se van a transferir desde el origen de datos al conjunto de registros. Tenga en cuenta que con la versión actual de ODBC, estos valores no pueden ser Unicode.

prgLengths
Puntero a una matriz de enteros largos. Esta matriz almacenará la longitud en bytes de cada valor de la matriz a la que apunta prgStrVals. Esta longitud excluye el carácter de terminación null. Tenga en cuenta que se almacenará el valor SQL_NULL_DATA si el elemento de datos correspondiente contiene un valor Null. Para obtener más información, consulte la función SQLBindCol de la API de ODBC en la referencia del programador del SDK de ODBC.

nMaxLength
Longitud máxima permitida de los valores almacenados en la matriz a la que apunta prgStrVals, incluido el carácter de terminación null. Para asegurarse de que los datos no se truncarán, pase un valor lo suficientemente grande como para acomodar el elemento de datos más grande que espera.

Comentarios

La columna del origen de datos puede tener un tipo SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL o SQL_NUMERIC de ODBC. El conjunto de registros debe definir un miembro de datos de campo de tipo LPSTR.

Si inicializa prgStrVals y prgLengths en NULL, las matrices a las que apuntan se asignarán automáticamente, con tamaños iguales al tamaño del conjunto de filas.

Nota:

El intercambio de campos de registros de forma masiva solo transfiere datos del origen de datos al objeto del conjunto de registros. Para que el conjunto de registros se pueda actualizar, debe usar la función SQLSetPos de la API de ODBC.

Para más información, consulte Conjunto de registros: recuperación de registros de forma masiva (ODBC) e Intercambio de campos de registros (RFX).

Ejemplo

Debe escribir manualmente las llamadas en la invalidación de DoBulkFieldExchange. En este ejemplo, se muestra una llamada a RFX_Text_Bulk, así como una llamada a RFX_Long_Bulk, para la transferencia de datos. Estas llamadas van precedidas de una llamada a CFieldExchange::SetFieldType. Tenga en cuenta que, para los parámetros, debe llamar a las funciones de RFX en lugar de a las funciones de RFX masivas.

void CMultiCustomer::DoBulkFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Long_Bulk(pFX, _T("[CustomerID]"), &m_pCustomerID, &m_pcCustomerID);
   RFX_Text_Bulk(pFX, _T("[ContactFirstName]"), &m_pContactFirstName, &m_pcContactFirstName, 50);
   RFX_Text_Bulk(pFX, _T("[PostalCode]"), &m_pPostalCode, &m_pcPostalCode, 50);
   RFX_Text_Bulk(pFX, _T("[L_Name]"), &m_pL_Name, &m_pcL_Name, 50);
   RFX_Long_Bulk(pFX, _T("[BillingID]"), &m_pBillingID, &m_pcBillingID);

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param"), m_strParam);
}

Requisitos

Encabezado: afxdb.h

DFX_Binary

Transfiere matrices de bytes entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Binary(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   CByteArray& value,
   int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
   DWORD dwBindOptions = 0);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo CByteArray, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

nPreAllocSize
El marco de trabajo asigna previamente esta cantidad de memoria. Si los datos son mayores, el marco de trabajo asignará más espacio según sea necesario. Para mejorar el rendimiento, establezca este tamaño en un valor lo suficientemente grande como para evitar reasignaciones. El tamaño predeterminado se define en el archivo AFXDAO.H como AFX_DAO_BINARY_DEFAULT_SIZE.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_DISABLE_FIELD_CACHE, no usa el almacenamiento en búfer doble y debe llamar a SetFieldDirty y SetFieldNull usted mismo. El otro valor posible, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble y no tiene que realizar trabajo adicional para marcar los campos como modificados o Null. Por motivos de rendimiento y memoria, evite este valor a menos que los datos binarios sean relativamente pequeños.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble para todos los campos de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_BYTES en DAO y el tipo CByteArray en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Bool

Transfiere datos booleanos entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Bool(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   BOOL& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo BOOL, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_BOOL en DAO y el tipo BOOL en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Byte

Transfiere bytes individuales entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Byte(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   BYTE& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo BYTE, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_BYTES en DAO y el tipo BYTE en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Currency

Transfiere datos de moneda entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Currency(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   COleCurrency& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor se toma del miembro de datos especificado, de tipo COleCurrency. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_CURRENCY en DAO y el tipo COleCurrency en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_DateTime

Transfiere datos de fecha y hora entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_DateTime(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   COleDateTime& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. La función toma una referencia a un objeto COleDateTime. Para una transferencia del conjunto de registros al origen de datos, el valor se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_DATE en DAO y el tipo COleDateTime en el conjunto de registros.

Nota:

COleDateTime reemplaza a CTime y TIMESTAMP_STRUCT para este fin en las clases de DAO. CTime y TIMESTAMP_STRUCT se siguen usando para las clases de acceso a datos basadas en ODBC.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Double

Transfiere datos de tipo float de doble precisión entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Double(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   double& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo double, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_R8 en DAO y el tipo float de doble precisión en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Long

Transfiere datos de tipo entero largo entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Long(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   long& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo long, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_I4 en DAO y el tipo long en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_LongBinary

Importante Se recomienda usar DFX_Binary en lugar de esta función.

Sintaxis

void AFXAPI DFX_LongBinary(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   CLongBinary& value,
   DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
   DWORD dwBindOptions = 0);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo CLongBinary, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwPreAllocSize
El marco de trabajo asigna previamente esta cantidad de memoria. Si los datos son mayores, el marco de trabajo asignará más espacio según sea necesario. Para mejorar el rendimiento, establezca este tamaño en un valor lo suficientemente grande como para evitar reasignaciones.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DISABLE_FIELD_CACHE, no usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_ENABLE_FIELD_CACHE. Usa el almacenamiento en búfer doble y no tiene que realizar ningún trabajo adicional para marcar los campos como modificados o Null. Por motivos de rendimiento y memoria, evite este valor a menos que los datos binarios sean relativamente pequeños.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

DFX_LongBinary se proporciona para la compatibilidad con las clases de ODBC de MFC. La función DFX_LongBinary transfiere datos de objetos binarios grandes (BLOB) mediante la clase CLongBinary entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos. Los datos se asignan entre el tipo DAO_BYTES en DAO y el tipo CLongBinary en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Short

Transfiere datos de tipo entero corto entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Short(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   short& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo short, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_I2 en DAO y el tipo short en el conjunto de registros.

Nota:

DFX_Short equivale a RFX_Int para las clases basadas en ODBC.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Single

Transfiere datos de tipo punto flotante entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Single(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   float& value,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo float, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_R4 en DAO y el tipo float en el conjunto de registros.

Ejemplo

Consulte DFX_Text.

Requisitos

Encabezado: afxdao.h

DFX_Text

Transfiere datos de tipo CString entre los miembros de datos de campo de un objeto CDaoRecordset y las columnas de un registro del origen de datos.

Sintaxis

void AFXAPI DFX_Text(
   CDaoFieldExchange* pFX,
   LPCTSTR szName,
   CString& value,
   int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
   DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);

Parámetros

pFX
Puntero a un objeto de la clase CDaoFieldExchange. Este objeto contiene información para definir el contexto de cada llamada de la función.

szName
Nombre de una columna de datos.

value
Valor almacenado en el miembro de datos indicado: el valor que se va a transferir. Para una transferencia del conjunto de registros al origen de datos, el valor, de tipo CString, se toma del miembro de datos especificado. Para una transferencia del origen de datos al conjunto de registros, el valor se almacena en el miembro de datos especificado.

nPreAllocSize
El marco de trabajo asigna previamente esta cantidad de memoria. Si los datos son mayores, el marco de trabajo asignará más espacio según sea necesario. Para mejorar el rendimiento, establezca este tamaño en un valor lo suficientemente grande como para evitar reasignaciones.

dwBindOptions
Una opción que le permite aprovechar las ventajas del mecanismo de almacenamiento en búfer doble de MFC para detectar los campos del conjunto de registros que han cambiado. El valor predeterminado, AFX_DAO_ENABLE_FIELD_CACHE, usa el almacenamiento en búfer doble. El otro valor posible es AFX_DAO_DISABLE_FIELD_CACHE. Si especifica este valor, MFC no comprueba este campo. Debe llamar a SetFieldDirty y SetFieldNull usted mismo.

Nota:

Puede controlar si los datos tienen almacenamiento en búfer doble de manera predeterminada estableciendo CDaoRecordset::m_bCheckCacheForDirtyFields.

Comentarios

Los datos se asignan entre el tipo DAO_CHAR en DAO (o, si está definido el símbolo _UNICODE, DAO_WCHAR) y el tipo CString en el conjunto de registros. n

Ejemplo

En este ejemplo, se muestran varias llamadas a DFX_Text. Observe también las dos llamadas a CDaoFieldExchange::SetFieldType. Debe escribir la primera llamada a SetFieldType y su llamada a DFX. Normalmente, el asistente para código que generó la clase escribe la segunda llamada y sus llamadas a DFX asociadas.

void CCustSet::DoFieldExchange(CDaoFieldExchange* pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

Requisitos

Encabezado: afxdao.h

Consulte también

Macros y globales
CRecordset::DoFieldExchange
CRecordset::DoBulkFieldExchange
CDaoRecordset::DoFieldExchange