На oConn.Open
я получаю сообщение об ошибке
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Цель проекта — сгенерировать отчет в Excel из базы данных SQL. Это первый раунд, чтобы проверить концепцию и посмотреть, насколько обширной мы можем ее сделать. Сохраненный процесс работает, я проверил в SQL.
Я проверил наличие библиотеки Microsoft ActiveX Data Objects 6.1. Я знаю, что есть и 2.8, но я решил использовать самое последнее расширение.
Я не знаю, нужно ли мне что-то запускать или подключать. Я запустил «Источники данных ODBC (64-разрядная версия)», однако ничего не редактировал в ODBC.
Вот весь код, который я запускаю в VBA.
Sub DataTakenFromSQL()
Dim oConn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
Dim mySQL As String
Dim Row As Integer
Dim Col As Integer
Dim ws As ThisWorkbook
Set ws = ThisWorkbook
Application.ScreenUpdating = False
Set oConn = New ADODB.Connection
Set rs = New ADODB.Recordset
mySQL = "EXEC [StoredProc] @var = 'nVarChar'"
oConn.ConnectionString = "{SQL Server};" & _
"Server=[SERVER];uid=[UN];pwd=[PW];database=[DATABASE]"
oConn.ConnectionTimeout = 90
oConn.Open
rs.Open mySQL, oConn
If rs.EOF Then
MsgBox "No Matching Records"
rs.Close
oConn.Close
Exit Sub
End If
Row = 5
Col = 1
For Each fld In rs.Fields
Sheet1.Cells(Row, Col).Value = fld.Name
Col = (Col + 1)
Next
rs.MoveFirst
Row = Row + 1
Do While Not rs.EOF
Col = 1
For Each fld In rs.Fields
Sheet1.Cells(Row, Col).Value = fld
Col = Col + 1
Next
Row = Row + 1
rs.MoveNext
Loop
rs.Close
oConn.Close
End Sub
Невозможно проверить, но я думаю, что ваша строка подключения должна выглядеть примерно так, поскольку в ней отсутствует спецификация драйвера: Driver = {SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
Финк, ты был прав. Спасибо вам за помощь. После этого у меня была еще одна ошибка, но это было довольно простое исправление (среда). Спасибо большое.
Отсутствовал код:
Driver = {SQLServer};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
как указал Финк (пользователь: 167478). После добавления мне удалось успешно запустить хранимую процедуру.
следует отредактировать, чтобы удалить тег «tsql».