Excel Querytable: добавление параметра диапазона - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь создать Querytable, связанный со значением ячейки.
Создание Querytable работает нормально, мне удалось найти, как добавить параметр, но сейчас я не могу найти, как изменить инструкцию SQL.
Когда я запускаю приведенный ниже пример, он не генерирует ошибку, но если я изменяю значение в D1, я получаю сообщение «Нет значения для одного или нескольких обязательных параметров».

Sub AddParam()
    Dim qt As QueryTable
    Dim prm As Parameter
    Set qt = ActiveSheet.QueryTables("705547512")
    qt.Parameters.Delete    'reset params
    Set prm = qt.Parameters.Add("dbk")
    prm.SetParam xlRange, Sheet2.Range("D1")
    prm.RefreshOnChange = True
    qt.CommandText = "select top 10 * from [Ledger account entries$b8:l300] where Daybook = ?"
End Sub

The Querytableсамо запускается в D3.
Я также пытался запустить вышеупомянутое, используя where Daybook = dbk, та же ошибка. Если я удалю предложение where или использую константу (='somestring'), я могу обновить QT без проблем.


Примечание: сам QT был создан с использованием этого фрагмента кода:

    sConn = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;;Password=;User ID=Admin;Data Source=" & _
        ThisWorkbook.FullName & ";" & _
        "Mode=Share Deny Write;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

    Set qt = ActiveCell.Worksheet.QueryTables.Add(Connection:=sConn, Destination:=ActiveCell)
    With qt
        .CommandType = xlCmdSql
        .CommandText = SQL
        .Name = Int((1000000000 - 1 + 1) * Rnd + 1)
        .RefreshStyle = xlOverwriteCells
        .Refresh BackgroundQuery:=False
    End With

1 Ответ

0 голосов
/ 27 ноября 2018

Хитрость для работы с параметрами состояла в том, чтобы использовать соединение ODBC вместо соединения OLEDB.Другими словами, просто замените строку подключения в примере на:

sConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & ThisWorkbook.FullName & ";"

, и код добавления параметров работал как по волшебству.

Редактировать: не все еще фантастично ... кажется, что склонны к проблемам с длинными путями и, конечно, когда файл перемещен.Не уверен, что я пойду дальше в этом направлении.

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