麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

復制數(shù)據(jù)庫(2)--網絡數(shù)據(jù)庫的復制和同步(6)

2019-11-18 17:45:54
字體:
來源:轉載
供稿:網友
2.使對象可以復制

如果在復本中建立了一個新對象,并且想把它從本地的改為可復制的,使得其它用戶都可以使用它,則需要在設計原版中建立該對象,并且將其Replicab1e屬性設置為“T”。在這種情況下,務必刪除所有復本中的這個本地對象,否則會產生一個錯誤。

對于TableDef和QueryDef對象,可以直接建立Replicab1e屬性,并添加到對象的屬性集合中,就像處理KeepLocal屬性那樣。而對于由宿主應用程序所定義的窗體、報表、宏和模塊,則應建立Replicable屬性,然后添加到表示該對象的Document對象的屬性集合中。

在下一次同步時,新的可復制對象將出現(xiàn)在集合的其它復本中。類似地,如果想把可復制對象改為本地對象,則應將其Replicab1e屬性設置為“F”。和KeepLocal屬性一樣,如果正在設置Replicab1e屬性的對象已經從其它對象繼承了這個屬性,則其它對象設置的值對這個對象不起作用,必須直接對每個對象設置Rep1icab1e屬性。

注意,如果把一個對象的Replicab1e屬性從“T”改為“F”,該對象便從可復制狀態(tài)變?yōu)楸镜氐模谶@種情況下,MicrosoftJet將只在設計原版中保留該對象,而從復本集的其它復本中刪掉。在改變表的可復制狀態(tài)時,應當格外小心。即使在設計原版中暫時把一個可復制表改變?yōu)楸镜乇恚缓笤俑幕乜蓮椭频模麓瓮綍r仍然將會在每個復本中刪除并重建該表。除非在進行設計變更之前同步所有的復本,否則將會丟失自上次同步以來輸入到表中的所有數(shù)據(jù)。

3.構造設計原版

設計原版也是一個數(shù)據(jù)庫復本,但它是一個可以復制的復本。為了把一個數(shù)據(jù)庫變?yōu)?br>
設計原版,需要為Database對象建立Rep1icab1e屬性,并把該屬性添加到Database對象的

屬性集合中,然后將其Replicab1e屬性設置為“T”。

【例】編寫一個Function過程,把指定的數(shù)據(jù)庫變?yōu)樵O計原版。

過程如下:

PublicFunctionSetReplicable(strDBAsString)Asinteger
DimPRpReplicableasproperty
DimdbsTargetAsDatabase
OnErrorGoToErrorHandler
SetdbsTarget=OpenDatabase(strDB,True)

‘若屬性已存在,則關閉錯誤處理

OnErrorResumeNext

'創(chuàng)建Replicable屬性

