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

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

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

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

Сообщение smmax » 15.04.2013 14:27:45

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

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

Сообщение haword » 15.04.2013 14:57:57

кодировка в базе какая?
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

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

Сообщение smmax » 15.04.2013 15:18:50

Кодировка в базе UTF8, символы отображаются правильно. Если набирать текст с соблюдением регистра букв, то всё ищется. Параллельно на статус панели отображается вводимый текст, в нём регистр букв и сами символы корректные. Такое ощущение, что просто сам DataSet не применяет loCaseInsensitive к русским символам.
smmax
незнакомец
 
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

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

Сообщение Alex2013 » 17.04.2013 19:50:27

Может с hiCaseInsensitive пойдет ? :roll:
Alex2013
долгожитель
 
Сообщения: 2948
Зарегистрирован: 03.04.2013 11:59:44

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

Сообщение smmax » 18.04.2013 00:58:21

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

Не поможет, в DB.pas для Locate описаны только опции [loCaseInsensitive,loPartialKey]
smmax
незнакомец
 
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

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

Сообщение alexs » 18.04.2013 11:45:17

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

Скорее всего - засада вот именно в этом. Вернее в реализации сравнения строк в этих компонентах.
Попробуй на других компонентах доступа к данным.
В ZEOS я этого не замечал.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение smmax » 18.04.2013 15:20:07

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

Да, скорее всего, попробовал с ZEOS, там такого глюка нет. Но очень хотелось сделать проект чисто на родных компонентах, дабы проще обновляться было.
smmax
незнакомец
 
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

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

Сообщение Little_Roo » 18.04.2013 16:33:59

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

А в чем проблема обновлений????? Да и "родные" компоненты - ну не айс :(
Сам на Zeos сижу - только прозитив, и в SVN постоянно обновления - подчистка хвостов - производится...
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 638
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

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

Сообщение alexs » 18.04.2013 17:06:50

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

Как уже выше было написано - родные компоненты (т.е. SQLDB) ну очень глючные. Я попытался их править - но это быстро надоело. Слишком много недостатков. Там мало того, что баги, так и идеология их реализации очень отличается от прочих (ZEOS, UIB...).
В итоге прелез на ZEOS.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение smmax » 18.04.2013 17:26:34

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

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

Спасибо за совет! Я тоже уже неделю покопался в родных компонентах и решил перелезть на ZEOS. :P
smmax
незнакомец
 
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29

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

Сообщение SeZuka » 19.04.2013 10:41:38

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

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

Сообщение smmax » 19.04.2013 11:05:18

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 даёт ещё кучу "плюшек", сокращая время разработки клиента к БД.
smmax
незнакомец
 
Сообщения: 6
Зарегистрирован: 15.04.2013 14:18:29


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

Рейтинг@Mail.ru