Главная страница
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.043 c
3-1078086419
Sesh
2004-02-29 23:26
2004.03.28
Progress Bar & ADOStoredProc


14-1078001579
Layner
2004-02-28 23:52
2004.03.28
Люди, никто не ставил на комп где стоит NT2000, 98, 2й ОС?


9-1062001143
Ландграф Павел
2003-08-27 20:19
2004.03.28
Посмотрите мою игрушку (2D скролл-аркада на DelphiX c исходникам)


1-1078587931
mak_other_user
2004-03-06 18:45
2004.03.28
Форматирование тектового файла.


1-1078647906
GrayFace
2004-03-07 11:25
2004.03.28
Объект (и компонент) в компоненте не редактирует Object Inspector