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

Вниз

Транзакции   Найти похожие ветки 

 
DeadMeat ©   (2007-05-10 16:48) [0]

Здрасте всем!
Вопрос такой. Просьба ногами не пинать, если что. Базы не так давно начал осваивать.
Ситуация.
Юзер изменяет данные в программе. Данные хранятся в одной таблице. В текущей записи. Но вот одна из записей берется из другой таблицы. Calc поле. Есть кнопочки, типа OK/Cancel. Т.е. при нажатии отмены, все измнения должны вернуться "взад". В случае измнения только одно записи это не сложно. В случае измнения одной таблицы - тоже особых сложностей нет (BeginTrans/CommitTrans). Сложность проявляется, когда ту же самую "функциональность" (OK/Cancel) надо реализовать и в другой таблице.
Мда.. Сумбур. Вообщем попытаюсь по другому.
BeginTrans
.... редактирование данных
....... новый диалог (редактирование данных, другой таблицы)
Вот в этом новом, тоже есть OK/Cancel. Но там данные меняются ПО ВСЕЙ таблице. Т.е. может спасти BeginTrans/CommitTrans. Но вторую транзакцию мне запустить не удается (В данном сеансе невозможен запуск дополнительных транзакций). Да и как я почитал, это не очень то и красиво. Еще почитал, что есть вложенные транзакции. Вот это бы мне очень пригодилось, но вот как это дело реализовать, пока не понял.
Грубо говоря:
BeginTrans
... Table1 - EditData (1 record)
... BeginTrans
...... Table2 - EditData (all records)
... CommitTrans
CommitTrans

Вот на что это можно заменить, либо как это реализовать?


 
Jan1   (2007-05-10 16:51) [1]

читать begin tran <name>, save tran <name>, rollback tran <name>, commit tran <name> - BOL.


 
Desdechado ©   (2007-05-10 17:00) [2]

На время редактирования рекомендую НЕ открывать транзакции. Транзакции должны быть короткими, только на время, необходимое собственно для сохранения изменений.
Для этого используем кэшированные изменения, юзер может сколь угодно раз менять и отказываться и т.п. А вот когда он нажал "сохранить", то только тогда открывает транзакцию, сохраняем (в сколь угодно большом количестве самым хитрым образом взаимосвязанных таблиц) и закрываем.


 
DeadMeat ©   (2007-05-10 17:51) [3]


> Jan1   (10.05.07 16:51) [1]

Благодарю. Обязательно прочту.


> Desdechado ©   (10.05.07 17:00) [2]

Благодарю. Помогло. Оказалось то, что нужно.

ЗЫ. Смешно, но когда юзал EhLib, то применял тотже механизм, только назывался он чуток по другому. Почему то не додумался, поискать его в ADODataSet.

Спасибо. Вопрос решен.



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
15-1186383481
Kolan
2007-08-06 10:58
2007.09.02
Как перенести SelectDirectory из BDS2006 в D7?


2-1186935022
Debug
2007-08-12 20:10
2007.09.02
Фокус ввода во вкладку TPageControl


15-1186305705
Pasha L
2007-08-05 13:21
2007.09.02
что такое "Относительное изменение функции"? (математика)


2-1186420122
^_____^
2007-08-06 21:08
2007.09.02
что лучше юзать для коннекта в нэте ?


2-1186919229
Lavrenty
2007-08-12 15:47
2007.09.02
Подключение к сети