Если, например, требуется получить одно единственное значение с помощью запроса к базе данных (сам запрос может иметь заранее заданную конструкцию, меняющуюся в зависимости от определённых условий), то пригодится следующией код.
Для 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»:
Нужно зайти в Tools->Reference и выбрать следующие пункты:
+1 за описание обхода ошибки!
Мне тоже помогло подключение библиотек! Спасибо!