将数据从excel userform提交到受密码保护的访问数据库

时间:2016-11-08 09:22:26

标签: vba ms-access-2010 adodb

我正在尝试将excel(2013)中的用户表单数据提交到访问数据库。

没有密码,这段代码工作正常。

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(无法启动您的应用程序。工作组信息文件丢失或由其他用户独占打开。)

我将cnn.open行更改为此

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

我收到此错误

错误-2147217843(不是有效的帐户名或密码)。

有没有人可以帮我指出我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的第二次尝试无效,因为当用户名实际为"user"时,您的用户名为user

关于您的第一次尝试,我在connectionstrings.com

找到了此便笺
  

注意!报告称使用Access 2010 - 2013默认加密方案加密的数据库不适用于此连接字符串。在Access;尝试选项并选择2007加密方法。这应该有效。

此外,可能是数据库是由另一个连接/程序专门打开的吗?如果您在Access中打开了数据库并且可以设计表/查询,那么IIRC意味着您可以独占访问数据库,并且没有其他连接可以连接到它。您是否在Access数据库所在的文件夹中看到.laccdb(或.ldb)文件?

<强>参考文献: