Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2011, 11:41   #1
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию Отмена изменений в БД Access

Всем привет. Имеем аксессную базу в одну таблицу, подключение ADO Query и грид. Задачка следующая и довольно простая: Нужно что бы пользователь мог отменять последнее действие. Аналог Ctrl+Z. Моя мысль. Сделать еще одну таблицу "Действия" с полями User, ID, Field, Count, которую заполнять при изменении данных в главной таблицы (ну наверное перед AdoQuery.Post) При нажатии кнопки "Отмена" (ну или "Вернуть все в зад") данные меняются обратно, последняя запись из таблицы "Действия" удаляется. При закрытие программы все данные из таблицы "Действия" удаляются. Смысл моего поста: оцените степень бредовости моей идеи. или может давно существуют штатные методы отмены внесенных изменений?
Brother Abbat вне форума Ответить с цитированием
Старый 15.12.2011, 19:13   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

"Штатных методов" отмены изменений в СУБД не существует. Разве только в dBase и похожих настольных БД.
В общем случае все потенциальные изменения делаются пользователем в памяти (ну, иначе на клиенте). И только когда пользователь даст команду "записать", изменения попадают в базу данных.

Такое решение позволяет не придумывать задачи на откат. Который, кстати, в серьезных системах управления (учета ли) вообще не практикуется и считается не просто дурным тоном при разработке БД, а может привести к конфликтным ситуациям со всеми вытекающими последствиями.

Если это учебная БД, то можно делать как угодно, как придумается - никто канделябрами бить не будет.
Некому.
Прик вне форума Ответить с цитированием
Старый 17.12.2011, 11:25   #3
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

А чем не устраивает функция
Код:
AdoQuery1.Cancel ;
Или нужно отменить изменения во всей базе которые произошли с начала действий пользователя?
Если так тогда кроме копирования самой базы во временную директорию для изменения, и при сохранении копировать её назад, а при отмене просто удалить временную, больше методов думаю нет.
Gulik вне форума Ответить с цитированием
Старый 17.12.2011, 19:00   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию Batch

LockType:= adLockBatchOptimistic
и Cancel/UpdateBatch
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение изменений Dmitrov БД в Delphi 2 16.05.2011 09:25
Сохранение изменений Dmitrov Помощь студентам 0 15.05.2011 13:36
Отслеживание изменений Fezdipekla Microsoft Office Access 3 09.07.2010 22:56
Access 2007. Блокировка изменений макета формы. Alessio Microsoft Office Access 0 25.03.2010 14:29
Внесение изменений в БД (Access) Patriot1 БД в Delphi 11 18.11.2008 14:15