预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

10、邦定数据定义一个绑定类,将其成员变量绑定到一个指定的记录集,以方便于访问记录集的字段值。(1).从cadorecordbinding派生出一个类:classccustomrs:publiccadorecordbinding{begin_ado_binding(ccustomrs)ado_variable_length_entry2(3,advarchar,m_szau_fname,sizeof(m_szau_fname),lau_fnamestatus,false)ado_variable_length_entry2(2,advarchar,m_szau_lname,sizeof(m_szau_lname),lau_lnamestatus,false)ado_variable_length_entry2(4,advarchar,m_szphone,sizeof(m_szphone),lphonestatus,true)end_ado_binding()public:charm_szau_fname[22];ulonglau_fnamestatus;charm_szau_lname[42];ulonglau_lnamestatus;charm_szphone[14];ulonglphonestatus;};其中将要绑定的字段和变量名用begin_ado_binding宏关联起来。每个字段对应于两个变量,一个存放字段的值,另一个存放字段的状态。字段用从1开始的序号表示,如1,2,3等等。特别要注意的是:如果要绑定的字段是字符串类型,则对应的字符数组的元素个数一定要比字段长度大2(比如m_szau_fname[22],其绑定的字段au_fname的长度实际是20),不这样绑定就会失败。我分析多出的2可能是为了存放字符串结尾的空字符null和bstr字符串开头的一个字(表示bstr的长度)。这个问题对于初学者来说可能是个意想不到的问题。cadorecordbinding类的定义在icrsint.h文件里,内容是:classcadorecordbinding{public:stdmethod_(constado_binding_entry*,getadobindingentries)(void)pure;};begin_ado_binding宏的定义也在icrsint.h文件里,内容是:#definebegin_ado_binding(cls)public:\typedefclsadorowclass;\constado_binding_entry*stdmethodcalltypegetadobindingentries(){\staticconstado_binding_entryrgadobindingentries[]={ado_variable_length_entry2宏的定义也在icrsint.h文件里:#defineado_variable_length_entry2(ordinal,datatype,buffer,size,status,modify)\{ordinal,\datatype,\0,\0,\size,\offsetof(adorowclass,buffer),\offsetof(adorowclass,status),\0,\classoffset(cadorecordbinding,adorowclass),\modify},#defineend_ado_binding宏的定义也在icrsint.h文件里:#defineend_ado_binding(){0,adempty,0,0,0,0,0,0,0,false}};\returnrgadobindingentries;}(2).绑定_recordsetptrrs1;iadorecordbinding*picrs=null;ccustomrsrs;......rs1->queryinterface(__uuidof(iadorecordbinding),(lpvoid*)&picrs));picrs->bindtorecordset(&rs);派生出的类必须通过iadorecordbinding接口才能绑定,调用他的bindtorecordset方法就行了。(3).rs中的变量即是当前记录字段的值//setsortandfiltercondition://step4:manipulatethedatars1->fields->getitem("au_lname")->properties->getitem("optimize")->value=true;rs1->sort="au_lnameasc";rs1->filter="phonelike4