MS Access - SQL Server登录提示不会消失

时间:2016-07-28 23:01:09

标签: sql-server vba ms-access ms-access-2010

所以我有这个应用程序,我使用升迁将所有本地表移动到SQL Server,现在它们是当前链接表。我可以访问表格,并且可以毫无问题地访问与表格相关的表格。但是当我以编程方式获取记录或在VBA脚本中执行sql操作时,会弹出一个SQL Server登录提示,要求我输入SQL身份验证登录以访问数据库。

我在这里点了这个链接:

https://support.microsoft.com/en-us/kb/177594

这是我的结束代码:

Dim db1 As Database
Dim db2 As Database
Dim rs As Recordset
Dim strConnect As String
Set db1 = OpenDatabase("C:\Workspace\ms1.mdb")


strConnect = UCase(db1.TableDefs("dbo_TableA").Connect) & ";UID=User1;PWD=Password1"

Set db2 = OpenDatabase("", False, False, strConnect)
db2.Close
Set db2 = Nothing
Set rs = db1.OpenRecordset("dbo_TableA")
rs.Close
db1.Close
Set rs = Nothing
Set db1 = Nothing


DoCmd.RunCommand acCmdSaveRecord

'Sql Server login prompt pops up after running the below code;'
If DCount("*", "TableA", "[ColA] = [forms]![FRM_LOGS]![USER]") = 0 Then
    MsgBox "User ID not found - contact HelpDesk", vbCritical
    DoCmd.Quit
    Exit Sub
End If

DCount正在触发SQL Server登录提示。我需要这个提示消失。如果我打开表单,查询,报告,访问对象绑定到数据的任何内容,我都不会收到任何消息。当我试图访问数据对象时,它只发生在VBA中。

编辑!我确实找到了罪魁祸首。我删除了链接表到sql server中的TableA,然后我再次重新链接它,然后单击Save password复选框。我之前做过这个,但它没有用。再做一遍,它修复了一切。不知道为什么这不是第一次工作。我将下面标记为答案,因为这确实解决了问题。

1 个答案:

答案 0 :(得分:0)

不确定您在这里使用两个数据库连接并在内部表上使用DCOUNT做了什么?

您的数据库连接看起来已经链接了存储密码的表

为什么不使用适用于检查有效用户的记录集?

Set db1 = OpenDatabase("C:\Workspace\ms1.mdb")

Set rs = db1.OpenRecordset("SELECT [ColA] FROM [dbo_TableA] WHERE [ColA] = """ & [forms]![FRM_LOGS]![USER] & """")
if rs.EOF Then
    MsgBox "User ID not found - contact HelpDesk", vbCritical
    DoCmd.Quit
    Exit Sub
End If

rs.Close
db1.Close
Set rs = Nothing
Set db1 = Nothing