- Open Notes - http://opennotes.ru -

Получние данных для Excel с помощью запроса к базе данных

Если, например, требуется получить одно единственное значение с помощью запроса к базе данных (сам запрос может иметь заранее заданную конструкцию, меняющуюся в зависимости от определённых условий), то пригодится следующией код.

Для MS SQL

Sub Get_MSSQL_Data()
 Dim db As ADODB.Connection
 Dim rs As ADODB.Recordset
 Dim sqlStr As String
 Set rs = CreateObject("ADODB.Recordset")
 Set db = New ADODB.Connection
 db.Open _
  "DRIVER={SQL Server};SERVER=SName;UID=UserName;PWD=Password;DATABASE=DBName"

 sqlStr = "SELECT Count(*) as cnt FROM [DBName].[DB].[Table]"
 rs.Open sqlStr, db

 While Not rs.EOF
    str1 = rs.Fields("cnt").Value
    rs.MoveNext
    Wend
 rs.Close
 db.Close
End Sub

Для других баз данных нужно изменить строку подключения:

"DRIVER={SQL Server};SERVER=SName;UID=UserName;PWD=Password;DATABASE=DBName"

Teradata ODBC Driver

на следующий вариант для Teradata:

"Provider=Teradata;DBCName=DbcName;Database=DBName;Uid=UserName;Pwd=Password"

OLE DB Provider for Oracle

на следующий вариант для Oracle:

"Provider=OraOLEDB.Oracle;Data Source=DWH;User ID=UserName;Password=Password;"

Другие варианты

User-defined type not defined

Для того, чтобы при выполнении кода не возникало ошибки «Compile error: User-defined type not defined»:

Reference_Error

Нужно зайти в Tools->Reference и выбрать следующие пункты:

Reference

Полезные ссыкли

Order_macros