SetprpReplicable=dbsTarget.Createproperty("Replicable",dbText,''T'`)

'把該屬性添加到屬性集合中

dbsTarget.Properties.AppendprpReplicable

'把該屬性設置為"T"

dbsTarget.PrOperties("Replicable")=''T''
SetReplicable=0
ErrorHandler:
SelectCaseErr
Case0
SetReplicable=0
ExitFunction
CaseElse
MsgBox"Error"&Err":"&Error
SetReplicable=-1
ExitFunction
EndSelect
EndFunction
上述過程把指定的數(shù)據(jù)庫轉換為設計原版。如果Rep1icab1e屬性不存在,則建立該屬性,井把它設置為指定的值。

為了調用上述過程,可以在窗體上畫一個命令按鈕,然后編寫如下的事件過程:

PrivateSubConunandl_Click()
DimMyDBAsDatabase
DimaAsinteger
a=SetReplicable(''c:/dbdir/dbl.mdb``)
Ifa=0Then
MsgBox"成功設置Replicable屬性"
Else
MsgBox"設置失敗"
Endif
Endsub

運行程序,單擊命令按鈕,將調用SetReplicable過程,為指定的數(shù)據(jù)庫添加和設置Replicab1e屬性,并根據(jù)執(zhí)行情況顯示相應的信息。在轉換進程中,MicrosoftJet將維持原始數(shù)據(jù)庫的所有屬性設置值。

4.用復本生成復本

當把數(shù)據(jù)庫的Replicable屬性設置為“T”,從而將數(shù)據(jù)庫轉換成設計原版時,在復本集中只有一個復本(即設計原版),只能用它來生成第一個復本。可以用MakeReplica方法來生成第一個復本和后續(xù)的復本。

用設計原版生成數(shù)據(jù)庫的第一個復本后,可以用集合中的任一復本來生成另外的復本。事實上,在復本集中增加數(shù)據(jù)庫新備份的唯一途徑,就是從一個現(xiàn)存的復本來建立它們。一旦立好,新復本即成為復本集的一部分。所有復本都有唯一的標識,并能相互通信和同步。每個復本集與所有其它復本集是互相獨立的,不同復本集的復本不能相互通信或同步。

注意,在原始數(shù)據(jù)庫的備份被變成設計原版之前,不要用它來生成另外的復本。否則,生成的將不是另外的復本,而是新的設計原版和復本集。

【例】編寫一個過程,用來生成數(shù)據(jù)庫復本。

過程如下:

FunctionMakeAdditionalReplica(strReplicaAsString,strNewReplicaAsString,intOptionsAsInteger)Asinteger
DimdbsAsDatabase
OnErrorGoToErrorHandler
Setdbs=OpenDatabase(strReplicableDB)
'如果沒有選項傳遞給MakeAdditionalReplilca,
'就忽略選項參數(shù),該選項參數(shù)的缺省值是完全的,讀/寫復本;
'否則,使用intoptions的值
IfintOptions=0Then
dbs.MakeReplicastrNewReplica,"Replicaof"&strReplicableDB
Else
dbs.MakeReplicastrNewReplica,"Replicaof"&strReplicableDB,intOptions
Endif
dbs.Close
ErrorHandler:
SelectCaseErr
Case0:
MakeAdditionalReplica=0
ExitFunction
CaseElse:
MsgBox"error"&err":"&Error
MakeAdditionalReplica=-1
Exitfunction
Endselect
Endfunction

上述過程可以從一個數(shù)據(jù)庫復本生成一個新的復本。該過程有3個參數(shù),其中第一個參數(shù)是數(shù)據(jù)庫復本的文件名,第二個參數(shù)是新生成的數(shù)據(jù)庫復本的文件名,第三個參數(shù),即intOptions,可以是DAO常數(shù)dbRepMakeReadOnly和dbRepMakePartial的組合,也可以是0。dbRepMakeReadOnly常數(shù)表示復本是只讀的,而dbRepMakePartial常數(shù)表示復本是部分復本,不是完全復本。例如,為了建立一個只讀部分復本,在調用過程MakeAdditionalReplica時,應當把dbRepMakeReadon1y+dbRepMakePartial的值傳遞給intOptions參數(shù)。如果intOptions參數(shù)是0,則過程將建立一個完全的讀/寫復本,因為忽略了MakeReplica方法中的options參數(shù)。

為了調用上述過程建立數(shù)據(jù)庫復本,可以在窗體上畫一個命令按鈕,然后編寫如下的事件過程:

PrivateSubCommand1_Click()
A=MakeAdditionalReplica("c:/dbdir/dblcopy1.mdb","c:/dbdir/dblcopy2.mdb",0)
ifa=oThen
MsgBox"己生成數(shù)據(jù)庫復本"
Else
MsgBox“操作失敗”
Endlf
Endsub

過程中的dblcopy1.mdb是數(shù)據(jù)庫db1.mdb的復本,而dblcopy2.mdb是dblcopyl.mdb的復本。運行程序,單擊命令按鈕,將建立一個完全的讀/寫復本。

當MicrosoftJet建立新復本時,新復本將包含源復本的所有數(shù)據(jù)定義語言屬性設置值。后續(xù)的復本可以由設計原版或集合中的任一復本來生成。

在用MakeRep1ica方法復制數(shù)據(jù)庫時,正在復制的對象一定不能是鎖定的,否則方法的調用會失敗。如果一個對象以設計模式打開或在同步期間被更新,則該對象會被MicrosoftJet鎖定。在實際的程序設計中,一定要注意這一點,不要試圖從擁有鎖定對象的數(shù)據(jù)庫來生成復本。

注意,生成一個新復本后,將把源復本中的所有可復制對象和屬性復制到新復本中。雖然所有鏈接表也被復制,但如果新復本位于網絡上,鏈接表的路徑可能會不正確。因此,一定要對新復本進行測試,以確定是否需要為鏈接表建立新路徑。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九九精品在线观看 | 欧美日韩亚洲一区二区三区 | 黄色羞羞视频在线观看 | 亚洲乱操 | 久久久久中精品中文字幕19 | 日美av在线 | 成人免费入口 | 超碰在线97国产 | 亚洲成人精品在线 | 369看片你懂的小视频在线观看 | 史上最强炼体老祖动漫在线观看 | 蜜桃av网 | 色骚综合 | 久久久久久久.comav | 极品国产91在线网站 | 91 成人| 国产va在线观看免费 | 久久国产精品久久久久久 | 亚洲欧美国产精品va在线观看 | 日日操夜夜操视频 | 高清中文字幕在线 | 日韩欧美动作影片 | 国产亚洲黑人性受xxxx精品 | 羞羞的视频免费观看 | 日本黄色免费观看视频 | 久久九九热re6这里有精品 | 久久国产乱子伦精品 | 久久伊人精品视频 | 久久亚洲精品久久国产一区二区 | 欧美一级淫片免费播放口 | 欧美毛片在线观看 | 免费啪啪 | 中文字幕网在线 | 亚洲看片网| 精品久久久久久久久久久久包黑料 | 精品国产一区二区三区久久久蜜月 | 亚洲一区二区三区高清 | 久草在线精品观看 | 黄色网址免费在线 | 亚洲精品无码不卡在线播放he | 久久亚洲线观看视频 |