Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 1
Регистрация: 17.08.2012
Сообщений: 145
1

Как сделать отмену последних действий в бд?

29.04.2013, 11:54. Показов 2031. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, форумчане. Спасибо за помощь заранее. Может кто делал такое.
Есть бд, отображается в tableview. Есть например кнопки удалить, отменить удаление.
код кнопки удалить
C++ (Qt)
1
2
3
4
5
6
7
8
9
void EditDB::slotDeleteFromDb(){
    QModelIndex index=tableViewParameter->currentIndex();
    listIndex.append(index);    
    tableModel_BDGeoParamDesc->removeRow(index.row());
    tableModel_BDGeoParamDesc->submitAll();
    database.commit();
    tableViewParameter->update();
    tableViewParameter->setFocus();
}
удаление работает

Прочитала, что для отмены действий в бд есть rollback(может эта функция и не используется если действие уже завершено?)

код кнопки отменить удаление
C++ (Qt)
1
2
3
4
5
database.transaction();
    database.rollback();   
    tableModel_BDGeoParamDesc->submitAll();
    tableViewParameter->update();
    tableViewParameter->setFocus();
код видимо кривой(или роллбэк тут не к месту) и отмены не происходит.

проверку на поддержку транзакций сделала - они поддерживаются
может эта транзакция не срабатывает потому что прошлая транзакция для удаления не закрыта?хоть там она и не прописана. Вобщем не буду тут много болтать и размышлять.

Что не так в коде?
если вообще не так лучше это сделать, то как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2013, 11:54
Ответы с готовыми решениями:

Как организовать отмену действий в графическом редакторе
Подскажите, пожалуйста, как можно организовать отмену действий в графическом редакторе? Я...

В калькуляторе сделать так, чтобы 4 последних результата любых действий сохранялись и выводились на экран
В калькуляторе нужно сделать так, чтобы 4 последних результата любых действий сохранялись и...

Как сделать отмену во время выполнения?
Пусть, у меня есть цикл For i = 0 to 100000000 ... Next iи две кнопки на форме - одна запускает...

Как сделать отмену операции занимаемую длительное время
Здравствуйте. Подскажите пожалуйста как сделать такое : мне нужно заливать данные на фтп, операция...

4
98 / 40 / 1
Регистрация: 08.08.2012
Сообщений: 86
29.04.2013, 13:24 2
C++ (Qt)
1
2
3
database.transaction();
// real vodoo magic
database.rollback();
Все что между транзакцией и ролбэком отменяется (откатывается)

C++ (Qt)
1
2
3
database.transaction();
// real vodoo magic
database.commit();
Все что между открытием транзакции и коммитом считается правильным, и откатить его не получится, сколько ни ролбекай
Этот принцип для любых языков и СУБД, отличаться будет только синтекс
1
3 / 3 / 1
Регистрация: 17.08.2012
Сообщений: 145
29.04.2013, 18:16  [ТС] 3
Цитата Сообщение от k0ndaa Посмотреть сообщение
C++ (Qt)
1
2
3
database.transaction();
// real vodoo magic
database.rollback();
Все что между транзакцией и ролбэком отменяется (откатывается)

C++ (Qt)
1
2
3
database.transaction();
// real vodoo magic
database.commit();
Все что между открытием транзакции и коммитом считается правильным, и откатить его не получится, сколько ни ролбекай
Этот принцип для любых языков и СУБД, отличаться будет только синтекс
Спасибо. Придётся по другому
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.04.2013, 00:39 4
Есть еще
C++ (Qt)
1
2
model->submitAll(); // применить
model->revertAll();// отменить
при
C++ (Qt)
1
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
Т.е. читай про флаги QSqlTableModel
1
3 / 3 / 1
Регистрация: 17.08.2012
Сообщений: 145
30.04.2013, 07:12  [ТС] 5
Цитата Сообщение от Avazart Посмотреть сообщение
Есть еще
C++ (Qt)
1
2
model->submitAll(); // применить
model->revertAll();// отменить
при
C++ (Qt)
1
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
Т.е. читай про флаги QSqlTableModel
Вот это уже поинтересней. Спасибо большое
0
30.04.2013, 07:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2013, 07:12
Помогаю со студенческими работами здесь

Есть таблица и мне нужно сделать отмену последнего действия из неё
Здравствуйте! Есть таблица(DBGrid) делаю через(ADOQuery) и мне нужно сделать отмену последнего...

Как сделать историю действий на сайте
Нужна помощь. В Личном кабинте производять покупку предмета за бонусы, можно ли как то привязать к...

Как в тесте сделать пример в несколько действий?
Как сделать пример в несколько действий, например, (5+1)/2:( program test; uses crt; var...

Как сделать на один button1 несколько действий?
напишите код пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru