所以我有这个应用程序,我使用升迁将所有本地表移动到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复选框。我之前做过这个,但它没有用。再做一遍,它修复了一切。不知道为什么这不是第一次工作。我将下面标记为答案,因为这确实解决了问题。
答案 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