Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.03 c