Выполнение SQL-запросов с использованием входных данных из таблицы Excel в VBA Macro - PullRequest
0 голосов
/ 08 июля 2019

Я хотел бы взять входные данные из таблицы в Excel для выполнения SQL-запроса и вывести его в расположение на листе Excel.

Макро:

Sub SQL(Dim strSQL as String)

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

rs.Open strSQL, cn

Debug.Print rs.GetString

End Sub

SQL-запрос:

SELECT
  e.`isin`,
  b.*
FROM
  `risk_reference`.`basket_debt` AS b
  JOIN `risk_reference`.`etp` AS e
    ON IF(
      e.`parentid_override` > 0,
      e.`parentid_override`,
      e.`parentid`
    ) = b.`parentid`
    AND e.`isin` = ?
    AND e.`date_out` IS NULL
WHERE b.`processing_date` IN
  (SELECT
    MAX(processing_date)
  FROM
    `risk_reference`.`basket_debt`)
GROUP BY e.`isin`, b.`pk_id`

? в SQL-запросе мне нужен список элементов на основе таблицы в Excel.

Должен ли я делать SQL-запрос элемент за элементом или я могу сделать это за один раз? Если да, то как мне это сделать? Если я делаю построчно, как мне вывести одно местоположение в Excel?

Нужен совет.

1 Ответ

1 голос
/ 08 июля 2019

Предполагая, что ваш вариант sql поддерживает его, используйте IN и просматривайте ячейки, чтобы создать список

strsql = "SELECT e.`isin`, b.* FROM `risk_reference`.`basket_debt` AS b JOIN "
strsql = strsql & "`risk_reference`.`etp` AS e ON IF( e.`parentid_override` > 0, "
strsql = strsql & "e.`parentid_override`, e.`parentid`) = b.`parentid`"
strsql = strsql & "AND e.`isin` IN ("
dim c as range
for each c in range("your range here")
   strsql = strsql & "'" & c.text & "',"
next c
strsql = strsql & ") "
strsql = strsql & "AND e.`date_out` IS NULL WHERE b.`processing_date` IN "
strsql = strsql & "(SELECT MAX(processing_date) FROM `risk_reference`.`basket_debt`) "
strsql = strsql & "GROUP BY e.`isin`, b.`pk_id`"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...