2016-07-28 92 views
1

所以我有這個應用程序,我將所有本地表移動到SQL Server使用升遷,現在他們當前鏈接表。我能夠訪問與表格相關的表格,並且可以毫無問題地訪問表格。但是,當我以編程方式獲取記錄或在VBA腳本中執行sql操作時,會彈出一個SQL Server登錄提示,要求我輸入SQL身份驗證登錄名以訪問數據庫。MS Access - SQL Server登錄提示不會消失

我跟着這個鏈接在這裏:

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

澄清:您正在使用SQL Server身份驗證(不是Windows)?連接表時,你沒有存儲用戶/密碼?什麼是'db1',當前的前端數據庫或者其他也有鏈接表的數據庫? – Andre

+0

你可以試試https://msdn.microsoft.com/en-us/library/ms807027.aspx或https://msdn.microsoft.com/en-us/library/dd787978.aspx –

+0

@Andre db1是OpenDatbase(「C:\ Workspace \ ms1.mdb」)我將它設置在上面的代碼中 – sksallaj

回答

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 
+1

我正在關注修復sql server登錄的鏈接。但是,嘿!你的代碼可以工作,但我確實希望它能在每個我做DCount的地方工作,但我不喜歡這個事實,因爲它是分散的,所以我不得不更改代碼。但這是一個解決方案! – sksallaj