Запрос выбора ODBC с текстовым полем не возвращает записи - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть в MySQL таблица - продукты (product_id int, имя varchar, текст описания).
Я использую последний драйвер ODBC для подключения к MySQL из Excel (VBA) с параметризованным запросом:

dim DCONT as ADODB.Connection
set DCONT = new ADODB.Connection
DCONT.open "DSN=myDSN"

set cmd = new ADODB.command
cmd.commandtext = "SELECT product_id, name FROM products WHERE name LIKE ?" 
set param1=cmd.createparameter("@strName", advarchar, adparaminput, 30, "%testvalue%"
cmd.parameters.append param1
cmd.activeconnection = DCONT
dim rsRecords = new ADODB.recordset
rsRecords.open cmd

Этот код возвращает запрошенные записи правильно. Когда я изменяю текст команды на (запрос включает описание поля из таблицы (тип поля текста))

cmd.commandtext = "SELECT product_id, name, description FROM products WHERE name LIKE ?" 

возвращается Нет записи. Точно так же, когда я использую этот запрос

cmd.commandtext = "SELECT * FROM products WHERE name LIKE ?" 

возвращается Нет записи.

Следующий код без параметризованного запроса возвращает запрошенную запись. Это означает, что существует проблема с возвратом записей только при использовании параметризованного запроса.

dim DCONT as ADODB.Connection
set DCONT = new ADODB.Connection
DCONT.open "DSN=myDSN"

set cmd = new ADODB.command
cmd.commandtext = "SELECT product_id, name, description FROM products WHERE name LIKE '%testvalue%'"
cmd.activeconnection = DCONT
dim rsRecords = new ADODB.recordset
rsRecords.open cmd

Любой совет, пожалуйста?

1 Ответ

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

Решение -> Необходимо обновить до последней версии ANSI Драйвер MySQL ODBC 8.0, версия 8.00.13.00, тогда все работает.

...