Как импортировать запрос Microsoft Access с входными параметрами в Excel - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно импортировать запрос Microsoft Access в Excel.

Проблема, с которой я столкнулся при импорте, заключается в том, что для запроса Microsoft Access требуются два входных параметра: текущий месяц и предыдущий месяц.

На основе входных данных запрос Access выберет определенные значения из таблицы, которые соответствуют критериям, а затем выполнит определенные вычисления только для этих значений.

Если я использую функцию импорта в Excel, я получаю сообщение об ошибке, в котором говорится, что два ввода ожидались, но не были даны.

Любая помощь будет принята с благодарностью.

Спасибо!

MS Access SQL код похож на это:

Select

table1.value,
table2.value,
table1.value * table2.value as product,

From(

select * 
(from table 1 where date = current month)

inner join

select *
(from table 2 where date = previous month))

(текущий и предыдущий месяц являются всплывающими входными переменными)

1 Ответ

0 голосов
/ 07 марта 2019

Объект запроса Access не может иметь динамические параметры.Excel должен будет предоставить критерии.Ниже приведен пример извлечения данных в Excel из Access.

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open ""Provider=Microsoft.ACE.OLEDB.12.0; Data Source='C:\Users\June\LabData.accdb'"
strStateNum = InputBox("Enter State Number", "State Number")
rs.Open "SELECT * FROM GeoDataAll WHERE StateNum='" & strStateNum & "';", cn, adOpenStatic, adLockReadOnly

Вместо InputBox можно ссылаться на ячейку для предоставления параметра.

Ваш запрос в Excel похож на:

rs.Open "SELECT Q1.*, field1 * field2 AS Product FROM (" & _
           "(SELECT * FROM table1 WHERE [date] = " & cell for current month & ") AS T1 " & _
           "INNER JOIN " & _
           "(SELECT * FROM table2 WHERE [date] = " & cell for previous month & ") AS T2 " & _
           "ON T1.ID=T2.ID) " & _
        "AS Q1;", cn, adOpenStatic, adLockReadOnly

Затем используйте метод CopyFromRecordset, чтобы записать данные в диапазон на листе.

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