Главная страница
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.037 c
14-1077874166
TopLodger
2004-02-27 12:29
2004.03.28
Компоненты DreamControls для Delphi6


1-1078400588
ChcngerMan
2004-03-04 14:43
2004.03.28
Internet+computer


9-1047581141
scout
2003-03-13 21:45
2004.03.28
GLScene!!!


4-1073657446
txt
2004-01-09 17:10
2004.03.28
Не перерисовывается график! в Bitmap


14-1078230163
_none_
2004-03-02 15:22
2004.03.28
какие-то уроды спамят по почте