2016-11-08 81 views
0

我想從excel(2013)提交用戶表單數據到訪問數據庫。從excel用戶表單提交數據到密碼保護訪問數據庫

沒有密碼,這段代碼工作正常。

Private Sub Addoer_Click() 
Dim cnn As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim dbPath 

dbPath = Sheet16.Range("K18").Value 

Set cnn = New ADODB.Connection 
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & dbPath 

現在我想用同樣的方法將數據從excel發送到密碼保護的數據庫(每個用戶有不同的密碼)。在Excel文件中,用戶ID是在Sheet16.Range( 「K17」)和密碼是在Sheet16.Range( 「K19」)

userid = Sheet16.Range("K17").Value 
pw = Sheet16.Range("K19").Value 

我改變了cnn.open線以下

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
"Data source=" & dbPath, userid, pw, -1 

和我收到此錯誤:

錯誤-2147217843(無法啓動application.The工作組信息文件丟失或完全由其他用戶打開)

我改變了cnn.open行至該

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & dbPath, """ & userid & """, """ & pw & """, -1 

,我得到這個錯誤

錯誤-2147217843(不是有效的帳戶名或密碼)。

有沒有人可以幫助指出我做錯了什麼地方?

回答

0

您的第二次嘗試不起作用,因爲當用戶名實際上是user時,您傳遞的用戶名爲"user"

關於你的第一次嘗試,我發現這個便條在connectionstrings.com

Note! Reports say that a database encrypted using Access 2010 - 2013 default encryption scheme does not work with this connection string. In Access; try options and choose 2007 encryption method instead. That should make it work.

而且,這可能是因爲該數據庫被其他連接/程序以獨佔方式打開?如果您在Access中打開數據庫並且可以設計表/查詢,那麼IIRC意味着您可以獨佔訪問數據庫,並且沒有其他連接可以連接到它。您是否在與Access數據庫相同的文件夾中看到.laccdb(或.ldb)文件?

參考文獻:

+0

的ADODB連接語法要求提供用戶ID和密碼被寫入字符串。如果我已經將它定義爲像上面那樣的某個單元格的值,那麼我不必在它周圍放置'''? – KZMN

+0

是的,我可以在訪問數據庫中設計表和查詢。是否意味着爲了使代碼工作,我必須將數據庫設置爲非排他性的? – KZMN

+0

@KZMN不確定,但我猜想,如你所說,當它們是常規連接字符串的一部分時,只需要用戶名和密碼的雙引號; if你將它們作爲參數傳遞給'conn.Open',那麼你可能不需要它們。 –