Russian Qt Forum

Qt => Базы данных => Тема начата: PavelVX от Февраль 28, 2012, 07:42



Название: Как запретить уходить со строки в QTableView в случае ошибки?
Отправлено: PavelVX от Февраль 28, 2012, 07:42
Есть наследник QSqlRelationalTableModel. К нему привязан QTableView.
При смене строки модель посылает сигнал, обрабатываю его своим слотом, в котором пытаюсь измененные данные сохранить.
Пользователь вводит новую строку(Model->insertRows(cnt,1)), допускает там ошибку в данных, и при смене строки, при попытке сохранения выдается сообщение об ошибке. Но ему дает уйти с этой строки, поэтому программа циклится с ошибкой. При любом переходе между строк идет сообщение об ошибке. Пытаюсь отменить изменения путем:
    if (Model->submitAll())
    {
        Model->database().commit();
        return 1;
    }
    else
    {
        if (Model->database().rollback())
//все пучком!

Как запретить пользователю уходить со строки с ошибкой?
И почему rollback возвращает true, хотя в строке ошибка.


Название: Re: Как запретить уходить со строки в QTableView в случае ошибки?
Отправлено: lit-uriy от Март 10, 2012, 19:02
>>И почему rollback возвращает true
потому-что откат удался


Название: Re: Как запретить уходить со строки в QTableView в случае ошибки?
Отправлено: PavelVX от Март 22, 2012, 08:04
Если бы роллбек удался. то новая запись бы отменилась. А так при попытке сохранить другие изменения постоянно не вылезала бы ошибка!