Почему мой MySQL запрос в Excel с использованием строки в качестве параметра не работает? - PullRequest
1 голос
/ 24 января 2020

Я выполняю MySQL запросов в Excel через соединение ODB C.

Пока что нет проблем с использованием параметров, поставив? в моих запросах и при запросе выбирая ячейки C2, и я получаю результат в формате A4, как и ожидалось:

SELECT id_product FROM ps_product WHERE id_product = ? LIMIT 100;

So far so good using id_product = ? and when prompted selection C2

Дело в том, что я хочу иметь возможность выполнить запрос, используя значение ячейки в качестве строки в качестве параметра, делая что-то вроде:

SELECT id_product FROM ps_product WHERE id_product IN (?) LIMIT 100;

Когда Excel запрашивает, какую ячейку использовать в качестве параметра, я выбираю ячейку C2 что я изменил здесь, и он все еще только возвращает в А4 первый идентификатор, а не второй:

Still first id only

Любое представление о том, что я должен сделать, чтобы сделать так, чтобы в A4 A5 у меня отображались оба идентификатора продукта?

Я посмотрел вокруг, использовал простые и двойные кавычки в C2 или непосредственно в запросе, играл с круглыми скобками, кажется, ничего не работает. ..

Большое спасибо!

1 Ответ

1 голос
/ 01 марта 2020

в этой ситуации вы пытаетесь передать список в ячейку для чтения в вашем запросе SQL. К сожалению, это невозможно при динамическом выборе ячейки с помощью? в вашем запросе в excel. Есть несколько сообщений об этом и возможных обходных путях, таких как этот, с использованием VBA.

Параметризованный запрос из Excel с предложением IN

Однако, если вы можете работать с VBA Я бы предложил создать подпрограмму, которая будет выполнять ваш запрос и динамически подбирать диапазоны на листе. Например,

Sub query()
    Sql = "SELECT id_product FROM ps_product WHERE id_product in '" & Range("C2") & "' AND '" & Range("D4") & "' "

    With ThisWorkbook.Connections("Your Connection Name Here").ODBCConnection
        .CommandText = Sql
        .Refresh
    End With
end sub

Конечно, идея расширяется, если у вас есть дополнительные идентификаторы для ввода.

...