Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

loCaseInsensitive


TrainerOfDolphins ©   (2006-09-15 12:26:00) 

Добрый день!
Таблица содержит фамилии, которые, естественно, начинаются с большой буквы. Надо найти человека по первой букве фамилии.
IBTable.Locate('Surname',s,[loPartialKey,loCaseInsensitive]) - ничего не находит. Скажите, подалуйста, в чём здесь может быть причина.


TrainerOf Dolphins   (2006-09-15 14:57:00) [1]

Спасибо.
Такого конкретного ответа мне и хотелось...:)


Сергей М.   (2006-09-15 14:39:00) [2]


> TrainerOf Dolphins   (15.09.06 14:16) [10]
>
> И что делать?


Для начала убедиться, что сформированное компонентом TIBTable при вызове метода Locate() SQL-предложение действительно не возвращает ни одной записи.

См TIBSQLMonitor

Если так, то либо сменить IB-совместимый сервер на другой (где UPPER заведомо работоспособно) либо писать свою UDF (или использовать любую готовую), корректно реализующую сабж.


TrainerOf Dolphins   (2006-09-15 14:16:00) [3]

И что делать?
Можно так:
   s:= Key;
   s:= AnsiUpperCase(s);
   IBTable.Locate('Surname',s,[loPartialKey,loCaseInsensitive]) ;
Но нужно ли...


Сергей М.   (2006-09-15 14:09:00) [4]

Ой вру.

Проблема скорей всего из-за "кривизны" работы UPPER в конкретной реализации IB-совместимого сервера. А проблема эта довольно известна.


TrainerOf Dolphins   (2006-09-15 14:03:00) [5]

Вот. Это уже ближе к делу...
Очень внимаьельно прочитал. Подумал. Но выводов пока сделать не могу... Индекс по полю SURNAME не совместим с LocateOptions? С чего бы это?


Сергей М.   (2006-09-15 13:51:00) [6]

Цитата из справки:

If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.

А теперь думай..


TrainerOf Dolphins   (2006-09-15 13:45:00) [7]

Ну не знаю. Charset win1251. Если это имеет значените.
Метод  Locate вызываю в обработчике OnKeyPress DBGrid-а.
Что ещё нужно?


Anatoly Podgoretsky   (2006-09-15 13:30:00) [8]

То что приведена неполная информация.


TrainerOf Dolphins   (2006-09-15 13:14:00) [9]

2 Anatoly Podgoretsky
Что Вы имеете в виду?


Anatoly Podgoretsky   (2006-09-15 13:03:00) [10]

TrainerOf Dolphins   (15.09.06 12:38) [2]
Это все слова.


TrainerOf Dolphins   (2006-09-15 12:38:00) [11]

Такая фамилия есть. Записи все. Никаких фильтров.
Таблица проиндексированна по полю Surname.
Если нажать вместе с буквой Shift, то запись находится, что вроде говорит о том, что loCaseInsensitive игнорируется...


stone   (2006-09-15 12:31:00) [12]


> Скажите, подалуйста, в чём здесь может быть причина.

1. такой фамилии нет
2. в таблицу загружены не все записи
3. включен фильтр


Наверх

Титульная страница Поиск, карта сайта Написать письмо