Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.06.2016
Сообщений: 4

Ошибка при поиске текстовых переменных в текстовых полях таблиц

20.07.2018, 15:53. Показов 1238. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Братцы, помогите, пожалуйста!! Совсем уже выбился из сил… Не могу уже видеть эту ошибку… Вторые сутки не сплю и не ем.

По порядку:
Подключаюсь к базе MySQL из VBA (MS Excel) посредством “MySQL ODBC 5.3 ANSI Driver” (последняя версия 5.03.09.00 от 18.07.2017). Сам MySQL сервер на компьютере не установлен, но это не мешало на протяжении многих лет подключаться к базе, считывать и добавлять данные в таблицы SQL.
Процедура подключения:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Sub AdobConnect()
  Set conn = New ADODB.Connection
     conn.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
        "SERVER=servername;" & _
        "DATABASE=dbname;" & _
        "UID=uid;" & _
        "PWD=pass;" & _
        "PORT=3306;" & _
        "OPTION=3"
     conn.Open
End Sub
Процедура поиска текстовой строки в таблице SQL:
Visual Basic
1
2
3
4
5
6
Public Sub IDКатегории()
        Call AdobConnect   'Подключение к Серверу SQL
        Set rs9 = New ADODB.Recordset
        rs9.Open "SELECT COUNT(*) AS Chk FROM category_description WHERE name = " & "Test", conn, adOpenDynamic, adLockOptimistic
        If rs9.Fields("Chk") <> 0 Then CatId = rs9("category_id")
End sub
Строка
rs9.Open "SELECT COUNT(*) AS Chk FROM category_description WHERE name = " & "Test", conn, adOpenDynamic, adLockOptimistic
вызывает ошибку «Драйвер ODBC не поддерживает требуемые свойства»
Кликните здесь для просмотра всего текста


Работа над ошибкой:

Как видите, “проблемная” строка макроса пытается найти количество вхождений строки “Test” в текстовом поле “name” таблицы “category_description”.
Структура таблицы “category_description” такая:


Команда SHOW VARIABLES LIKE 'char%' для таблицы “category_description” выдает такое:
Название: 000000_o1149.jpg
Просмотров: 26

Размер: 52.3 Кб

Эта же команда выдает для всей базы данных то же самое:
Кликните здесь для просмотра всего текста
Название: 000000_o1150.jpg
Просмотров: 22

Размер: 52.2 Кб

Замечено, что строка, выдающая ошибку, корректно работает с нетекстовыми полями таблиц SQL и поиском в них только цифровых значений. К примеру, в поле “category_id” та же “проблемная” строка легко находит значение “222”:
rs9.Open "SELECT COUNT(*) AS Chk FROM category_description WHERE category_id = " & "222", conn, adOpenDynamic, adLockOptimistic
Возвращает rs9.Fields("Chk") = 2

При попытке искать текстовые значения в любых полях этой таблицы любые вариации "проблемной" строки макроса:
rs9.Open "SELECT COUNT(*) AS Chk FROM category_description WHERE category_id = " & "test", conn, adOpenDynamic, adLockOptimistic
rs9.Open "SELECT COUNT(*) AS Chk FROM category_description WHERE name = " & "test", conn, adOpenDynamic, adLockOptimistic
rs9.Open "SELECT COUNT(*) AS Chk FROM category_description WHERE name = " & "тест", conn, adOpenDynamic, adLockOptimistic

возвращают все ту же ошибку «Драйвер ODBC не поддерживает требуемые свойства». Сделал вывод, что проблема связана с кодировками…

Танцы с бубнами вокруг изначального подключения коннектора к базе SQL:

1. Начитался про параметр SET NAMES utf8. Согласно инструкциям подключаюсь к базе так:


Подключение к базе происходит нормально, но на "проблемной" строке кода вылазит все та же ошибка, ровно как и с другими параметрами:
"STMT=SET character_set_results = 'utf8';" & _
"STMT=SET character_set_client = 'utf8';" & _
"STMT=SET character_set_connection = 'utf8';" & _
"STMT=SET character_set_database = 'utf8';" & _
"STMT=SET character_set_server = 'utf8';" & _

2. Прочел, что при проблемах с кодировками, многим помог параметр CHARSET=utf8. У меня с этим параметром подключение происходит нормально, но поиск текста вызывает все ту же ошибку «Драйвер ODBC не поддерживает требуемые свойства»:


Танцы с бубнами вокруг дампов:

