У меня есть SQL-запрос, который я могу успешно запустить в SSMS.Это, однако, требует от меня подключения к двум различным источникам.Я назвал источники простым именем, поэтому я не делюсь данными компании.
SELECT TOP (1000)
tbl1.[PartNumber],
tbl1.[PartDescription],
tbl1.[PartDescriptionLong],
tbl1.[PhaseNumber],
tbl2.FULL_NAME
FROM
[hidden1].[hid1].[table1Name] AS tbl1
LEFT JOIN
[hidden2].[hid2].[table2Name] as tbl2
ON
tbl2.USER_NAME=tbl1.ProductManager
В других случаях я мог использовать приведенный ниже код в Excel VBA для подключения к источникуданных, а затем выполнить запрос, который затем заполняет таблицу.
Dim wb As Workbook: Set wb = Application.Workbooks.Add
Dim ws As Worksheet: Set ws = wb.Sheets(1)
Dim wkStation As String: wkStation = VBA.Environ("computername")
With ws.ListObjects.Add( _
SourceType:=xlSrcExternal, _
Source:=Array("OLEDB;", _
"Provider=SQLOLEDB.1;", _
"Integrated Security=SSPI;", _
"Persist Security Info=True;", _
"Data Source=SourceAddress;", _
"Use Procedure for Prepare=1;", _
"Auto Translate=True;", _
"Packet Size=4096;", _
"Workstation ID=" & wkStation & ";", _
"Use Encryption for Data=False;", _
"Tag with column collation when possible=False;", _
"Initial Catalog=catalogName"), _
Destination:=ws.Range("A1")).QueryTable
.CommandType = xlCmdSql
.CommandText = sql
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
10-я строка ниже это "Data Source=SourceAddress;"
, и это прекрасно работает, когда у меня есть только 1 источник данных.Но когда у меня есть 2, я понятия не имею, что делать.Любая помощь будет высоко ценится.