Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизloCaseInsensitive Найти похожие ветки
← →
TrainerOfDolphins © (2006-09-15 12:26) [0]Добрый день!
Таблица содержит фамилии, которые, естественно, начинаются с большой буквы. Надо найти человека по первой букве фамилии.
IBTable.Locate("Surname",s,[loPartialKey,loCaseInsensitive]) - ничего не находит. Скажите, подалуйста, в чём здесь может быть причина.
← →
stone © (2006-09-15 12:31) [1]
> Скажите, подалуйста, в чём здесь может быть причина.
1. такой фамилии нет
2. в таблицу загружены не все записи
3. включен фильтр
← →
TrainerOf Dolphins (2006-09-15 12:38) [2]Такая фамилия есть. Записи все. Никаких фильтров.
Таблица проиндексированна по полю Surname.
Если нажать вместе с буквой Shift, то запись находится, что вроде говорит о том, что loCaseInsensitive игнорируется...
← →
Anatoly Podgoretsky © (2006-09-15 13:03) [3]TrainerOf Dolphins (15.09.06 12:38) [2]
Это все слова.
← →
TrainerOf Dolphins (2006-09-15 13:14) [4]2 Anatoly Podgoretsky
Что Вы имеете в виду?
← →
Anatoly Podgoretsky © (2006-09-15 13:30) [5]То что приведена неполная информация.
← →
TrainerOf Dolphins (2006-09-15 13:45) [6]Ну не знаю. Charset win1251. Если это имеет значените.
Метод Locate вызываю в обработчике OnKeyPress DBGrid-а.
Что ещё нужно?
← →
Сергей М. © (2006-09-15 13:51) [7]Цитата из справки:
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 14:03) [8]Вот. Это уже ближе к делу...
Очень внимаьельно прочитал. Подумал. Но выводов пока сделать не могу... Индекс по полю SURNAME не совместим с LocateOptions? С чего бы это?
← →
Сергей М. © (2006-09-15 14:09) [9]Ой вру.
Проблема скорей всего из-за "кривизны" работы UPPER в конкретной реализации IB-совместимого сервера. А проблема эта довольно известна.
← →
TrainerOf Dolphins (2006-09-15 14:16) [10]И что делать?
Можно так:
s:= Key;
s:= AnsiUpperCase(s);
IBTable.Locate("Surname",s,[loPartialKey,loCaseInsensitive]) ;
Но нужно ли...
← →
Сергей М. © (2006-09-15 14:39) [11]
> TrainerOf Dolphins (15.09.06 14:16) [10]
>
> И что делать?
Для начала убедиться, что сформированное компонентом TIBTable при вызове метода Locate() SQL-предложение действительно не возвращает ни одной записи.
См TIBSQLMonitor
Если так, то либо сменить IB-совместимый сервер на другой (где UPPER заведомо работоспособно) либо писать свою UDF (или использовать любую готовую), корректно реализующую сабж.
← →
TrainerOf Dolphins (2006-09-15 14:57) [12]Спасибо.
Такого конкретного ответа мне и хотелось...:)
Страницы: 1 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.044 c