Пробовал решить проблему, как описывалось на многих форумах, посредством редактирования дампов таблицы. Подумал, что необходимо все мои кодировки (типа “utf8mb4”) свести к “UTF-8”. Чтобы команда “SHOW VARIABLES LIKE 'char%'” выдавала результат, подобный этому (результат не мой, взял для примера):
Название: 000000_o1154.jpg
Просмотров: 21

Размер: 65.5 Кб

Создал дамп таблицы “category_description”. В нем строка с “utf8mb4” встречается только один раз.
Кликните здесь для просмотра всего текста
Пробовал заменить эту строку на “SET NAMES utf8;” и выгрузить дамп обратно в базу, но не помогло. При запросе “VARIABLES” наблюдается все та же картинка с кодировками “utf8mb4”.

Многие советуют внести исправления в файл настройки SQL "my.ini". Но, на моем локальном компьютере этого файла нет (сервер SQL не установлен), а на самом сервере я также не могу его найти.
Подскажите, пожалуйста, хотя бы в какую сторону копать. Я не программист, многие вещи делаю наугад и методом “проб и ошибок”. Вторые сутки воюю с этой ошибкой, совсем потерялся и уже не знаю, что делать…
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2018, 15:53
Ответы с готовыми решениями:

При поиске текстовых файлов перезагружается Проводник
Добрый день! У меня такая проблема: при поиске текстовых файлов, всегда перезагружается проводник. И главное что он ищет файлы, а если...

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

Индексы в текстовых полях J Swing
Как сделать надстрочные и подстроечные индексы?

2
1234 / 424 / 107
Регистрация: 31.03.2012
Сообщений: 1,159
20.07.2018, 18:43
Цитата Сообщение от tinkandr Посмотреть сообщение
Начитался про параметр SET NAMES utf8.
Пожалуй скажу, что читал ты это не вникая в детали. Далее, мой совет совсет не соответствует теме топика, но тем не менее посмотри может поможет , правда там я использовал на настоящий момент уже достаточно древний драйвер для доступа к mysql, но тем не менее с тех времен мало что изменилось.
1
0 / 0 / 0
Регистрация: 13.06.2016
Сообщений: 4
21.07.2018, 13:54  [ТС]
Цитата Сообщение от Joeymax Посмотреть сообщение
читал ты это не вникая в детали
Ну, конечно, Joeymax, я же говорил, что я не программер. Лошара я полный! ) Ошибка моя заключалась в 'одинарных кавычках'. Сбило то, что с числами макрос работал и без кавычек. Числам не нужны одинарные кавычки! Блин, как же все просто! ) А я в такие дебри залез!! Вот, рабочий вид процедуры (за одним, перешел на более лучший способ проверки наличия строки в результатах запроса):
Visual Basic
1
2
3
4
5
6
Public Sub IDКатегории()
       Set conn = Nothing: Call AdobConnect             'Подключение к Серверу SQL
       Set rs1 = New ADODB.Recordset: TestStr = "Бязь"  'Строковая переменная
       rs1.Open "SELECT * FROM category_description WHERE name = '" & TestStr & "'", conn, adOpenDynamic, adLockOptimistic
       If Not (rs1.EOF = True And rs1.BOF = True) Then CatId = rs1("category_id")
End Sub
Спасибо тебе большое за ответ и участие!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2018, 13:54
Помогаю со студенческими работами здесь

Передать вводимые данные в текстовых полях при нажатии на кнопку "Register" в SQL Server
Здравствуйте всем ! Нужна помощь. Я создал чистый Веб-сайт, а не Веб проект. Который чем-то напоминает проект MVC. Все .aspx файлы...

Проверка изменения значений в текстовых полях
Здравствуйте. Дабы не создавать несколько тем,задам несколько вопросов. 1) У меня боксы с датами(см. скрин). Как сделать проверку на...

Подавление оконечных пробелов в текстовых полях
После сохранения записи в таблице текстовые поля заполняются пробелами, редактировать их позже неудобно- приходится удалять лишние пробелы...

Операция суммирования чисел в текстовых полях
Доброго времени всем! Прошу помощи в простом, казалось бы, вопросе. На форме есть три тестовых поля: Text1, Text2, Text3 и кнопка....

Одинаковый текст в двух текстовых полях
Всем привет! Господа, подсобите, пожалуйста. Суть: Есть два текстовых поля на странице, нужно, чтоб текст, который вводился...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru