MyTetra Share
Делитесь знаниями!
Получение данных для Excel с помощью запроса к базе данных
Время создания: 16.03.2019 23:43
Текстовые метки: ADO, Recordset, VBA_access,
Раздел: Разные закладки - VBA - Access - Excel->Access
Запись: xintrea/mytetra_db_adgaver_new/master/base/1523001605e0scjenrcw/text.html на raw.githubusercontent.com

Получние данных для 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»:


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


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

  • Running Teradata Queries From MS-Excel 2007 Using VBA
  • SSIS connection String with expression
  • Working with BLOBs with ADO (VB)
  • ADO Connection Strings
Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования