2011-05-12 40 views
3

我正在腳本訪問Access數據庫以便在命令行上使用。 Access數據庫使用工作組文件進行保護。使用安全工作組文件腳本訪問Access文件

Dim oApp, sWGF,myWS 
Set sApp = CreateObject("Access.Application") 
set sWGF = "C:\Users\Alan\Documents\Secured.mdw" 
oApp.DBEngine.SystemDb = sWGF 
WScript.echo "Workgroup " & sWGF 
WScript.echo "SystemDb " & oApp.DBEngine.SystemDb 
Set myWS = oApp.DBEngine.CreateWorkspace("New","Name","Password") 

該代碼輸出Secured.mdw文件名的工作組,但默認的System.mdw文件名的作爲SystemDB來自兩個WScript.echo輸出命令。它也不能創建工作空間,說名稱和密碼是錯誤的(儘管它們對於Secured.mdw文件是正確的)

在網絡上有很多其他地方的參考文獻說,你只能做第一件事在應用程序中,但這正是我正在做的。

我不知道我在做什麼錯。任何想法

回答

2

我認爲你應該直接使用DAO和Jet,而不是自動化Access。

Dim objEngine 
    Dim strWorgroup 
    dim wrkWorkspace 
    Dim db 

    Set objEngine = CreateObject("DAO.DBEngine.36") 
    objEngine.SystemDB = "C:\Users\Alan\Documents\Secured.mdw" 
    Set wrkWorkspace = objEngine.CreateWorkspace("", "Name", "Password") 
    Set db = wrkWorkspace.OpenDatabase("C:\MyDatabase.mdb") 

這將繞過Access本身並直接使用Jet數據庫引擎,這對我來說似乎更簡單。

在測試中,我也有一些困難設置SystemDB,但事實證明,我只是要確保我提供了一個有效的使用。我嘗試的第一個非默認的不起作用,但是當我製作了一個默認的副本並使用它時,它就起作用了。

所以,我想看看你的工作組文件是否有正確的文件名/路徑,是否是Jet的正確版本,以及是否有合適的NTFS權限來打開它。

+0

偉大的解決它。我使用應用程序對象的原因是我試圖使用(http://stackoverflow.com/questions/187506/how-do-you-use-version-control-with-access-development)中顯示的腳本, ,但用DAO打開數據庫,然後打開使用應用程序對象到OpenCurrentDatabase()的作品(而不是原始腳本)。我仍然需要檢查其餘的作品 - 但我想我正在路上。 – akc42 2011-05-14 14:41:26

0

sApp和oApp是同一件事嗎?你在混合變量。

+0

沒有,我手動鍵入其中坐在另一臺機器上的代碼 - 它的一個錯字 – akc42 2011-05-13 21:39:14

0

逾期除了「我有一定的難度設置SystemDB以及」:

這爲我工作:

Set objEngine = CreateObject("DAO.PrivateDBEngine.36")