Заглавная русская Т

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

Заглавная русская Т

Сообщение pi1 » 19.12.2014 19:34:20

Поймал непонятный глюк. В БД (FireBird) товаров делаю поиск методом Locate по полю с наименованиями товаров. Так вот при поиске по заглавной Т(ру) находит С (ру).
Не поленился, проверил все остальные буквы русского и аглицкого. Глючит только Т. Теперь вот и не пойму, это глюк TQuery или глюк сервака БД.
Кто нить видел такое, я искал и в сети и здесь. Не нашел ответа :(
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: Заглавная русская Т

Сообщение Little_Roo » 19.12.2014 20:45:40

pi1 писал(а):Теперь вот и не пойму, это глюк TQuery или глюк сервака БД

TQuery откуда? Какой набор компонентов используется?
По крайней мере, у Zeos такого не наблюдал....
С запросом все в порядке?
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Заглавная русская Т

Сообщение Ism » 19.12.2014 22:26:13

Firebird скорее всего ни при чем
Locate работает локально, то есть поиск идет средствами компонента, если там некорректна работа с кодировками, то вполне может быть
Одно время zeos сильно этим страдал, криво сортировал и искал
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Заглавная русская Т

Сообщение pi1 » 20.12.2014 00:15:50

TQuery из стандартного набора в релизе 1.0.6. Завел два товара - Сапер и Тапер. Тапер не находит, находит Сапер. Датасет построен по алфавиту. Заметил только для заглавной Т русской, остальные нормально ищет. Придется или компоненту разбирать или свежие релизы тестировать на этот глюк.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: Заглавная русская Т

Сообщение Ism » 20.12.2014 00:25:32

Судя по всему это давняя болячка
http://www.freepascal.ru/forum/viewtopic.php?f=5&t=9064

А вообще можно сделать костыль
1 Делать запрос к таблице в базе с нужной фильтрацией
2 Получать id записи
3 Делать locate по id

Убиваются все зайцы, быстрый переход на нужную запись и уход от глюков датасета
Но это имеет смысл для больших таблиц
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Заглавная русская Т

Сообщение Vadim » 20.12.2014 08:05:56

pi1
А версия FreePascal у Вас какая?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Заглавная русская Т

Сообщение pi1 » 20.12.2014 14:44:57

Версия Lazarus 1.0.6. Однако я нашел такое решение- не применять опцию loCaseInsensitive в методе locate. По сути, применение этой опции в системе, которая различает заглавные буквы, ошибочно.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: Заглавная русская Т

Сообщение Vadim » 20.12.2014 15:53:04

pi1 писал(а):Версия Lazarus 1.0.6.

Разве я Вас об этом спрашивал?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Заглавная русская Т

Сообщение pi1 » 20.12.2014 20:08:03

Извините, у меня компилятор freepascal версии 2.6.0, который собственно и шел в сборке Lazarus.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: Заглавная русская Т

Сообщение Vadim » 20.12.2014 21:06:13

pi1
В версии компилятора 2.6.4 были кое-какие обновления для компонентов работы с БД. Попробуйте её.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Заглавная русская Т

Сообщение pi1 » 22.12.2014 23:00:44

Спасибо, попробую.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: Заглавная русская Т

Сообщение Tango » 29.12.2014 12:52:36

SQL фильтрация будет правильней, со временем таблица разрастётся и затраты оправдаются.
Аватара пользователя
Tango
постоялец
 
Сообщения: 162
Зарегистрирован: 31.05.2012 17:07:30

Re: Заглавная русская Т

Сообщение pi1 » 03.01.2015 22:17:02

У меня в проекте есть и SQL-фильтрация и поиск по locate. В зависимости от конкретной ситуации.
А вот когда перешел на Lazarus 1.2.6 то у половины компонент класса SQLQyery пропала связь с IBconnection . При открытии набора выводится Missing (compatible) underlying dataset. Особо впечатляет, что разницы в компонентах, в приемах работы с SQLQuery у плохих и хороших нет. Ладно бы все отвалились, а то по какому то нелогичному принципу. Это недокументированная возможность последней версии? Или нужно на последнюю версию FireBird переходить?
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: Заглавная русская Т

Сообщение Vadim » 04.01.2015 06:15:43

pi1
Лучше перейти на ZEOS. :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Заглавная русская Т

Сообщение pi1 » 06.01.2015 12:59:21

Откатился на Lazarus 1.0.6. Компоненты sqlquery заработали нормально, а исследования пока отложим, есть чем другим заняться.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск


Вернуться в Базы данных

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

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

Рейтинг@Mail.ru