Главная страница
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.051 c
1-1078922080
Demand2k
2004-03-10 15:34
2004.03.28
PopupMenu


4-1074078497
Petrovich
2004-01-14 14:08
2004.03.28
Не могу найти GetModuleUsage


3-1077633122
AlexWebIn
2004-02-24 17:32
2004.03.28
Программное определение внешних ключей.


14-1077629077
raymond
2004-02-24 16:24
2004.03.28
Друзья, как мне скопировать копию рабочего стола в буфер?


7-1071524872
maxfiles
2003-12-16 00:47
2004.03.28
Можно ли создать точный таймер с интервалом в 1 мкс?