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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
3-18256
Andrey V.
2003-09-15 14:57
2003.10.06
ib vs. fb


4-18667
deadman
2003-08-01 10:24
2003.10.06
какое сообщение?


6-18529
Андрей Сенченко
2003-08-08 15:27
2003.10.06
Attachment файла в компоненте IDSmtp


1-18295
Niobe
2003-09-24 10:27
2003.10.06
Уважаемые мастера, не подскажете как избавиться отVCL60.bpl & RTL


14-18567
malkolinge
2003-09-18 00:59
2003.10.06
С Днем Рождения , Гоблин !