分享
 
 
 

网络数据库的复制和同步(2)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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集合。

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

Private Sub Command1_Click()

Dim dbsnorthwind As Database

Dim docloop As Document

Dim prploop As Property

Set dbsnorthwind = OpenDatabase("e:f.mdb")

With dbsnorthwind.Containers!tables

Debug.Print "documents in " & .Name & "container"

For Each docloop In .Documents

Debug.Print " " & docloop.Name

Next docloop

With .Documents(0)

Debug.Print "properties of" & .Name & "document"

On Error Resume Next

For Each prploop In .Properties

Debug.Print " " & prploop.Name & "=" & prploop

Next prploop

On Error GoTo 0

End With

End With

dbsnorthwind.Close

End Sub

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

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

set property=对象.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参数的取值

常数

类型

常数

类型

dbBigInt Big整型数 dbGUID GUID

dbBinary 二进制 dbInteger 整型数

dbBoolean 布尔值 dbLong 长整型数

dbByte 字节 dbLongBinary 长二进制(OEL对象)

dbChar 字符 dbMemo Memo

dbCurrency 货币 dbNumeric 数值

dbDate 日期/时间 dbsingle 单精度

dbDecimal 十进制 dbText 文本

dbDouble 双精度 dbTime 时间

dbFloat 浮点数 dbTimeStamp TimeStamp

dbVarBinary VarBinary

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

set MyPro=MyDB.createProperty()

MyPro.Name="NewDefined"

MyPro.Type=dbText

MyPro.Value="这是一个用户定义的属性"

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

MyDB.Properties.Append prpNew

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

Private Sub Command1_Click()

Dim dbsnorthwind As Database

Dim prpnew As Property

Dim prploop As Property

Set dbsnorthwind = OpenDatabase("e:f.mdb")

With dbsnorthwind

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

Set prpnew = .CreateProperty()

prpnew.Name = "userdefinednew"

prpnew.Type = dbText

prpnew.Value = "this is a user_definednew property."

.Properties.Append prpnew

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

Debug.Print "properties of " & .Name

For Each prploop In .Properties

With prploop

Debug.Print " " & Name

Debug.Print " type:" & .Type

Debug.Print " inherited:" & .Inherited

End With

Next prploop

End With

End Sub

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

4.keepLocal属性和Replicable属性

(1)KeepLocal属性

KeepLocal属性用来保持对象的本地化,即在复制数据库时,使指定的对象不被复制。性用于Document对象、QueryDef对象和TableDef对象。其设置或返回的值是Text类如果把该属性设置为“T”,则在复制数据库时可使相应的对象保持为本地对象。对象制后,不能使用KeepLocal属性。在获取或设置TableDef或QueryDef的KeepLocal属性之前,必须先用CreateProperty建立,并把它附加到对象的Properties集合中。

设置了KeepLocal属性后,该属性将出现在Document对象的Properties集合中。KeepLocal通过CreateProperty方法设置。例如:

Dim dbs As Database

Dim docTemp As Document

Dim prpTemp As Property

Set dbs = OpenDatabase(''dbtemp.m4b``)

Set docTemp = dbs.Containers(''Modules'').Docu Functions'')

Set prpTemp = docTemp.Createproperty(''KeepLoc dbText, ''T'')

docTemp.Properties.Append pWTemp

dbs.Close

上面的程序把KeepLocal属性附加到Documeni对象的properties集合中去。必须在数据库变为可复制之前设

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有