DAO擁有ADO/ADOx/JRO所沒有的東西(也許從不會有。
(轉(zhuǎn)自Trigeminal.com,原始發(fā)布時間5/24/00)
微軟很清楚地把ADO定位為DAO的替換……許多微軟的代理認為DAO 就是DOA(Dead On Arrival(到達即死),在美國,這是一個術(shù)語,用來描寫那些希望獲救的人在救護車剛到達,要搶救他們時,他們就死了)。然而,在DAO中,許多核心函數(shù)功能時被支持的,而ADO/ADOx/JRO 卻不被支持,而且甚至可能從未被支持,因為微軟似乎正把用戶推向其他方向。而Jet本身不會“死”,很清楚,它不再是一個策略平臺,所以,在Jet中,似乎不只是要有足夠的興趣使工作做得更有效了。
對于全記錄,這里是一個DAO有而ADO沒有的所有能力表:
- 運行使用多數(shù)據(jù)庫事務(wù)(在DAO中有效,因為事務(wù)位于工作區(qū)層,而在ADO中失效,因為事務(wù)位于連接層---而且連接只支持一個數(shù)據(jù)庫)
- 用一模式打開一個表格,該模式可避免其他用讀寫模式打開它(由于使用dbDenyWrite常數(shù),在DAO中有效,而在表格層的ADO中失效,因為其最接近模擬adModeShareDenyWrite僅能夠被設(shè)置在連接層)。
- 用一模式打開一個表格,該模式可避免其他模式打開它(由于使用dbDenyRead常數(shù),在DAO中有效,而在表格層的ADO中失效,因為其最接近模擬adModeShareDenyRead僅能夠被設(shè)置在連接層)。
- 用某一方式創(chuàng)建用戶和組,該方式允許你在萬一丟失MDW文件時可以重新創(chuàng)建它們(使用CreateUser/CreateGroup,它使你能夠指定PIDs,在DAO中有效,而在ADO中失效,ADO不允許你指定PIDs)。
- 使存取項目對象如表單,報表,或宏安全(由于文檔對象的權(quán)限屬性,在DAO中有效,而在ADOx中失效,因為它不能正確地映射期望常數(shù),用于執(zhí)行,讀更改,和寫更改到這些對象類型的權(quán)限)。
- 創(chuàng)建一可更新的鏈接ODBC表格的能力(由于其調(diào)用到SQLStatistics函數(shù),在DAO中有效,而在沒有這種調(diào)用的ADO中失效)。
- 創(chuàng)建“預(yù)防刪除”副本的能力(由于傳遞&H4的值到CreateReplica調(diào)用,在DAO中有效,而在沒有這種模擬的JRO中失效)。
- 從Exchange/Outlook文件夾和列確定文件夾信息的方法(由于TableDef/Field對象屬性,在DAO中有效,而在ADO中失效,因為該信息不被通過)。
- 設(shè)置和更改Jet選項而不更改注冊表的能力(由于DBEngine.GetOption and DBEngine.SetOption, 在DAO中有效,而在沒有這種模擬的ADO中失效)。
- 通過JPM--也稱為Jet Property Manager(Jet屬性管理器),允許創(chuàng)建/更改/刪除任何和所有屬性(由于CreateProperty/Properties.Append, 在DAO中有效,而在幾乎所有屬性的ADO/ADOx/JRO中失效,因為沒有JPM到ADO的掛鉤聯(lián)系)。
- 從存取內(nèi)工作時,強制一數(shù)據(jù)庫的鎖定模式(使用CurrentDb時,由于DAO.LockTypeEnum常數(shù),在DAO中有效,而使用CurrentProject.Connection時由于ADO.LockTypeEnum常數(shù)而失效)。
- 在一對象上檢索隱式權(quán)限(由于AllPermissions屬性,在DAO中有效,而在ADO中失效,因它沒有AllPermissions屬性,且要求你分別枚舉它們所有組的用戶)。
- 允許一獨立的Jet會話來運行使用對象模型中的一專用對象(由于PrivDBEngine對象,在DAO中有效,而在ADO中由于沒有模擬對象而失效)。
這些項越來越多地被發(fā)現(xiàn),因此,反復(fù)檢查,你可能會發(fā)現(xiàn)表上的新項目!
[此貼子已經(jīng)被作者于2005-9-21 23:02:20編輯過]
|