Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-1156420386
gear
2006-08-24 15:53
2006.10.08
Как скрыть кнопку на панели задач у вторичной формы, если для ней


2-1158658563
Lera
2006-09-19 13:36
2006.10.08
Сообщения windows


2-1158914441
kyn66
2006-09-22 12:40
2006.10.08
Как сослаться на компонент, зная его TAG ?


15-1158293479
Pazitron_Brain
2006-09-15 08:11
2006.10.08
Модель общественного повидения


15-1158568278
deftemp
2006-09-18 12:31
2006.10.08
Perevod teksta s angliiskogo na russkiy cherez perevodchik




   Наверх