Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Locate и loCaseInsensitive не работает с русскими буквами   Найти похожие ветки 

 
SPIDERus   (2004-02-16 09:23) [0]

Поиск записи по первым буквам, которые берем из Edit"а. Поиск должен быть не чуйствительным к регистру.

IBTable1.Locate("NAME",Edit1.text,[loCaseInsensitive,loPartialKey]);

Проблема:
loCaseInsensitive не работает с русскими буквами.
С английскими все ОК.


 
Zacho ©   (2004-02-16 09:31) [1]

Возможно, баг именно в твоей версии IBX. У меня все работает (провда я использую TIBDataSet, но должно быть без разницы). Посмотри в исходниках IBX метод InternalLocate - там должны использоваться ф-ция AnsiUpperCase (или AnsiLowerCase, не помню), если там просто UpperCase - ставь апдейт IBX (или наоборот, откатывайся на более раннюю версию, или правь исходники IBX)


 
Expan   (2004-02-16 15:50) [2]

RxQuery1.Locate("Fam; Name;", VarArrayOf ([EdFam.Text, EdName.Text]),[loCaseInsensitive, loPartialKey]);
у меня по фамилии и части имени ищет без проблем


 
Vlad ©   (2004-02-16 16:12) [3]


> Expan   (16.02.04 15:50) [2]

и причем тут RxQuery1 ?
Тут речь идет о методе TIBCustomDataSet


 
SPIDERus   (2004-02-25 07:26) [4]

Перебор версий IB/Firebird результатов не дал.

2Expan:
Я сделал
IBQuery1.Locate("NAME",Edit1.Text,[loCaseInsensitive,loPartialKey]);
А в значение IBQuery1.SQL сделал select NAME from DRUGS Уменя поиск перестал работать вообще. Может я чего не так делаю?


 
Zacho ©   (2004-02-25 07:41) [5]


> SPIDERus   (25.02.04 07:26) [4]
> Перебор версий IB/Firebird результатов не дал.

И не даст. Проблема не в сервере, а в твоем приложении. Еще раз: смотри исходники IBX, конкретно - метод TIBCustomDataSet.InternalLocate в модуле IBDataSet.pas
В этом методе должны использоваться ф-ции AnsiUpperCase и AnsiPos
А ты уверен, что запись, которую ты ищешь, действительно есть в НД ?


 
SPIDERus   (2004-02-26 12:38) [6]

2Zacho
Уменя в FIBDataSet.pas написано:


function TFIBCustomDataSet.Locate(const KeyFields: string;
 const KeyValues: Variant; Options: TLocateOptions): Boolean;
var
 CurBookmark: String;
begin
 DisableControls;
 DoBeforeScroll;
 DisableScrollEvents;
 Result := false;
 try
   CurBookmark := Bookmark;
   First;
   result := InternalLocate(KeyFields, KeyValues,
    TExtLocateOptions(Options)
   );
   if not result then
     Bookmark := CurBookmark;
 finally
   EnableScrollEvents;
   if Result then DoAfterScroll;
   EnableControls;
 end;
end;


Как видно, AnsiUpperCase и AnsiPos там нет.

2Всем
Люди, у кого корректно работает loCaseInsensitive с IBTable1.Locate с русскими буквами скажите какая у вас версия Firebird и какие у вас заплатки.


 
Johnmen ©   (2004-02-26 12:58) [7]

Всё там есть ! См. реализацию InternalLocate.


 
Zacho ©   (2004-02-26 13:54) [8]


> SPIDERus   (26.02.04 12:38) [6]

И в дополнение к Johnmen ©   (26.02.04 12:58) [7]:

Еще раз повторяю, версия FB здесь абсолютно ни причем !!!



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.069 c
8-1069309640
DAndrew
2003-11-20 09:27
2004.03.28
Как осуществить "заворачивание" слов в TextOutW или ExtTextOut W?


3-1077005842
Igor_P
2004-02-17 11:17
2004.03.28
Отказ от Paradox


14-1077850939
Думкин
2004-02-27 06:02
2004.03.28
С днем рождения! 27 февраля.


9-1062855848
G A M E R
2003-09-06 17:44
2004.03.28
Как добавить сюда (на дельфи мастера) файл?


8-1069321670
Arsenij
2003-11-20 12:47
2004.03.28
Адресация видеопамяти с использованием Директ Ыкс