Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Очистка кэша [D5, D6, D7]


bardi ©   (2003-05-07 14:08:00) 

Здравствуйте.
Ситуация:Генерится Update, только по тем полям которые были изменены. Затем запрос посылается на сервер с помощью компонента TQuery. Используется так же компонент TUpdateSql( кэширование).
Вопрос? Как очистить кэш набора данных?

TAdvRXQuery(DataSet).Database.StartTransaction ;

try
ExecSQL(sqlFull); //запрос посылается на сервер
TAdvRXQuery(DataSet).Database.Commit;
//--Вот здесь необходимо очистить кэш
except
TAdvRXQuery(DataSet).Database.Rollback;

end;



Заранее спасибо.


bardi   (2003-05-07 15:23:00) [1]

> Zacho
Да хорошо.А кэш все равно надо очищать, не хорошо это когда кэш забивается.


Zacho   (2003-05-07 15:14:00) [2]


> bardi (07.05.03 15:11)

Решение "в лоб" - сделай своего наследника TQuery, в котором CommitUpdates не будет вызывать ApplyUpdates.


bardi   (2003-05-07 15:11:00) [3]

> Zacho
Да правильно. Но в моем случае это не подходит, т.к. иногда выполняется UpdateSQL, в др. случае должно выпоняться через компонент TQuery. Может кто нибудь знает прямые функции BDE.


Zacho   (2003-05-07 14:58:00) [4]


> bardi (07.05.03 14:56)

Подключить TUpdateSQL к нужному Query и вместо ExecSQL делать ApplyUpdates.


bardi   (2003-05-07 14:56:00) [5]

Да метод CancelUpdates очищает кэш, но и данные возвращает до изменения, то есть для того что бы пользователь увидел внесенные им изменния , необходимо переоткрыть набор данных. А это не хотелось делать, т.к. большие запросы.


Johnmen   (2003-05-07 14:54:00) [6]

Еще раз настоятельно рекомендую почитать про работу с кешированными НД ! Т.к. что-то не то в королевстве...:)))


Zacho   (2003-05-07 14:45:00) [7]


> bardi (07.05.03 14:36)

Попробуй перед CommitUpdates сделать CancelUpdates, может и прокатит :-)


bardi   (2003-05-07 14:36:00) [8]

TAdvRXQuery - потомок TQuery с некоторыми добавленными свойствами
Если UpdatesPending := true и вызываем метод CommitUpdates, то
последний вызывает ApplyUpdates, что мне совершенно не нужно,
т.к. все изменения были посланы на сервер процедурой ExecSQL,
и не нужно еще раз апдейтить теже записи с помощью ApplyUpdates,
а это происходит т.к. UpdatesPending = true


Zacho   (2003-05-07 14:29:00) [9]

Не знаю, что такое TAdvRXQuery, но в стандартном TQuery есть ApplyUpdates и CommitUpdates


Johnmen   (2003-05-07 14:27:00) [10]

Жми F1 на CommitUpdates, там таже пример есть...:)


Наверх

Титульная страница Поиск, карта сайта Написать письмо