复制数据库(1)--网络数据库的复制和同步(5)
2018-06-17 17:16:20来源:未知 阅读 ()
MicrosoftJet数据库引擎不允许用数据库密码来保护复制数据库。在开始使用复本之前,必须先从将要复制的数据库中删去所有数据库密码保护。设置用户权限与复本同步没有冲突。
用DAO复制数据库的一般步骤如下:
(1)识别数据库中不需要复制的对象,并将它们的KeepLocal属性设置为“T”。
(2)将数据库的Replicable属性设置为“T”,使它变成设计原版。
(3)用MakeReplica方法从设计原版中生成附加的复本。
在设置Replicable属性之前,应先确定在转换数据库以前数据库是否已经被复制。
1.保持对象本地化
当把正常的数据库转换为设计原版时,将复制数据库中的所有对象。如果不想把数据中的所有对象都放在复本集中,则可对不想复制的对象添加并设置KeepLocal属性。例如,果数据库中有一个表,在该表中含有机密的工资信息、初始化信息或登录到数据库的用名,则可能希望不把这些信息放到复本中。在这种情况下,可将该表的KeepLocal属性设为“T”,使得复制数据库时,这些信息不被复制。
对于TableDef和QueryDef对象,可以建立keepLocal属性并把它添加到对象的属性集合中。对于由主机应用程序定义的窗体、报表、宏以及模块,可以建立KeepLocal属性并把它添加到表示该对象的Document对象的属性集合中。
注意,在设置keepLocal(以及Rep1icab1e)属性之前,必须先建立它,然后添加到将使用它的对象的属性集合中。如果在建立并添加该属性之前先引用了它,则将产生一个运行时错误。
【例】编写一个Function过程,对数据库中指定的对象进行本地化处理。
FunctionSetKeepLocal(dbsAsDatabase,strCollectionAsString,stffobJectAsString)Asinteger
DimiAsInteger
DimblnMatchAsBoolean
DimtdfAsTableDef
DimPrPAsProperty
DimdocAsDocument
DimqdfAsQueryDef
OnErrorGoToErrorHandler
SelectCasestalollection
Case"FormS","RelpOrtS",''MOdllleS'',''SCriptS`'
Setdoc=dbs.Containers(strCollection).Documents(strObject)
Setprp=doc.Createproperty("KeepLocal",dbText,`'T'')
doc.Properties.Appendprp
Case"TableDefs"
Settdf=dbs.TableDefs(strObJect)
Setprp=tdfCreateproperty(''KeepLocal'',dbText,''T'')
tdfprol)etties.Appendprp
Case''QuecyDefs'`
Setqdf=dbs.QueryDefs(sbrobject)
Setprp=qdf.Createproperty("KeepLocal",dbText,"T")
qdf.properties.AppendPrP
EndSelect
ErrorHandler:
SelectCaseErr
Case0
case3265'对象未发现
SetKeepLocal=3265
ExitFunction
'属性已经存在,把它设置为“T”
Case3367
SelectCasesttoollection
CSSel''Forms'',''RelportS'',``Modlules'',''ScriptS'`
doc.Properties(''KeepLocal'`).Value=`'T'`
Case''TableDefs'`
tdf.Properties(''KeepLocal'').Value=`'T'`
Case''QueryDefs'`
qdf.Properties(''KeepLocal'').Value=''T'`
ExitFunction
EndSelect
SetKeepLocal=0
ExitFunction
CaseElse
MsgBOx''Error''&Err&":",&Error,vbOKOnly
SetKeepLocal=-1
ExitFunction
EndSelect
EndFunction
用上述过程可以对指定数据库对象建立并添加KeepLocal属性,如果该属性已经存在,则将产生代码为3367的错误,在这种情况下,将在错误处理程序中把该属性的值设置为“T”
该过程有3个参数,其中第一个参数是Database对象,第二个参数是集合的名字,第三个参数是数据库中的对象名。过程的返回值是一个整型数,它实际上是一个错误代码。为了调用上面的过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程:
PrivateSubCommand1_Click()
DimMyDbAsDatabase
DimaAsinteger
SetMyDb=OpenDatabase(''c:\dbdir\db1.mdb'')
a=SetKeepLocal(MyDb,''TableDefs'',''Tabel1'')
Ifa=0Then
MsgBox"已成功设置KeepLocal属性"
Elselfa=3265Then
MsgBox"对象未找到"
Elselfa=3367Then
MsgBox"KeepLocal属性已存在,设置为“T”
Else
MsgBox“出错”
Endlf
Endsub
该事件过程调用SetKeepLocal过程,用来建立并设置数据库db1.mdb的TableDefs集合中Tabel1对象的KeepLocal属性。
如果已经在数据库的两个表之间建立起关系,则必须将两个表的keepLocal属性设置为相同的值,即两个表都必须是本地的或者是可复制的。如果两个表的keepLocal属性设置不一样,则转换将会失败。但是应注意,不能在关系有效时设置keepLocal属性,也就是说,在设置属性之前,应先删除两个表之间的关系,在设置好KeepLocal属性之后再恢复两个表之间的关系,然后继续进行数据库转换。
如果正在设置KeepLocal属性的对象已经从其它对象中继承了该属性,则由其它对象设置的值对保留为本地对象的操作没有影响,必须直接为每个对象设置keepLocal属性。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:静态变量慢于动态变量
- 设置对VisualBasic数据库连接的动态路径 2018-06-17
- VB游戏写作技巧(2)网络篇 2018-06-17
- 做个“网络助手”程序 2018-06-17
- 在VB中更改SQLServer数据库结构 2018-06-17
- 数据访问控制--多客户环境下VB数据库编程之(2) 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash