2016-07-28 2 views
1

Итак, у меня есть это приложение, и я переместил все локальные таблицы в SQL Server с использованием upsizing, теперь они в настоящее время связаны таблицами. Я могу получить доступ к таблицам и формам, связанным с таблицами, без проблем. Но когда я программно беру запись или выполняю операцию sql в скрипте VBA, появляется запрос на ввод в SQL Server, в котором я прошу войти в учетную запись аутентификации SQL для доступа к базе данных.MS Access - SQL Server Login Prompt не исчезнет

Я следовал этой ссылке здесь:

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 Login Prompt. Мне нужно это приглашение уйти. Если я открою форму, запрос, отчет, что-либо, где объект доступа привязан к данным, я не получаю никакого сообщения. Он ТОЛЬКО случается в VBA, когда я пытаюсь получить доступ к объекту данных.

Редактировать! Я нашел преступника. Я удалил связанную таблицу с TableA в sql-сервере, и я снова ее связал и щелкнул флажок Сохранить пароль. Я делал это раньше, и это не сработало. Сделал это снова, и все это исправлено. Не уверен, почему это не сработало в первый раз. В качестве ответа я назвал это ниже, потому что это решило проблему с учетом обстоятельств.

+0

Чтобы уточнить: используется аутентификация SQL Server (а не Windows)? А при связывании таблиц вы не храните пользователя/пароль? Что такое 'db1', текущая база данных frontend или другая db, которая также имеет связанные таблицы? – 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-сервер. Но эй! ваш код работает, но я действительно хотел его там, где каждое место, где я делаю DCount, будет работать, мне не нравится, что мне приходится менять код, поскольку он разбросаны. Но это решение! – sksallaj

Смежные вопросы