![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Очистка кэша [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, там таже пример есть...:)