阿七 |
2006-04-06 09:10 |
同步(Synchronization)是数据库在网络环境中应用所要涉及到的一个重要概念。其基本过程大致分以下几个步骤:首先把一个数据库设为可复制副本属性,使其成为设计正本(VB中称设计原版,ACCESS中称设计母版);然后根据应用程序的实现需要从设计正本复制出多个副本(VB中称复本),这些副本组成一个副本集合(设计正本也被看做是第一个的、初始的副本);最后在集中任何复本的数据或结构被更改会时启用同步机制把改变发送并且应用于此复本集中的其他成员,使得副本集中的成员在数据或结构上保持一致性。实现同步的这一过程被称为同步化。VB6.0为实现同步,在数据库对象中提供了多个属性与方法来实现这一过程,以下介绍主要的几个属性与方法,分别对应同步化的几个步骤: Ip7FD9
^ 1.Replicable属性: $cJN9|$6 Replicable属性用来使一个数据库对象或数据库中的表对象、查询对象等对象成为可复制副本的,即成为设计正本。但数据库对象并不提供Replicable这一属性,因此首先要用CreatePropety方法来创建它,然后把它添加到对象的属性集中,最后再给它赋值,使数据库成为设计正本。对于数据库对象而言,把Replicable属性设置为“T”将使数据库对象成为可复制的。以下代码将使VB6.0安装目录下附带的Nwind.mdb数据库成为一个设计正本(为确保安全建议在操作前备份这一库文件): k+
q6U[ce Private Sub Command1_Click() XoxR5arj Dim dbNwind As Database PgG |7=' ’如果末引用DAO则一定要先引用 ?N!j.E4= Dim prpNew As Property Hdq/E>u Set dbNwind = OpenDatabase("Nwind.mdb", True) SX?$H~A With dbNwind N>
}K+M> ’建立Replicable属性,如果已经存在该属性则程序略过这一步 J6[
"
j On Error Resume Next \'LC C- Set prpNew = .CreateProperty("Replicable", dbText, "T") l-^XW?CfL .Properties.Append prpNew Ni@e/|
2b ’设置数据库的Replicable属性为True _!^FW% .Properties("Replicable") = "T" Bc|x:#`C\{ .Close Tx!m6B`Y End With B]KLn?zt5 End Sub 'Rh>w=wB' 2.MakeReplica方法: Ae_ E;[mj MakeReplica方法从设计正本复制出一个新的完全副本。其语法为:database.MakeReplica replica, description, options,其中replica是代表一个新副本路径名称的字符串;description是对正在创建的新副本的一个描述字符串;options是一个可选项,可dbRepMakePartial常量(创建一个部分副本)或dbRepMakeReadOnly常量(防止用户修改新副本中的可复制对象),如果要建立的是一个只读式的部分副本,则要加入参数常量dbRepMakeReadOnly + dbRepMakePartial 。 dYqDL<se/I 在第一个例子中,在关闭数据库之前加入代码:.MakeReplica "NwReplica", "replica of nwind.mdb",则从Nwind.mdb设计正本复制出一个名为NwReplica.mdb的副本,位置在Nwind.mdb同一目录中。以下是一个通过传递参数的形式,在实际应用中可供灵活调用的函数,每调用该函数一次即可实现新建一个副本: ][5p.owJse Function MakeAdditionalReplica(strReplicableDB As String, strNewReplica As 8(_g] u#B; String, intOptions As Integer) As Integer 5B.??;xtaV Dim dbsTemp As Database /GSI.tO On Error GoTo ErrorHandler N
evvA(M Set dbsTemp = OpenDatabase(strReplicableDB) .sR&9FH ’ 如果在调用此函数时,intOptions处末给出参数, 则忽略该参数项, OI}HvgV^! ’默认建立一个完全的、可读/写的副本,否则就利用提供的参数按要求建立副本 Y&Lk4 If intOptions = 0 Then %^%-h}1 dbsTemp.MakeReplica strNewReplica, "Replica of " & strReplicableDB K<w5[E9V. Else K
y4y dbsTemp.MakeReplica strNewReplica, "Replica of " & strReplicableDB, *4^]?Y\* intOptions /bu<,o End If JHZo:Ad -& dbsTemp.Close %+!9 ErrorHandler: ?jm2|: Select Case Err #:zPpMAl Case 0: h_G7T1;L MakeAdditionalReplica = 0 r=||sZs Exit Function _w/N[E Case Else: d
lLk4a+ MsgBox "Error " & Err & " : " & Error >`|uc MakeAdditionalReplica = Err 0fK|}mmZA Exit Function +&zC | |