WEB开发网
开发学院WEB开发综合 复本操作的对象、属性和方法(2)--网络数据库的复... 阅读

复本操作的对象、属性和方法(2)--网络数据库的复制和同步(3)

 2006-02-27 11:48:10 来源:WEB开发网   
核心提示:3.PRoperty对象与Properties集合Property对象用来描述一个DAO对象的内部属性或用户定义属性,与DAO对象及Properties集合的关系为DAO对象包含Properties集合,复本操作的对象、属性和方法(2)--网络数据库的复制和同步(3),Properties集合包含property对象,
3.PRoperty对象与Properties集合

Property对象用来描述一个DAO对象的内部属性或用户定义属性,与DAO对象及Properties集合的关系为DAO对象包含Properties集合,Properties集合包含property对象。(其关系详见VB帮助文件)

除Connection和Error对象外,每个DAO对象都含有一个property集合,在该集合中有与相应的DAO对象的内部属性一致的Property对象。同时,用户可以定义Property对象并将其加入某些下列DAO对象的Properties集合:
·Database,Index,QueryDef和TableDef对象
·TableDef对象和QueryDef对象的Fields集合中的Field对象
Property有4个预定义的属性:
·Name属性:是一个字符串,属性的唯一标识。
·Type属性:是一个整型数(Integer),用来指定属性的数据类型。
·Value属性:是一个包含属性设置的Variant类型的值。
·Inherited属性:是一个Boolean值,用来指示属性是否从另一个对象继承而来。
Property对象既有预定义的属性,也有用户定义的属性,在引用时,其格式是不一样的。顶定义属性的引用格式为:
对象.属性
而用户定义的属性必须采用下面的引用格式:
对象.Properties.(“属性”)

【例】编写程序,列出Tables容器中的Documents集合,然后列出集合中的第一个Document对象的Properties集合。

在窗体上画一个命令按钮,然后编写如下事件过程:

PrivateSubCommand1_Click()
DimdbsnorthwindAsDatabase
DimdocloopAsDocument
Dimprploopasproperty
Setdbsnorthwind=OpenDatabase("e:\f.mdb")
Withdbsnorthwind.Containers!tables
Debug.Print"documentsin"&.Name&"container"
ForEachdocloopIn.Documents
Debug.Print""&docloop.Name
Nextdocloop
With.Documents(0)
Debug.Print"propertiesof"&.Name&"document"
OnErrorResumeNext
ForEachprploopIn.Properties
Debug.Print""&prploop.Name&"="&prploop
Nextprploop
OnErrorGoTo0
EndWith
EndWith
dbsnorthwind.Close
EndSub

程序的前半部分与前面的例子相同,后半部分列出第一个Document对象(即Documents(0)的Properties集合。运行程序,单击命令按钮,即可在“立即”窗口中列出上述内容。

用户定义的属性通过CreateProperty方法来定义,用该方法可以建立由用户定义的Property对象(仅MicrosoftJet工作区),用于Database,Document,Field,Index,QueryDef和TableDef对象。其格式为:

setproperty=对象.CreateProperty(name,type,value,DDL)

各参数的含义如下:

·property:对象变量,要建立的Property对象。
·Object:对象变量,可以是Database,Field,Index,QueryDef和TableDef对象,可以对这些对象建立Property对象。
·name:可选。variant类型(字符串子型),唯一地命名新的Property对象。
·type:可选。常数,定义新Property对象的类型。
·value:可选。variant类型,指定属性的初值。
·DDL:可选。Variant类型(Boolean子型),用来指示该属性是否是一个DDl对象,缺省值为False。如果DDL为True,则不能删除这个property对象(除非得到dbsecWriteDef的允许)。

说明:

1.)只能在一个永久对象的Property集合中建立用户定义的Property对象。在用CreateProperty方法建立Property对象时,如果省略了一个或多个可选参数,则可在向一个集合追加新的对象之前,用赋值语句设置或重新设置相应的属性。在向集合中追加新的对象之后,可以改变其属性设置的一部分(不是全部)。

2.)如果name参数指的是该集合中已经存在的对象成员,则当用Append方法追加时,将会出现错误。

3.)为了从集合中删除一个由用户定义的属性对象,可以用集合的Delete方法来实现。该方法只能删除用户定义的对象,不能删除预定义属性。

4.)如果省略了DDL参数,则缺省为False(即非DDL)。在这种情况下,没有出现相应的DDL属性,如果需要将一个Property对象由DDL变为DDL,则必须先删除,然后再重新建立。

5.)CreateProperty方法中的type参数是一个符号常量,它是Property对象的设置值或返回值,其可能的取值见表3

type参数的取值

常数类型常数类型
dbBigIntBig整型数dbGUIDGUID
dbBinary二进制dbInteger整型数
dbBoolean布尔值dbLong长整型数
dbByte字节dbLongBinary长二进制(OEL对象)
dbChar字符dbMemoMemo
dbCurrency货币dbNumeric数值
dbDate日期/时间dbsingle单精度
dbDecimal十进制dbText文本
dbDouble双精度dbTime时间
dbFloat浮点数dbTimeStampTimeStamp
dbVarBinaryVarBinary

(表3)

设MyDB是一个Database对象变量,MyPro是一个Property对象变量,则可以用下面的程序建立Property对象:

setMyPro=MyDB.createProperty()
MyPro.Name="NewDefined"
MyPro.Type=dbText
MyPro.Value="这是一个用户定义的属性"

可以用下面的语句把新建立的属性加到Properties集合中:

MyDB.Properties.AppendprpNew

【例】编写程序,建立用户定义的Property对象,并把它加到Properties集合中。在窗体上画一个命令按钮,然后编写如下的事件过程。

PrivateSubCommand1_Click()
DimdbsnorthwindAsDatabase
DimprpnewAsProperty
DimprploopAsProperty
Setdbsnorthwind=OpenDatabase("e:\f.mdb")
Withdbsnorthwind

'建立并添加用户定义的属性

Setprpnew=.CreateProperty()
prpnew.Name="userdefinednew"
prpnew.Type=dbText
prpnew.Value="thisisauser_definednewproperty."
.Properties.Appendprpnew

'列出当前数据库的所有属性

Debug.Print"propertiesof"&.Name
ForEachprploopIn.Properties
Withprploop
Debug.Print""&Name
Debug.Print"type:"&.Type
Debug.Print"inherited:"&.Inherited
EndWith
Nextprploop
EndWith
EndSub

上述程序建立了一个名为userdefinednew的属性,其类型为dbText,初值为“thisisauser_definednewproperty。”运行程序,单击按钮,将建立该属性,并在立即窗口中显示当前数据库的所有属性。(包括新建立的属性)->

Tags:复本 操作 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接