#sql #sql-server #vba #stored-procedures #ado
Вопрос:
Я перестраиваю приложение VBA и перемещаю базу данных из Access в среду SQL Server Management Studio.
Я хочу добавить уровень доступа для приложения VBA, а не добавлять каждого пользователя для доступа (приложение выполняет всю проверку пользователей). Может ли кто — нибудь посоветовать, что я делаю не так? Я создал роль приложения SQL, чтобы иметь возможность выбирать из определенных таблиц. Я могу отправить имя пользователя и pw для роли приложения (что дает доступ для чтения к ТАБЛИЦЕ A), однако я не знаю, как впоследствии выполнить SQL-запрос. Кто-нибудь может мне помочь?
Я получаю следующую ошибку:
Аргументы неверного типа, находятся за пределами допустимого диапазона или противоречат друг другу.
Dim Cn As ADODB.Connection
Dim cmd As New ADODB.Command
Dim RS As ADODB.Recordset
Dim ssql As String
cmd.ActiveConnection = "Provider=SQLOLEDB; Server=*SERVER*;Database=*DATABASE*;Trusted_Connection=Yes"
cmd.ActiveConnection.CursorLocation = adUseClient
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sp_setapprole"
cmd.Parameters.Refresh
cmd(1) = "USERNAME"
cmd(2) = "PASSWORD"
cmd.Execute
ssql = "SELECT DISTINCT VARIABLE FROM TABLE A "
Set cmd2 = New ADODB.Command
cmd2.ActiveConnection = cmd.ActiveConnection
Set RS = New ADODB.Recordset
RS.Open ssql, cmd2
cmd.ActiveConnection.Close
End sub ```
Комментарии:
1. должны ли быть
cmd(1)
и т.cmd.parameters(1)
Д. ?2. Примечание: Вы не перемещаете приложение в среду SQL Server Management Studio. Это просто еще одно приложение для доступа к SQL Server. Вы перемещаете базу данных приложения на SQL Server.
3. Ну да,
cmd(1)
иcmd.parameters(1)
работает. @Nathan_Sav Я думаю, что неправильно объяснил @жесткий код. В настоящее время я работаю над проектом, в котором пользователь заполняет форму пользователя в VBA, которая ранее была подключена к базе данных Access. Сейчас я переношу внутреннюю часть формы пользователя в базу данных SQL.