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

Вниз

Очистка кэша   Найти похожие ветки 

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

Наверх




Память: 0.48 MB
Время: 0.049 c
14-95010
Arch-vile
2003-05-12 22:50
2003.05.29
Мастера Делфи


1-94895
donya
2003-05-16 20:01
2003.05.29
Запуск под Win XP


7-95137
Konstantionov
2003-03-31 12:18
2003.05.29
Работа с реестром


14-95088
Шоломицкий
2003-05-11 12:26
2003.05.29
Какой функцией в C++ узнать


14-95024
kull
2003-05-08 11:07
2003.05.29
Надо компонент для построения отчетов...