| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
|
如果在复本中建立了一个新对象,并且想把它从本地的改为可复制的,使得其它用户都可以使用它,则需要在设计原版中建立该对象,并且将其replicab1e属性设置为“t”。在这种情况下,务必删除所有复本中的这个本地对象,否则会产生一个错误。 对于tabledef和querydef对象,可以直接建立replicab1e属性,并添加到对象的属性集合中,就像处理keeplocal属性那样。而对于由宿主应用程序所定义的窗体、报表、宏和模块,则应建立replicable属性,然后添加到表示该对象的document对象的属性集合中。 在下一次同步时,新的可复制对象将出现在集合的其它复本中。类似地,如果想把可复制对象改为本地对象,则应将其replicab1e属性设置为“f”。和keeplocal属性一样,如果正在设置replicab1e属性的对象已经从其它对象继承了这个属性,则其它对象设置的值对这个对象不起作用,必须直接对每个对象设置rep1icab1e属性。 注意,如果把一个对象的replicab1e属性从“t”改为“f”,该对象便从可复制状态变为本地的,在这种情况下, microsoft jet将只在设计原版中保留该对象,而从复本集的其它复本中删掉。在改变表的可复制状态时,应当格外小心。即使在设计原版中暂时把一个可复制表改变为本地表,然后再改回可复制的,但下次同步时仍然将会在每个复本中删除并重建该表。除非在进行设计变更之前同步所有的复本,否则将会丢失自上次同步以来输入到表中的所有数据。 3.构造设计原版 设计原版也是一个数据库复本,但它是一个可以复制的复本。为了把一个数据库变为设计原版,需要为database对象建立rep1icab1e属性,并把该属性添加到database对象的属性集合中,然后将其replicab1e属性设置为“t”。 【例】编写一个function过程,把指定的数据库变为设计原版。 过程如下: public function setreplicable(strdb as string)as integer dim prpreplicable as property dim dbstarget as database n error goto errorhandler set dbstarget = opendatabase(strdb,true) ‘若属性已存在,则关闭错误处理 on error resume next ' 创建replicable 属性 set prpreplicable =dbstarget.createproperty( "replicable", dbtext, ''t'`) '把该属性添加到属性集合中 dbstarget.properties.append prpreplicable '把该属性设置为"t" dbstarget.properties("replicable")= ''t'' setreplicable = 0 errorhandler: select case err case 0 setreplicable = 0 exit function case else msgbox "error" & err ":" & error setreplicable = -1 exit function end select nd function 上述过程把指定的数据库转换为设计原版。如果rep1icab1e属性不存在,则建立该属性,井把它设置为指定的值。 为了调用上述过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程: private sub conunandl_click() dim mydb as database dim a as integer a = setreplicable(''c:\dbdir\dbl .mdb``) if a = 0 then msgbox "成功设置replicable 属性" else msgbox "设置失败" end if end sub 运行程序,单击命令按钮,将调用setreplicable过程,为指定的数据库添加和设置replicab1e属性,并根据执行情况显示相应的信息。在转换进程中,microsoft jet将维持原始数据库的所有属性设置值。 当把数据库的replicable属性设置为“t”,从而将数据库转换成设计原版时,在复本集中只有一个复本(即设计原版),只能用它来生成第一个复本。可以用makereplica方法来生成第一个复本和后续的复本。 用设计原版生成数据库的第一个复本后,可以用集合中的任一复本来生成另外的复本。事实上,在复本集中增加数据库新备份的唯一途径,就是从一个现存的复本来建立它们。一旦立好,新复本即成为复本集的一部分。所有复本都有唯一的标识,并能相互通信和同步。每个复本集与所有其它复本集是互相独立的,不同复本集的复本不能相互通信或同步。 注意,在原始数据库的备份被变成设计原版之前,不要用它来生成另外的复本。否则,生成的将不是另外的复本,而是新的设计原版和复本集。 【例】编写一个过程,用来生成数据库复本。 过程如下: function makeadditionalreplica(strreplica as string, strnewreplica as string, intoptions as integer) as integer dim dbs as database on error goto errorhandler set dbs = opendatabase(strreplicabledb) '如果没有选项传递给makeadditionalreplilca, '就忽略选项参数,该选项参数的缺省值是完全的,读/写复本; '否则,使用intoptions的值 if intoptions = 0 then dbs.makereplica strnewreplica, "replica of " & strreplicabledb else dbs.makereplica strnewreplica, "replica of " & strreplicabledb, intoptions end if dbs.close rrorhandler: select case err case 0: makeadditionalreplica = 0 exit function case else: msgbox"error" & err ":" & error makeadditionalreplica =-1 exit function end select end function 上述过程可以从一个数据库复本生成一个新的复本。该过程有3个参数,其中第一个参数是数据库复本的文件名,第二个参数是新生成的数据库复本的文件名,第三个参数,即intoptions,可以是dao常数dbrepmakereadonly和dbrepmakepartial的组合,也可以是0。 dbrepmakereadonly常数表示复本是只读的,而dbrepmakepartial常数表示复本是部分复本,不是完全复本。例如,为了建立一个只读部分复本,在调用过程makeadditionalreplica时,应当把dbrepmakereadon1y + dbrepmakepartial的值传递给intoptions参数。如果intoptions参数是0,则过程将建立一个完全的读/写复本,因为忽略了makereplica方法中的options参数。 为了调用上述过程建立数据库复本,可以在窗体上画一个命令按钮,然后编写如下的事件过程: private sub command1_click() a=makeadditionalreplica("c:\dbdir\dblcopy1. mdb","c:\dbdir\dblcopy2.mdb",0) if a=o then msgbox"己生成数据库复本" else msgbox“操作失败” end lf end sub 过程中的dblcopy1.mdb 是数据库db1.mdb的复本,而dblcopy2.mdb是dblcopyl.mdb的复本。运行程序,单击命令按钮,将建立一个完全的读/写复本。 当microsoft jet建立新复本时,新复本将包含源复本的所有数据定义语言属性设置值。后续的复本可以由设计原版或集合中的任一复本来生成。 在用makerep1ica方法复制数据库时,正在复制的对象一定不能是锁定的,否则方法的调用会失败。如果一个对象以设计模式打开或在同步期间被更新,则该对象会被microsoft jet锁定。在实际的程序设计中,一定要注意这一点,不要试图从拥有锁定对象的数据库来生成复本。 注意,生成一个新复本后,将把源复本中的所有可复制对象和属性复制到新复本中。虽然所有链接表也被复制,但如果新复本位于网络上,链接表的路径可能会不正确。因此,一定要对新复本进行测试,以确定是否需要为链接表建立新路径。 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:网络数据库的复制和同步(5) 下一篇:数据库的查询优化技术 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 相关文章 | ||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||