四:存取结构描述属性 ADO需要使用fields对象集合才能存取结构描述属性而CDO提供一种更简单的方式许多比较一般的结构描述属性都可经由CDO属性来存取如:我们可以存取Person对象中的urn:schema:contacts:HomePhone结构描述属性代码如下: prsHomePhone= 对结构描述属性而言并没有相等的CDO属性必须使用adofields对象集合它具有相同的属性与方法要存取对象集合中的特定属性就要传送完整并且合格的结构描述属性名称若有相同的CDO相关常数(constant)也要一起传递这些常数以cdo开头且包含于CDO函数库中可以使用这些常数以省去传送完整属性名称的麻烦使用CDO常数来传送时其名称并不需要加上引号如下例存取urn:schemas:contacts:FTPSite的属性: prsfields(cdoFtpSite)=somearchiveedu 如果要存取的结构描述属性没有可用的CDO属性或常数就必须传递完整且合格的结构描述属性名称给Fields对象集合下面的例子和上面的程序代码效果相同: prsfields(urn:schemas:contacts:ftpsite)=somearchiveedu 为了使程序更容易读懂当程序中使用的属性不存在CDO属性或没有建立结构描述常数我们应该为应用程序定义自己的常数 五:使用URL 与ADO一样CDO也是依赖于URL以及ExOLEDB provider来存取Web存储系统中的资源所要被存取的资源必须以完整的文件夹路径与显示名称(displayname)建构正确的URL地址如果文件夹路径或项目的显示名称中有空格字符那在URL中也必须保留名称中的任何空格字符 CDO也支持相对的URL用法 六:了解并使用Idatasource介面 IDataSource介面是使用CDO存取WEB存储系统中资源的关键所有的CDO对象经由DataSource属性公开IDataSource介面DataSource属性可以用来在WEB存储系统中开启资源侦测与储存资源的变更以及建立新资源 IDataSource介面的属性与方法下面是IDataSource介面公开的属性和方法 七:IDataSource介面的运作 使用CDO开启一个资源时并非动态的连线到WEB存储系统而是将资料由WEB存储系统中复制一个副本到本机的CDO对象所以实质上您会有两份资料一份再WEB存储系统中另一份再CDO对象中使用CDO对象的属性方法对资料所作的任何改变都是本机上的资料副本而不是WEB存储系统中的资料直到使用IDataSource的储存方法明确地指定要对资料作变更WEB存储系统中的资料才会被变更如不调用一个储存方法则变更的资料副本就会丢失 建立一个新的资源也是同样的道理 八:使用CDO开启一项资源 使用CDO对象中的DataSourceOpen方法它是以recordopen方法为基础的开启资源的方法CDO使用的open方法语法如下: open ( source url as string [activeconnection as object] [mode as connectmodeenum指定record如何被开启])默认以只读方式打开 判断资料来源是否在本机被修改过:IDataSource介面的datasourceisdirty属性(boolean值) 可以使用该属性判断本机的CDO对象是否被变更如果变更则使用datasourcesave方法保存变更 九:使用CDO建立新资源 先为新资源建立一个URL再将新资源的相关信息存储到该URLdatasourcesaveto方法可以让您指定所建立资源的URLURL必须是资源的精确的实际位置还必须包含资源的DAV:displayname Datasourcesaveto方法的语法: Saveto(sourceurl as string [activeconnevtion as object] [mode as connectmodeenum] [createoptions as recordcreateoptionsenum]) Mode指定record如何被开启 Createoptions指定资源如何被建立adcreateoverwrite将会覆盖已经在URL上存在的相同名称的资源项目如果不设这个常数则如果URL已经存在此资源的话将会返回一个错误 Datasourcesavetocontainer方法语法该方法语法和saveto方法相同 两者的区别:saveto方法是具体知名资源项目的URL和DAV:displayname然后将资源项目存放到指定的URL名称为指定的DAV:displayname而savetocontainer方法则是将资源存放到指定的URL资源的DAV:displayname时exchange自动产生的一个名称 该方法的用途:savetrocontainer方法在日程安排建立约会时用得比较多因为日程安排项目很多时常有同名的约会名称我们可能会将前面已经建立的越会覆盖掉为了防止这样的事情发生我们应该采用savetocontainer方法 |