Форум: "Базы";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Вниз
ClientDataSet и память? Найти похожие ветки
← →
Max_ (2003-09-15 11:07) [0]У меня цепочка ADOQuery->DataSetProvider->ClientDataSet->DataSource->DBGrid
Пишу динамически Select"ы и частично данные кешируются, когда делаю Fetch! Через некоторое время увидел, что комп начал тормозить! Включил TaskManager и увидел, что моя прога занимает не 3Mb, а 160Mb :( Начал эксперементировать и понял, что ClientDataSet не освобождает локальный кэш при запуске нового запроса! Я уж подумал: может это ADOQuery виноват, но там СursorType ыставлен в clUseServer! ClientDataSet закрываю перед каждым запросом, ADOQuery- тоже! Пробывал ClientDataSet1.Data:=null - не помогает! Как быть?
← →
Max_ (2003-09-15 11:42) [1]Не уже ли никто помочь не может? :)
← →
Arm79 (2003-09-15 13:53) [2]А пробовал ClientDataSet1.ApplayUpdates(-1)?
← →
Max_ (2003-09-15 13:59) [3]Нет не пробывал! ClientDataSet1.ApplayUpdates(-1) случайно не Delt"у посылает на сервер?
← →
Arm79 (2003-09-15 14:04) [4]Посылает все обновленные записи на сервер. -1 - количество допустимых ошибок, те в нашем случае ни одной. А так все держиться в локальном кэше.
← →
Max_ (2003-09-15 14:17) [5]пробывал- тоже самое!
← →
Arm79 (2003-09-15 14:19) [6]Поподробнее, какая СУБД. Лучше текст проги. Можно на мыло
← →
Max_ (2003-09-15 14:33) [7]База Oracle! Цепочка ADOQuery->DataSetProvider->ClientDataSet->DataSource->DBGrid! ADOQuery и ADOConnection свойство СursorType=clUseServer!
Код самый обыкновенный:
procedure Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(Memo1.Text); //я не открываю ADOQuery - //это делает Provider через ClientDataSet
ClientDataSet1.Close;
ClientDataSet1.Open;
end;
← →
Arm79 (2003-09-15 14:41) [8]1 - зачем тебе 2 кэша(ADO-шный и ClientDataSet)?
2 - Ты уверен, что СursorType=clUseServer? Посмотри в runtime
← →
Max_ (2003-09-15 15:49) [9]2 кэша тогда, когда ADO CursorType=clUseClient, а у меня один кэш- ClientDataSet! Уверен, я его в runtim"e выставляю!
← →
Arm79 (2003-09-15 15:52) [10]Зачем тебе тогда ClientDataSet, если все изменения идут на сервер?
> Уверен, я его в runtim"e выставляю
Ты проверь после открытия БД
← →
Max_ (2003-09-15 16:16) [11]ClientDataSet, что б в Grid"e данные показывать! :)
← →
Arm79 (2003-09-15 16:25) [12]Только не надо говорить, что данные от ADOQuery не отображаются! :-)
← →
Max_ (2003-09-15 16:50) [13]Taк я не говорю, что данные не отображаются! Отображаются, но только в CursorType=clUseClient (когда всё валит на клиента)
← →
Arm79 (2003-09-15 18:02) [14]Зачем мудрить. Установи на clUseClient, просто записи возвращай не все. Либо измени запрос, либо количество возвращаемых записей в св-вах компонента. Что-то типа PacketRecord или что-то в этом духе. Зачем нагрузку валить на сервер? Если упорно нужно ClientDataset, то рекомендую dbExpress.
← →
Vlad (2003-09-15 18:13) [15]Ребяты, я точно помню, что в D5, например, даннные в дбгриде отражаются нормально с UseServer
Причем никаких апгрейдов для ADO не ставил, все было в стандартной комплектации.
Вы чё-то шутите по-моему.
← →
Arm79 (2003-09-15 18:37) [16]Я не шучу. Тоже был удивлен. А насчет dbExpress - настоятельно рекомендую.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.021 c