Private Sub Command1_Click()
Property有4个预定义的属性:
·Name属性:是一个字符串,属性的唯一标识。
·Type属性:是一个整型数(Integer),用来指定属性的数据类型。
·Value属性:是一个包含属性设置的Variant类型的值。
·Inherited属性:是一个Boolean值,用来指示属性是否从另一个对象继承而来。
Property对象既有预定义的属性,也有用户定义的属性,在引用时,其格式是不一样的。顶定义属性的引用格式为:
对象.属性
而用户定义的属性必须采用下面的引用格式:
对象.Properties.(“属性”)
【例】编写程序,列出Tables容器中的Documents集合,然后列出集合中的第一个Document对象的Properties集合。
在窗体上画一个命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
用户定义的属性通过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()
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
(2)Replicable属性
Replicable属性用来设置或返回一个值,这个值决定数据库或数据库中的对象是否可以复制(仅Microsoft Jet 工作区)。该属性用于Database对象、Document对象、QueryDef对象和TableDef对象。其设置或返回的值是Text类型。对于Database对象,如果把该属性设置为“T”,则可以复制数据库。设置为“T”后,就不能再改变它,如果把它设置为“F”(或其它非“T”值),则会产生错误。对于数据库中的对象,如果把该属性设置为“T”,则可复制Replicas集合中的所有Replica对象(以及对此对象的更改)。也可以在Microsoft Access的对象属性表中设置该属性。
在设置一个Database,Tab1eDef或QueryDef对象的Replicable属性前,必须先用
CreateProperty方法建立它,并把它加入对象的Properties集合中。例如:
sub CreateReplLocalTableX()
Sub SetReplicable(tdryemp As TableDeD)
用DAO复制数据库的一般步骤如下:
(1)识别数据库中不需要复制的对象,并将它们的KeepLocal属性设置为“T”。
(2)将数据库的Replicable属性设置为“T”,使它变成设计原版。
(3)用MakeReplica方法从设计原版中生成附加的复本。
在设置Replicable属性之前,应先确定在转换数据库以前数据库是否已经被复制。
1.保持对象本地化
当把正常的数据库转换为设计原版时,将复制数据库中的所有对象。如果不想把数据中的所有对象都放在复本集中,则可对不想复制的对象添加并设置KeepLocal属性。例如,果数据库中有一个表,在该表中含有机密的工资信息、初始化信息或登录到数据库的用名,则可能希望不把这些信息放到复本中。在这种情况下,可将该表的KeepLocal属性设为“T”,使得复制数据库时,这些信息不被复制。
对于TableDef 和 QueryDef对象,可以建立keepLocal属性并把它添加到对象的属性集合中。对于由主机应用程序定义的窗体、报表、宏以及模块,可以建立KeepLocal属性并把它添加到表示该对象的Document对象的属性集合中。
注意,在设置keepLocal (以及Rep1icab1e )属性之前,必须先建立它,然后添加到将使用它的对象的属性集合中。如果在建立并添加该属性之前先引用了它,则将产生一个运行时错误。
2.使对象可以复制
如果在复本中建立了一个新对象,并且想把它从本地的改为可复制的,使得其它用户都可以使用它,则需要在设计原版中建立该对象,并且将其Replicab1e属性设置为“T”。在这种情况下,务必删除所有复本中的这个本地对象,否则会产生一个错误。
对于TableDef和QueryDef对象,可以直接建立Replicab1e属性,并添加到对象的属性集合中,就像处理KeepLocal属性那样。而对于由宿主应用程序所定义的窗体、报表、宏和模块,则应建立Replicable属性,然后添加到表示该对象的Document对象的属性集合中。
在下一次同步时,新的可复制对象将出现在集合的其它复本中。类似地,如果想把可复制对象改为本地对象,则应将其Replicab1e属性设置为“F”。和KeepLocal属性一样,如果正在设置Replicab1e属性的对象已经从其它对象继承了这个属性,则其它对象设置的值对这个对象不起作用,必须直接对每个对象设置Rep1icab1e属性。
注意,如果把一个对象的Replicab1e属性从“T”改为“F”,该对象便从可复制状态变为本地的,在这种情况下, Microsoft Jet将只在设计原版中保留该对象,而从复本集的其它复本中删掉。在改变表的可复制状态时,应当格外小心。即使在设计原版中暂时把一个可复制表改变为本地表,然后再改回可复制的,但下次同步时仍然将会在每个复本中删除并重建该表。除非在进行设计变更之前同步所有的复本,否则将会丢失自上次同步以来输入到表中的所有数据。
站长排行
学院
新闻
专栏
盈利
如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13256307008