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