记录字段交换函数
这个主题列出了记录字段交换函数(RFX, Bulk RFX, 以及DFX) ,它们被用于自动完成在记录集对象和它的数据源之间的数据传送,同时还能执行对数据的一些操作。
如果你正在使用基于ODBC的类,并且你已经实现了多行记录成组获取,你一定手动重载了CRecordset的成员函数DoBulkFieldExchange,在其中对与数据源中的每一个列相对应的数据成员调用了成组RFX函数。
如果你的基于ODBC的类中还没有实现多行记录成组获取,或者你使用的是基于DAO 的类,那么ClassWizard 将会重载CRecordset 或 CDaoRecordset 的成员函数 DoFieldExchange,在其中对你的记录集中的每个数据字段成员调用RFX函数(如果是ODBC类)或者DFX函数(如果是DAO类)。
当框架每一次调用DoFieldExchange或者DoBulkFieldExchange的时候,记录字段交换函数就传送一次数据。每个函数传送一种特定类型的数据。
如果需要获得有关如何使用这些函数的更详细的说明,可以参阅“记录字段交换:RFX如何工作”;或者“DAO记录字段交换:DFX如何工作”。如果需要有关成组记录获取的更详细的信息,可以参阅下述文章:“成组记录获取(ODBC)”。这些文章可以在《Visual C++程序员指南》中找到。
对于动态绑定的数据列,你也可以自己调用RFX或DFX函数,而不是利用ClassWizard,在“Recordset:动态绑定数据列(ODBC)”和“DAO:动态绑定记录”中对此作了解释。这些文章可以在《Visual C++程序员指南》中找到。注意,在DAO中动态绑定数据与ODBC中的动态绑定有所不同。另外,你也可以编写自己的RFX或DFX例程,在技术注释文档的第43篇(针对ODBC)和第53篇(针对DAO)中对此作了解释。
如果需要获得在DoFieldExchange和DoBulkFieldExchange中使用RFX和DFX函数的例子,可以参看RFX_TextRFX_Text_Bulk。DFX函数与RFX函数十分类似。

RFX函数(ODBC)
RFX_Binary传送CByteArray类型的字节数
RFX_Bool传送布尔数据
RFX_Byte传送单个的字节数据
RFX_Date传送CTime或TIMESTAMP_STRUCT类型的时间和日期数据
RFX_Double传送双精度浮点数据
RFX_Int传送整型数据
RFX_Long传送长整型数据
RFX_LongBinary通过CLongBinary类的对象传送二进制大对象(BLOB)数据
RFX_Single传送浮点数据
RFX_Text传送字符串数据

Bulk RFX函数(ODBC)
RFX_Binary_Bulk传送二进制数据的数组
RFX_Bool_Bulk传送布尔数据的数组
RFX_Byte_Bulk传送字节数据的数组
RFX_Date_Bulk传送TIMESTAMP_STRUCT类型数据的数组
RFX_Double_Bulk传送双精度浮点数据的数组
RFX_Int_Bulk传送整型数据的数组
RFX_Long_Bulk传送长整型数据的数组
RFX_Single_Bulk传送浮点数据的数组
RFX_Text_Bulk传送LPSTR类型数据的数组

DFX函数(DAO)
DFX_Binary传送CByteArray类型的字节数组
DFX_Bool传送布尔型数据
DFX_Byte传送单个字节数据
DFX_Currency传送COleCurrency类型的货币数据
DFX_DateTime传送COleDateTime类型的时间和日期数据
DFX_Double传送双精度浮点数据
DFX_Long传送长整型数据
DFX_LongBinary通过CLongBinary类的对象传送大二进制对象(BLOB)数据,对于DAO,推荐你使用DFX_Binary
DFX_Short传送短整型数据
DFX_Single传送浮点数据
DFX_Text传送字符串数据。

请参阅:
CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CDaoRecordset::DoFieldExchange