2009-07-28 45 views
1

我正在研究需要編輯Access數據庫中某些對象的程序。它還運行一個子程序(長篇故事),試圖訪問底層JET數據庫,而Access仍然通過ODBC打開如何在共享和獨佔模式之間切換Access數據庫?

問題是,只要我開始使用VBA編輯Form對象 - 例如,使用Application.LoadFromText - Access將數據庫更改爲獨佔模式。獨家模式本身很好,我知道它爲什麼需要它。但之後我需要能夠切換回「共享」模式,以便我可以運行我的子程序。

我觀察到,如果您使用UI在設計模式下打開窗體,Access會將數據庫切換爲獨佔。 (您可以通過嘗試從另一臺計算機打開它來確認這一點。)但是,當您關閉表單設計器時,Access會立即將其切換回共享模式,這正是我所希望的。

有沒有辦法使用VBA/COM調用來回切換它自己?

我知道我可以調用Application.CloseCurrentDatabase(),然後調用OpenCurrentDatabase(),但是會關閉所有的窗口並擾亂用戶界面,所以這並不理想。

+0

我找到了一種解決方法:打開任何表單然後關閉它。這似乎會導致Access重新考慮它是否需要數據庫保持獨佔模式。然而,這非常嚴重。 – apenwarr 2009-07-28 04:01:55

+0

你的問題很混亂,因爲Access無法使用ODBC連接到它自己的數據文件(Jet/ACE)。 – 2009-07-28 22:10:58

+0

對,我的子程序實際上是用C++編寫的。只要Access沒有打開.mdb文件,或者它以共享模式打開,C++程序就不會通過ODBC操作它。 (它比使用DAO或ADO快10倍,或者我們只是從開放的Access數據庫借用DAO連接。) – apenwarr 2009-07-29 18:04:15

回答

5

將數據庫拆分爲一個單獨的前端,其格式爲/ modules/etc。並在桌面後端提供一個選項?這樣,如果前端被鎖定,後端仍然可以訪問。 Access有一個數據庫拆分嚮導。

0

您可能會嘗試.UserControl和.Visible。我用它們來轉移自動化流程中的控制。我不知道他們是否會在這裏幫助,但如果他們不這樣做,你可以投票。