2013-04-18 71 views
1

我有一個密碼保護的訪問數據庫,需要在一夜之間更新。我們編寫了一個精簡的Java應用程序,它接受一些參數(即宏,路徑,文件類型等),然後通過命令行執行VBScript。所以我會有一種方法來「存儲」用戶名和密碼,然後將它傳遞給VBScript,但到目前爲止,我還沒有發現任何其他帖子,真正解決了我的問題。下面是使用宏打開Access數據庫的示例代碼,我需要讓它接受用戶名和密碼。使用VBScript打開密碼保護的訪問數據庫

Set accdbObj = Wscript.CreateObject("Access.Application") 
    accdbObj.Application.Visible = True 

    Message = ("Access Password Update Started With Macro...") 
    LogInformation Message, Path 

    accDatabase = accdbObj.OpenCurrentDatabase(Path) 
    accdbObj.Run Macro 

    accdbObj.Terminate 
    Wscript.Quit 

請記住,PathMacro是傳遞中作爲一個字符串參數。

回答

2

OpenCurrentDatabase Method你的數據庫密碼作爲第三個參數。但是,OpenCurrentDatabase不會返回任何內容,因此我認爲將其返回值分配給accDatabase並不合適。請嘗試以下方式:

accdbObj.OpenCurrentDatabase Path, , "password_here" 

Access數據庫文件有兩種類型的密碼。

  1. 數據庫密碼:所有用戶都必須提供打開數據庫
  2. 用戶級安全密碼一個密碼:爲每個用戶定義一個單獨的密碼

我寫這個答案的第一部分假設你的意思是數據庫密碼。不過,我注意到你提到了用戶名,這表明你可能正在使用ULS(用戶級安全性)。 ULS僅在舊的MDB數據庫文件格式中受支持。使用Access 2007,您可能會使用不支持ULS的較新的ACCDB格式。

如果您實際上使用帶有ULS的MDB,則需要使用其他方法來打開數據庫。您可以將DBEngine.CreateWorkspace與您的ULS用戶名和密碼一起使用,然後在該工作區內呼叫OpenCurrentDatabase

+0

試試吧,對於用戶名的建議呢? – William

+0

對,我對這一點感到困惑......看修改後的答案。那你在使用MDB和ULS嗎? – HansUp

+0

謝謝!測試了密碼,它的工作! – William