Глюк DataSet.Locate с русскими символами

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
smmax
незнакомец
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

Глюк DataSet.Locate с русскими символами

Сообщение smmax »

Необходим быстрый поиск по таблице, использую стандартные компоненты: TPQConnection, TSQLQuery и метод - DataSet.Locate('поле', 'строка поиска',[loCaseInsensitive,loPartialKey]). Столкнулся с тем, что если текст в базе на английском языке, то регистронезависимый поиск работает, а вот с русскими символами нет :( Символы для строки поиска получаю из стандартного DBGrid, через UTF8PressKey. Если кто знает решение данной проблемы - ПОМОГИТЕ!
haword
постоялец
Сообщения: 301
Зарегистрирован: 02.03.2006 10:34:40

Сообщение haword »

кодировка в базе какая?
smmax
незнакомец
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

Сообщение smmax »

Кодировка в базе UTF8, символы отображаются правильно. Если набирать текст с соблюдением регистра букв, то всё ищется. Параллельно на статус панели отображается вводимый текст, в нём регистр букв и сами символы корректные. Такое ощущение, что просто сам DataSet не применяет loCaseInsensitive к русским символам.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Может с hiCaseInsensitive пойдет ? :roll:
smmax
незнакомец
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

Сообщение smmax »

Непрочитанное сообщение Alex2013 » 17.04.2013 15:50:27
Может с hiCaseInsensitive пойдет ?

Не поможет, в DB.pas для Locate описаны только опции [loCaseInsensitive,loPartialKey]
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

smmax писал(а):TPQConnection, TSQLQuery

Скорее всего - засада вот именно в этом. Вернее в реализации сравнения строк в этих компонентах.
Попробуй на других компонентах доступа к данным.
В ZEOS я этого не замечал.
smmax
незнакомец
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

Сообщение smmax »

alexs
TPQConnection, TSQLQuery. Скорее всего - засада вот именно в этом. Вернее в реализации сравнения строк в этих компонентах.
Попробуй на других компонентах доступа к данным.
В ZEOS я этого не замечал.

Да, скорее всего, попробовал с ZEOS, там такого глюка нет. Но очень хотелось сделать проект чисто на родных компонентах, дабы проще обновляться было.
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

smmax писал(а):Но очень хотелось сделать проект чисто на родных компонентах, дабы проще обновляться было.

А в чем проблема обновлений????? Да и "родные" компоненты - ну не айс :(
Сам на Zeos сижу - только прозитив, и в SVN постоянно обновления - подчистка хвостов - производится...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

smmax писал(а):Но очень хотелось сделать проект чисто на родных компонентах

Как уже выше было написано - родные компоненты (т.е. SQLDB) ну очень глючные. Я попытался их править - но это быстро надоело. Слишком много недостатков. Там мало того, что баги, так и идеология их реализации очень отличается от прочих (ZEOS, UIB...).
В итоге прелез на ZEOS.
smmax
незнакомец
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

Сообщение smmax »

alexs писал(а):
smmax писал(а):Но очень хотелось сделать проект чисто на родных компонентах

Как уже выше было написано - родные компоненты (т.е. SQLDB) ну очень глючные. Я попытался их править - но это быстро надоело. Слишком много недостатков. Там мало того, что баги, так и идеология их реализации очень отличается от прочих (ZEOS, UIB...).
В итоге прелез на ZEOS.

Спасибо за совет! Я тоже уже неделю покопался в родных компонентах и решил перелезть на ZEOS. :P
SeZuka
постоялец
Сообщения: 209
Зарегистрирован: 05.09.2012 14:58:05

Сообщение SeZuka »

Сделал небольшой тест компонент для доступа к Firebird, результаты: http://freepascal.ru/forum/viewtopic.php?f=5&t=9063&p=71910#p71910
smmax
незнакомец
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

Сообщение smmax »

SeZuka писал(а):Сделал небольшой тест компонент для доступа к Firebird, результаты: http://freepascal.ru/forum/viewtopic.php?f=5&t=9063&p=71910#p71910

Потому и хочу всё же ограничиться использованием SQLdb и не пользоваться ZEOS, т.к. ранее тоже видел с десяток проектов написанных разными людьми на Delphi+MySQL+ZEOS и во всех наблюдал заметные тормоза при работе с большими базами. Видимо действительно, за универсальность надо платить тормозами. В принципе, кроме глюка с Locate пока не заметил ничего страшного, можно поиск по DataSet и другим методом сделать в принципе.

Добавлено спустя 1 час 5 секунд:
Всем спасибо за помощь!
Это мой первый проект на Lazarus. Решил всё же остановиться на ZEOS, т.к.:
1. В Lazarus_x64 нет PQConnection.
2. Zeos не так уж плох, тем более, что основную "тяжёлую" работу будет делать Postgres, и количество гоняемых через Zeos данных благодаря этому будет небольшим.
3. Ну и в связке с Rx компонентами Zeos даёт ещё кучу "плюшек", сокращая время разработки клиента к БД.
Ответить