Глюк DataSet.Locate с русскими символами
Модератор: Модераторы
Глюк DataSet.Locate с русскими символами
Необходим быстрый поиск по таблице, использую стандартные компоненты: TPQConnection, TSQLQuery и метод - DataSet.Locate('поле', 'строка поиска',[loCaseInsensitive,loPartialKey]). Столкнулся с тем, что если текст в базе на английском языке, то регистронезависимый поиск работает, а вот с русскими символами нет
Символы для строки поиска получаю из стандартного DBGrid, через UTF8PressKey. Если кто знает решение данной проблемы - ПОМОГИТЕ!
кодировка в базе какая?
Кодировка в базе UTF8, символы отображаются правильно. Если набирать текст с соблюдением регистра букв, то всё ищется. Параллельно на статус панели отображается вводимый текст, в нём регистр букв и сами символы корректные. Такое ощущение, что просто сам DataSet не применяет loCaseInsensitive к русским символам.
Может с hiCaseInsensitive пойдет ? 
Непрочитанное сообщение Alex2013 » 17.04.2013 15:50:27
Может с hiCaseInsensitive пойдет ?
Не поможет, в DB.pas для Locate описаны только опции [loCaseInsensitive,loPartialKey]
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
smmax писал(а):TPQConnection, TSQLQuery
Скорее всего - засада вот именно в этом. Вернее в реализации сравнения строк в этих компонентах.
Попробуй на других компонентах доступа к данным.
В ZEOS я этого не замечал.
alexs
Да, скорее всего, попробовал с ZEOS, там такого глюка нет. Но очень хотелось сделать проект чисто на родных компонентах, дабы проще обновляться было.
TPQConnection, TSQLQuery. Скорее всего - засада вот именно в этом. Вернее в реализации сравнения строк в этих компонентах.
Попробуй на других компонентах доступа к данным.
В ZEOS я этого не замечал.
Да, скорее всего, попробовал с ZEOS, там такого глюка нет. Но очень хотелось сделать проект чисто на родных компонентах, дабы проще обновляться было.
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
smmax писал(а):Но очень хотелось сделать проект чисто на родных компонентах, дабы проще обновляться было.
А в чем проблема обновлений????? Да и "родные" компоненты - ну не айс
Сам на Zeos сижу - только прозитив, и в SVN постоянно обновления - подчистка хвостов - производится...
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
smmax писал(а):Но очень хотелось сделать проект чисто на родных компонентах
Как уже выше было написано - родные компоненты (т.е. SQLDB) ну очень глючные. Я попытался их править - но это быстро надоело. Слишком много недостатков. Там мало того, что баги, так и идеология их реализации очень отличается от прочих (ZEOS, UIB...).
В итоге прелез на ZEOS.
alexs писал(а):smmax писал(а):Но очень хотелось сделать проект чисто на родных компонентах
Как уже выше было написано - родные компоненты (т.е. SQLDB) ну очень глючные. Я попытался их править - но это быстро надоело. Слишком много недостатков. Там мало того, что баги, так и идеология их реализации очень отличается от прочих (ZEOS, UIB...).
В итоге прелез на ZEOS.
Спасибо за совет! Я тоже уже неделю покопался в родных компонентах и решил перелезть на ZEOS.
Сделал небольшой тест компонент для доступа к Firebird, результаты: http://freepascal.ru/forum/viewtopic.php?f=5&t=9063&p=71910#p71910
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 даёт ещё кучу "плюшек", сокращая время разработки клиента к БД.
