Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Ситуация в следующем. -Необходимо в вносить изменения в таблицу, но при ошибке или отмене действия пользователем откатывать их. Для этого открывается транзакция, затем после изменения данных в таблице вызывается метод TClientDataSet.ApplyUpdates. Но этот метод закрывает транзакцию и невозможно откатить действие некаким образом. Пожалуйста подскажите как обойти этот глюк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 17:48 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
WelorСитуация в следующем. -Необходимо в вносить изменения в таблицу, но при ошибке или отмене действия пользователем откатывать их. Для этого открывается транзакция, затем после изменения данных в таблице вызывается метод TClientDataSet.ApplyUpdates. Но этот метод закрывает транзакцию и невозможно откатить действие некаким образом. Пожалуйста подскажите как обойти этот глюк? Секундочку, какой глюк? "этот метод закрывает транзакцию" - а как можно подтвердить данные не закрыв транзакцию? Возможно SAVEPOINT-ы то, что ты искал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 18:05 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Возможно! Но в том то и дело что команда ROLLBACK TO SAVEPOINT ABC недаёт никаких результатов хотя и перед изменением я и создаю его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 18:17 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
ROLLBACK TO SAVEPOINT ABC недаёт никаких результатов а что вы хотите чтобы она вам отдала? хотя и перед изменением я и создаю его кого его? результат? а как вы его создаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 18:39 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
TClientDataSet.ApplyUpdates это Delphi?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 18:40 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Уважаемый vfabr!!! TClientDataSet.ApplyUpdates это Delphi!!!, но возможно и в Borland C Builder' е есть такой-же метод. vfabrа что вы хотите чтобы она вам отдала? откатила все изменения сделаные после её объявления Код: plaintext 1. 2. Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 19:01 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
вы сами написали ответ на свой вопрос :-)) http://www.postgresql.org/docs/8.0/interactive/sql-savepoint.html примеры смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 19:44 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
WelorСитуация в следующем. -Необходимо в вносить изменения в таблицу, но при ошибке или отмене действия пользователем откатывать их. Для этого открывается транзакция, затем после изменения данных в таблице вызывается метод TClientDataSet.ApplyUpdates. Но этот метод закрывает транзакцию и невозможно откатить действие некаким образом. Пожалуйста подскажите как обойти этот глюк?2Welor По большому счету твой пост - оффтопик, и место ему - в форуме по дельфям, так как TClientDataSet работает одинаково что со слоном, что с жар-птичкой, что с любой другой субд. Ладно, давай разбираться. ClientDataSet - это КОПИЯ данных сервера в ОЗУ КЛИЕНТА, т.е. в памяти твоей программы на дельфях. Изменения, которые юзер делает в этой таблице, происходят только в памяти клиента и никоим образом не касаются данных на сервере. Это значит, перед редактированием данных открывать транзакцию на сервере нафик не надо. Далее, что такое хитрая функция ApplyUpdates. Когда она вызывается то делает следующее: 1 - сама открывает транзакцию на сервере; 2 - все изменения в данных, которые юзер наредактировал, преобразует в набор SQL-запросов и посылает их на сервер; 3 - если сервер все схавал без вопросов, делает транзакции COMMIT и возвращает 0, Если же сервер поперхнулся, то делает транзакции ROLLBACK и возвращает количество серверных отрыжек, т.е. не ноль. Отсюда поведение программера такое. 1. Если юзер нажал на кнопку Сохранить, вызываем ApplyUpdates и смотрим чему оно равно. Если =0 - все тип-топ. Если <>0, значит все изменения сервер проигнорировал, и нам осталось вернуть копию данных в ОЗУ в исходное состояние до редактирования - вызвать (не помню процедуру или функцию) CancelUpdates. 2. Если юзер решил отменить все свое редактирование (нажал на кнопку Отмена) - просто вызываем CancelUpdates. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 21:01 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Уважаемый Vlado, спасибо за ответ, но в том то и дело что во время работы проги мне приходится переключать DBGrid между различными таблицами. Загружать сразу 2 таблицы в ОЗУ немного накладно, поэтому и приходится временно сохранятьь данные в таблице, и мне хотелось созданием новой транзакции и работая внутри неё откатывать действия сделанные методом ApplyUpdates если юзеру вдруг вздумается отменить действие. Если бы мне приходилось работать только с одной таблицей тогда описанный тобой метод отлично подходит, но здесь я не знаю как реализовать задание. Работая с MS SQL Server 2000 мне удалось созданием транзакции реализовать эту прогу, всё работает ништяк. Как оказалось MS SQL Server 2000 поддерживает вложенные транзакции и транзакция которую создаёт метод ApplyUpdates не закрывает транзакцию высшего уровня, но в том то и дело что нужно работать с PostgreSQL. Не знаешь ли можно создавать аналогичные структурированные транзакции и в PostgreSQL. Спасибо за ответ зарание!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 08:46 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Откажись от услуг ApplyUpdates и сам контролируй транзакции, сэйвпойнты, sql-запросы и прочая. Не пугайся - это проще, чем кажется на первый взгляд :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 09:09 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ответы. Попробую отказаться от этого метода. Извеняюсь за задержку в ответе! Непредвиденная командировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 15:23 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
WelorПопробую отказаться от этого метода... Не факт, что это сильно облегчит жизнь. Вызывает подозрения сама логика программы. Позволять висеть транзакции неопределенное время ради удобства отката - что-то не то. (тетя начала редактировать данные, а тут звонок с обсуждением последнего события светской жизни) Возможно, хорошо продумамши структуру, и отказываться ни от чего не придется, и жизнь себе мал-мала скрасить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:00 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Логика программы подрузумевает быстрое реагирвание на ситуацию. Она будет работать в местах где у тётей и дядей не будет времени разговаривать про всетскую жизнь.! Хотя Мысль хорошая! Нужно будет поставить таймер активности юзера и через определённое время закрывать транзакцию. Спосибо за совет!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:41 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Всё. Умолкаю. В подпорках и нашлёпках не мастак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:01 |
|
||
|
Помогите! Как оставить открытой транзакцию после TClientDataSet.ApplyUpdates
|
|||
|---|---|---|---|
|
#18+
Подпорки и нашлёпки говориш!!! Дык это же основа современного программарования в атмосфере всеобщего торопыжнечества!!! На то что один создал другой завсегда нашлёпки сделать может., То, что не выходит обычным способом зачастую получается с помощью топора и такой-то ........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:17 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33095704&tid=2007204]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 384ms |

| 0 / 0 |
