Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.053 c
15-1157075691
Доктор Шмурге
2006-09-01 05:54
2006.10.08
Куда попадет Сатана после смерти?


15-1158293590
DemoN__
2006-09-15 08:13
2006.10.08
Какой прокси лучше поставить на dsl в инет кафе?


2-1158664456
Василий Блаженный
2006-09-19 15:14
2006.10.08
TIdPOP3Client


2-1159021596
Весь в делах
2006-09-23 18:26
2006.10.08
Позиции мыши.


6-1146062611
Ragim
2006-04-26 18:43
2006.10.08
PGP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский