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

Вниз

Не работает Locate!   Найти похожие ветки 

 
Snake   (2002-05-06 16:12) [0]

Здравствуйте! Что такое - в ClientDataSet не работает метод Locate на русском языке. Причем компилирую на другой машине - все нормально, exe работает на моей. Кто знает, в чем дело? Спрашивал в конференции по БД - никто не отвечает :(


 
Кулюкин Олег   (2002-05-06 16:48) [1]

У меня работает
CDS1.Locate("Field1","искомый текст", [loCaseInsensitive]);

А какие-нибудь опции указывали?


 
Snake   (2002-05-07 15:58) [2]

Да вот то-то и оно, что точно так и делаю :( Почему - сам не знаю. Может быть где-нить в языковых настройках это делается?


 
Кулюкин Олег   (2002-05-07 16:32) [3]

В Win2k в региональных опциях выбираются языковые настройки.
У меня кириллица по умолчанию.

Правда, у меня D5


 
Andrey007   (2002-05-08 10:05) [4]

2Snake: А Вы, небось, через BDE работаете? И что за СУБД?


 
Кулюкин Олег   (2002-05-08 10:25) [5]

2 Andrey007 (08.05.02 10:05)
ClientDataSet не должен зависеть от версии BDE или типа СУБД.


 
Andrey007   (2002-05-08 10:36) [6]

Конечно, не должен. Однако практика показывает, что это не всегда так.


 
Кулюкин Олег   (2002-05-08 11:02) [7]

2 Andrey007 (08.05.02 10:36)
Считал ClientDataSet достаточно безглючным компонентом.
Вы знаете его подводные камни?
Расскажите?
Я как раз на нем делал эмуляцию БД (сохранение информации в файл/чтение).
Перед этим тестировал его, все было ОК.


 
Andrey007   (2002-05-08 12:50) [8]

Я использовал метод TQuery.Locate. Он нормально работал с Paradox"овскими таблицами, но в случае работы с Oracle"освкими выдавал ошибку "Operation not applicable" при поиске по двум полям символьного типа, содержащими русские буквы. Проблему решил использованием компонент прямого доступа к Oracle (Direct Oracle Access). Насчёт ClientDataSet. У него та же ошибка - он же наследник TDataSet, как и TQuery, только для TQuery TDataSet является предком более высокого уровня, чем для TDataSet. TClientDataSet - прямой наследник TDataSet, а TQuery - наследник третьего уровня (TQuery - TDBDataSet - TBDEDataSet - TDataSet). А функция Locate находится в разделе public класса TDataSet, хотя там она виртуальная и всегда возвращает False. По-нормальному она прописана в классе TBDEDataSet, и, соответственно, в TClientDataSet, причём они прописаны однаковыми, в чём Вы можете убедиться:

function TClientDataSet.Locate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
DoBeforeScroll;
Result := LocateRecord(KeyFields, KeyValues, Options, True);
if Result then
begin
Resync([rmExact, rmCenter]);
DoAfterScroll;
end;
end;

function TBDEDataSet.Locate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
DoBeforeScroll;
Result := LocateRecord(KeyFields, KeyValues, Options, True);
if Result then
begin
Resync([rmExact, rmCenter]);
DoAfterScroll;
end;
end;

Если сравните функции LocateRecord обоих классов, то увидите, что они аналогично. Наверное написали один раз и размножили.


 
Snake   (2002-05-09 15:27) [9]

Спасибо всем, ребята, правда вот все равно ничего не получается :( А не может ли это быть из-за того, что у меня установлен dxDBGrid и прочие dx-овские компоненты?



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

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

Наверх




Память: 0.46 MB
Время: 0.005 c
3-97185
Чел
2002-05-07 14:25
2002.05.30
Подскажите


4-97447
Chris
2002-03-27 14:45
2002.05.30
Использование функции FileOpen


1-97227
Maloy
2002-05-20 14:18
2002.05.30
Использование Ворда для генерации отчетов


1-97220
MaximatorVeter
2002-05-20 14:48
2002.05.30
запись TClass = class of TObject; в System.pas


3-97192
sergrrey
2002-05-02 12:34
2002.05.30
Как уменьшить объем используемой оперативки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский