Здравствуйте!
Пытаюсь заставить SQLQuery искать "русские" данные. Например: select * from (название таблицы) where (название поля) = 'критерий поиска'.
English, например, ищет, а вот Русский - нет.
Помогите!
Спасибо!
Модератор: Модераторы
WAYFARER писал(а):1. СУБД какая используется?
2. Приведенный запрос - это далеко не поиск.
where (название поля) = 'критерий поиска' - результат запроса вы получите только если содержимое поля действиельно будет РАВНО 'критерий поиска'
Smola67 писал(а):пустота (ошибок нет)
vitaly_l писал(а):Smola67 писал(а):пустота (ошибок нет)
Попробуйте сменить кодировку, в какой кодировке опрашиваемая таблица?
Smola67 писал(а):Cyrillic_General_CI_AS
SQLstring := UTF8ToWinCP( select * from (название таблицы) where (название поля) = 'критерий поиска' )
vitaly_l писал(а):Smola67 писал(а):Cyrillic_General_CI_AS
Можете сменить кодировку всей таблицы на UTF8_General_CI_AS (или около того) и тогда будут работать прямые запросы. Либо кодировку данной колонки на UTF8_General_CI_AS. Либо в запрос отправляйте в кодировке
- Код: Выделить всё
SQLstring := UTF8ToWinCP( select * from (название таблицы) where (название поля) = 'критерий поиска' )
vitaly_l писал(а):Smola67 писал(а):Cyrillic_General_CI_AS
Можете сменить кодировку всей таблицы на UTF8_General_CI_AS (или около того) и тогда будут работать прямые запросы. Либо кодировку данной колонки на UTF8_General_CI_AS. Либо в запрос отправляйте в кодировке
- Код: Выделить всё
SQLstring := UTF8ToWinCP( select * from (название таблицы) where (название поля) = 'критерий поиска' )
Smola67 писал(а):Проверил запрос (select * from Raboti where Rabota = 'Геодезия') в MS SQL Server Management Studio - все работает. Значит, проблема в Lazarus? В его компонентах?
Smola67 писал(а):Если такое: datamodule.DataModule1.RabotiQuery.SQL.Add('select * from raboti where rabota like '''+'%'+edit1.Text+'%'+'''');
то как прописать туда ?
datamodule.DataModule1.RabotiQuery.SQL.Add(UTF8ToWinCP( 'select * from raboti where rabota like '''+'%'+edit1.Text+'%'+'''') );
datamodule.DataModule1.RabotiQuery.SQL.Add(UTF8ToAnsi( 'select * from raboti where rabota like '''+'%'+edit1.Text+'%'+'''') );
vitaly_l писал(а):Smola67 писал(а):Проверил запрос (select * from Raboti where Rabota = 'Геодезия') в MS SQL Server Management Studio - все работает. Значит, проблема в Lazarus? В его компонентах?
проблема в кодировке. лазарус в UTF8 а база данных в другой кодировке. Либо UTF8ToWinCP() либо UTF8ToAnsi()Smola67 писал(а):Если такое: datamodule.DataModule1.RabotiQuery.SQL.Add('select * from raboti where rabota like '''+'%'+edit1.Text+'%'+'''');
то как прописать туда ?
- Код: Выделить всё
datamodule.DataModule1.RabotiQuery.SQL.Add(UTF8ToWinCP( 'select * from raboti where rabota like '''+'%'+edit1.Text+'%'+'''') );
либо
- Код: Выделить всё
datamodule.DataModule1.RabotiQuery.SQL.Add(UTF8ToAnsi( 'select * from raboti where rabota like '''+'%'+edit1.Text+'%'+'''') );
Smola67 писал(а):UTF8ToWinCP - не распознает Лазарус
vitaly_l писал(а):Smola67 писал(а):UTF8ToWinCP - не распознает Лазарус
подключите модуль LazUTF8
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8