国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

復制數據庫(1)--網絡數據庫的復制和同步(5)

2019-11-18 17:45:50
字體:
來源:轉載
供稿:網友
所謂建立數據庫復本,實際上就是建立數據庫的拷貝。通過數據庫復制,每個用戶都可以使用數據庫中數據的一份拷貝,并可在某個時亥把各個數據庫重新組合成宿主數據庫,而對宿主數據庫的修改都傳送到數據庫復本。注意,數據庫復制功能僅對MicrosoftJet3.5版的數據庫有效。

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'',''SCr
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屬性。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 饶平县| 江西省| 怀柔区| 琼海市| 疏勒县| 外汇| 休宁县| 鄂托克旗| 东海县| 忻州市| 靖安县| 桑植县| 谷城县| 宁德市| 茌平县| 云南省| 邓州市| 阳春市| 神农架林区| 东城区| 临漳县| 定襄县| 平原县| 慈溪市| 北碚区| 汽车| 永吉县| 清新县| 西畴县| 晴隆县| 五家渠市| 缙云县| 栾城县| 曲周县| 大竹县| 通山县| 西盟| 资溪县| 吉木萨尔县| 建德市| 古田县|