Я хочу подключиться к базе данных MS SQL Server с помощью макроса Outlook. Но я не знаю, неправильный ли код, или мне нужно добавить библиотеку/драйвер, или что здесь происходит, но это не работает.
Private Sub Application_Startup()
On Error GoTo ExitHere
'adodb connection to other database
stg_cn.Open "Provider = SQLOLEDB;" & _
"Data Source = 192.168.100.100;" & _
"Initial Catalog = hugeDB;" & _
"Integrated Security=SSPI;" & _
"User ID = oneuser;" & _
"Password = onepassword;"
sQuery = "SELECT * FROM documents where location = 'IE'"
'set reference to query
Set cmd = New ADODB.Command
cmd.ActiveConnection = stg_cn
cmd.CommandType = adCmdText
cmd.CommandText = sQuery
Set rs = cmd.Execute
Do While Not rs.EOF
For i = 0 To rs.Fields.count - 1
MsgBox (i + 1)
Next
rs.MoveNext
Loop
ExitHere:
If Not stg_cn Is Nothing Then stg_cn.Close
Set rs = Nothing
Set stg_cn = Nothing
Exit Sub
End Sub
2 ответа
При проверке зрения я не могу понять, что не так, я думаю, что это должно что-то делать с тем, как вы выполняете операции ADO.
Но я просто добавляю последний написанный мной макрос для подключения к SQL-серверу из макроса. Надеюсь, поможет.
Private Sub Workbook_Open()
On Error GoTo ErrorHandler
'**************************************Initialize Variables**************************************
sServer = "<SQL SERVER Server>"
sDBName = "<SQL SERVER DB>"
'**************************************Open Connection**************************************
'adodb connection to other database
stg_cn.Open "Provider=SQLOLEDB;Data Source=" & sServer & _
";Initial Catalog=" & sDBName & _
";Integrated Security=SSPI;"
sQuery = "SELECT * " & _
"FROM Table "
'set reference to query
Set cmd = New ADODB.Command
cmd.ActiveConnection = stg_cn
cmd.CommandType = adCmdText
cmd.CommandText = sQuery
Set rs = cmd.Execute
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
<PERFORM OPERATIONS>
Next
rs.MoveNext
Loop
ExitHere:
If Not stg_cn Is Nothing Then stg_cn.Close
Set rs = Nothing
Set stg_cn = Nothing
Exit Sub
End Sub
Строка подключения, предоставленная @CodePhobia, должна вам подойти.
Ниже приведены только функции идентификатора пользователя и пароля, как показано в вашем исходном вопросе при попытке подключения с использованием этого.
Dim rsConn as ADODB.Connection
Set rsConn = New ADODB.Connection
With rsConn
.ConnectionString = "Provider = sqloledb;" & _
"Data Source = myServerName;" & _
"Initial Catalog = myCatalog;" & _
"Integrated Security=SSPI;" & _
"User ID = myUserID;" & _
"Password = myPassword;"
.Open
End With
Вы можете использовать этот веб-сайт для поиска строк подключения в будущем. Он должен охватывать все возможные соединения, которые вы хотите установить.
Conn.connectionString = "Provider = sqloledb;" & _ "Источник данных = hugeDB;" & _ "Встроенная безопасность=SSPI;" & _ "Идентификатор пользователя = hdbmread;" & _ "Пароль = hdbmreadonly;" Conn.Open Set Rst.ActiveConnection = Conn Rst.Open "выбрать COUNT(*) из Nav n" & _ "группировать по n.Nav_Date" rs.Close Set rs = Nothing CN.Close Set CN = Nothing End Sub
"Initial Catalog = myCatalog;" & _
в строку подключения? Это каталог в базе данных, к которой вы хотите подключиться.
Data Source
должно быть именем сервера; имя вашего сервера - это IP-адрес?
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.
Workbook_Open
, что является Excel. Следует ли вызывать процедуруApplication_Startup
, если она находится в Outlook?