我有一个quandry。我已经开发了Access应用程序,我正准备发布它。我刚刚拆分了数据库。 (我知道,有些人说我应该从一开始就把它分开......我没有)我刚刚加密了后端数据库。在前端,我已经链接到后端并在提示时输入了正确的密码。链接表现在出现在我的fronend数据库中。但是,当我尝试访问其中一个链接表时,会收到一条弹出消息,上面写着“不是有效密码”。
我尝试删除链接表并重新链接。我试过更新链接。似乎没什么用。我所做的每一次搜索都假定链接是在加密发生之前创建的,并且没有输入密码。这不是这种情况。
有人可以帮忙吗?
Windows 7 - Access 2010
Multiguy
答案 0 :(得分:3)
来自评论
OOOOOPPPPPSSSS !!!!好的,我发现了问题。访问不喜欢 使用其他字符。我的密码中有一组括号。 删除了,一切都很好! : - )
- MultiGuy
答案 1 :(得分:1)
我想补充一点;可以在VBA宏中更新后端表连接的密码。添加以下行并替换链接表的名称和&密码。
Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.TableDefs("Projects").Connect = "MS Access;PWD=PaSsWoRd;DATABASE=C:\Users\bob.smith\Desktop\Split\Database_NEW_be.accdb"
cdb.TableDefs("Projects").RefreshLink
我发现在使用内置的拆分功能将数据库拆分为前端和后端之后,这很有用。出于安全考虑,我需要加密后端,并且不想重新创建所有数据连接 - 这不是使用拆分功能的重点吗?
为每个链接表复制上面的行并让宏运行。在此之后,链接表应该恢复工作。
这个答案为我解决了一个问题。所以我正在推荐,而且我想提供一个可以在所有表上运行的增强版本:
Public Sub RevisePasswordForLink()
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim tdf As TableDef, colTdf As TableDefs, strConnect As String
Set colTdf = cdb.TableDefs
strConnect = "MS Access;PWD=paSsWoRd;" _
"DATABASE=C:\Users\bob.smith\Desktop\Split\Database_NEW_be.accdb"
For Each tdf In cdb.TableDefs
''I believe best to skip the hidden tables ("MSys*")
If Not tdf.Name Like "MSys*" Then
''If your DB has any local tables, you can save yourself some errors
''by filtering them out (similar to hidden tables).
cdb.TableDefs(tdf.Name).Connect = strConnect
cdb.TableDefs(tdf.Name).RefreshLink
Debug.Print " " & tdf.Name
End If
Next tdf
Set cdb = Nothing
Debug.Print "FINISHED "
End Sub
答案 2 :(得分:1)
当我遇到与Access 2013类似的问题时,我遇到了这个帖子。我已成功加密了后端。每次打开后端时,我都可以使用我用来加密后端的密码成功打开后端。
因此,我打开了前端,删除了以前链接的表,并重新链接到新加密的后端。正如所料,在链接过程中,它向我询问了后端的密码。我输入了正确的密码(我知道它是正确的,因为我粘贴它而不是键入它)并且一切似乎都正常工作。这些表都显示在前端的对象列表中。但是,如果我尝试打开链接表,我会收到一个消息框,指出“不是有效密码。”
在访问其他一些主题之后,我尝试在后端使用没有任何特殊字符并且没有任何空格的密码。然后重新联系前端的那些人。普雷斯托!这解决了这个问题。
因此,如果您在前端获得“非有效密码”,请尝试以下操作,即使您可以自己手动加载它也可以打开后端:从后端密码中删除任何空格或标点符号然后删除并重新链接前端中的链接表。