Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
ВнизОчистка кэша Найти похожие ветки
← →
bardi (2003-05-07 14:08) [0]Здравствуйте.
Ситуация:Генерится Update, только по тем полям которые были изменены. Затем запрос посылается на сервер с помощью компонента TQuery. Используется так же компонент TUpdateSql( кэширование).
Вопрос? Как очистить кэш набора данных?
TAdvRXQuery(DataSet).Database.StartTransaction ;
try
ExecSQL(sqlFull); //запрос посылается на сервер
TAdvRXQuery(DataSet).Database.Commit;
//--Вот здесь необходимо очистить кэш
except
TAdvRXQuery(DataSet).Database.Rollback;
end;
Заранее спасибо.
← →
Johnmen (2003-05-07 14:27) [1]Жми F1 на CommitUpdates, там таже пример есть...:)
← →
Zacho (2003-05-07 14:29) [2]Не знаю, что такое TAdvRXQuery, но в стандартном TQuery есть ApplyUpdates и CommitUpdates
← →
bardi (2003-05-07 14:36) [3]TAdvRXQuery - потомок TQuery с некоторыми добавленными свойствами
Если UpdatesPending := true и вызываем метод CommitUpdates, то
последний вызывает ApplyUpdates, что мне совершенно не нужно,
т.к. все изменения были посланы на сервер процедурой ExecSQL,
и не нужно еще раз апдейтить теже записи с помощью ApplyUpdates,
а это происходит т.к. UpdatesPending = true
← →
Zacho (2003-05-07 14:45) [4]
> bardi (07.05.03 14:36)
Попробуй перед CommitUpdates сделать CancelUpdates, может и прокатит :-)
← →
Johnmen (2003-05-07 14:54) [5]Еще раз настоятельно рекомендую почитать про работу с кешированными НД ! Т.к. что-то не то в королевстве...:)))
← →
bardi (2003-05-07 14:56) [6]Да метод CancelUpdates очищает кэш, но и данные возвращает до изменения, то есть для того что бы пользователь увидел внесенные им изменния , необходимо переоткрыть набор данных. А это не хотелось делать, т.к. большие запросы.
← →
Zacho (2003-05-07 14:58) [7]
> bardi (07.05.03 14:56)
Подключить TUpdateSQL к нужному Query и вместо ExecSQL делать ApplyUpdates.
← →
bardi (2003-05-07 15:11) [8]> Zacho
Да правильно. Но в моем случае это не подходит, т.к. иногда выполняется UpdateSQL, в др. случае должно выпоняться через компонент TQuery. Может кто нибудь знает прямые функции BDE.
← →
Zacho (2003-05-07 15:14) [9]
> bardi (07.05.03 15:11)
Решение "в лоб" - сделай своего наследника TQuery, в котором CommitUpdates не будет вызывать ApplyUpdates.
← →
bardi (2003-05-07 15:23) [10]> Zacho
Да хорошо.А кэш все равно надо очищать, не хорошо это когда кэш забивается.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c