Excel vba создает массив и запускает SQL-запрос из заданных значений несколько раз - PullRequest
0 голосов
/ 10 мая 2018

У меня небольшая проблема со следующим кодом VBA:

Sub ADOExcelSQLServer()


Dim Cn As ADODB.Connection
Dim Server_Name As String
Dim Database_Name As String
Dim User_ID As String
Dim Password As String
Dim SQLStr As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Server_Name = "EXCEL-PC\EXCELDEVELOPER" ' Enter your server name here
Database_Name = "AdventureWorksLT2012" ' Enter your database name here
User_ID = "" ' enter your user ID here
Password = "" ' Enter your password here
SQLStr = "SELECT * FROM [SalesLT].[Customer] WHERE CountryID = 1" ' Enter your SQL here

Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _
";Uid=" & User_ID & ";Pwd=" & Password & ";"

rs.Open SQLStr, Cn, adOpenStatic
 ' Dump to spreadsheet
With Worksheets("sheet1").Range("a1:z500") ' Enter your sheet name and range here
    .ClearContents
    .CopyFromRecordset rs
End With
 '            Tidy up
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub

У меня есть следующий код Vba, и я хотел бы выполнить запрос из заданных значений из массива. Например, Пользователь ввел следующие значения в столбец «A» 1 2 3 4 5 6 один под другим, после этого я хочу вставить результат под другим. Например, у меня есть 26 результатов с первым запуском запроса, и 2-й дает мне 50, поэтому после 2-го запроса мне нужно 76 строк. Извините за мой плохой английский.

Также я нашел следующий код, который помог мне получить все значения в массиве: https://social.msdn.microsoft.com/Forums/en-US/f5e97f3d-9857-469f-8255-18aa20512ba4/reading-a-range-into-vba-array?forum=isvvba

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете Join() массив (превращаясь из массива в строку, разделенную каким-либо символом) в ваш оператор SQL

SQLStr = "SELECT * FROM [SalesLT].[Customer] WHERE CountryID IN (" & Join(YourArray, ",") & ") ORDER BY countryID;"

Мы используем условие IN для предоставления списка стран в предложении WHERE и ORDER BY CountryID, чтобы они загружались в ваш лист по порядку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...