![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с CachedUpdates [D5]
Destroyer © (2003-02-27 13:27:00)Есть таблица, для которой CachedUpdates=True. Добавляю в нее запись, RecordCount=1. Делаю ApplyChanges, теперь RecordCount=2 (почему?). А теперь независимо от того, делаю я CommitChanges или CancelChanges, RecordCount=1. И еще: могу ли я сделать CancelUpdates после того как я сделал ApplyUpdates, но еще не сделал CommitUpdates
passm (2003-02-28 09:53:00) [1]Destroyer © (28.02.03 08:48)> Это уже Database.StartTransaction, Database.Commit, Database.Rollback.
Destroyer (2003-02-28 08:48:00) [2]Видимо я не до конца разобрался с UpdateSQL, потому что я так пробовал, прицепил его к Query, в качестве InsertSQL делал INSERT INTO Table... запись в Query добавляется, но запись добавляется и в таблицу и откат на нее потом не действует...
ЮЮ (2003-02-28 08:39:00) [3]>К примеру пользователь добавил запись в таблицу
А должен был добавить в Query, а не в таблицу (см. TUpdateSQL)
Destroyer (2003-02-28 08:36:00) [4]to ЮЮ:
да, пользователь получил результат запроса и локально его изменяет. Собственно и сам запрос, и изменения касаются в основном одной таблицы... К примеру пользователь добавил запись в таблицу, но в сетке запись не появилась (она связана с Query)...мне же хотелось бы, чтобы пользователь видел данные запроса + сделанные им локальные изменения, в этом и есть проблема...
ЮЮ (2003-02-28 08:25:00) [5]> если делаю через CachedUpdates - не могу своевременно обновить Query для пользователя
Что понимать под "своевременно обновить", если пользователь получил результат запроса и локально его изменяет. Что наизменял, то и и имеет, зачем обновлять запрос? А вот теперь, когда ему надоело изменять данные он может либо сохранить изменения, либо отказаться от всех изменений. И после этого уже можно и переоткрыть запрос, чтобы увидеть изменения, сделанные другими пользователями, которые касаются записей, входящих и в ваш запрос тоже
Destroyer (2003-02-28 06:29:00) [6]to Соловьев: дело в том, что данные из таблицы выбираются и отображаются пользователю через Query, и он не видит сделанных локальных изменений...
Вот и не знаю как быть: если делаю через StartTransaction - база блокируется после начала первой транзакции и другие пользователи ничего сделать не могут, если делаю через CachedUpdates - не могу своевременно обновить Query для пользователя - ничего не помогает пока не сделаю ApplyUpdates, но тогда уже не работает откак...А как еще сделать возможность отката - я не знаю...
Desdechado (2003-02-27 15:49:00) [7]при ApplyUpdates данные передаются на сервер, а CancelUpdates и CommitUpdates обе очищают локольный кэш изменений. Вот только по-разному: выставляют соотв. флаги (типа отказ или подтверждение), но это уже не относится к сохранению данных в БД, а только к кэшу.
Johnmen (2003-02-27 15:29:00) [8]Вообще-то в файл-серверных БД нет транзакций, но м.б. некая искусственная их эмуляция, и возможно она очень похожа на кеширование...:)
Соловьев (2003-02-27 15:23:00) [9]Делай Post, зачем ApplyUpdates? А когда надо откатить, то делай CancelUpdates?
Destroyer (2003-02-27 15:18:00) [10]Меня больше интересует, могу ли я сделать CancelUpdates после того как я сделал ApplyUpdates, но еще не сделал CommitUpdates? Вроде данные-то хотя и переданы, но еще не записаны, но у меня почему-то не получается откатить...
Соловьев (2003-02-27 15:08:00) [11]Зачем тебе RecordCount? Может можно через SQL?
Destroyer (2003-02-27 14:32:00) [12]Да, стандартные компоненты...Мастера, помогите, единственный трабл в проге и никак не могу избавиться...
Соловьев (2003-02-27 13:57:00) [13]В смысле ADO? Или стандарные компоненты: ODBC->Database->Query(Table)?
Destroyer (2003-02-27 13:56:00) [14]to Johnmen:
Не понял вопроса про доступ. Вообще-то многопользовательский...
Johnmen (2003-02-27 13:51:00) [15]Доступ=?
Destroyer (2003-02-27 13:46:00) [16]БД=MS ACCESS
Johnmen (2003-02-27 13:33:00) [17]БД ? Доступ ?