Russian Qt Forum

Qt => Базы данных => Тема начата: PavelVX от Апрель 09, 2012, 12:41



Название: QSqlTableModel - не сохраняет значение в локальном рекордсете
Отправлено: PavelVX от Апрель 09, 2012, 12:41
Есть наследник от QSqlTableModel.
setEditStrategy(QSqlTableModel::OnManualSubmit);
Выявилась странная вещь: если править какие-нить поля, то пока не перейдем на другую строку изменения НЕ СОХРАНЯЮТСЯ в ЛОКАЛЬНОЙ копии. То-есть правим строку, не сходя с нее делаем setFilter и все, все сделанные изменения грохнулись.
Если сделать
setEditStrategy(QSqlTableModel::OnFieldChange);
то все тип топ, сохраняет, стоит только сойти с поля. Ну оно и понятно. Но надо в OnManualSubmit сохранять.
Как принудительно сохранять изменения в ЛОКАЛЬНОМ рекордсете?


Название: Re: QSqlTableModel - не сохраняет значение в локальном рекордсете
Отправлено: Странник от Апрель 09, 2012, 13:32
то есть вы хотите сохранить изменения в модели, не отправляя их на сервер? дело в том, что setFilter влечет за собой запрос данных с сервера, и естественно, ваши незасабмиченные изменения грохаются. либо используйте submitAll() для сохранения изменений перед вызовом setFilter(), либо реализуйте собственную модель. но есть у меня ощущение, что вы усложняете и хотите чего-то не того.


Название: Re: QSqlTableModel - не сохраняет значение в локальном рекордсете
Отправлено: PavelVX от Апрель 10, 2012, 08:14
Странник, вы не совсем правы, setFilter не перезапрашивает данные с сервака. И даже могу это доказать!
Я пытаюсь создать свою модель, подробности http://www.prog.org.ru/topic_21094_0.html
Все работет как надо, быстро. Но как только в фильтре одна позиция, из-за фишки в модели, происходит косяк в визуализации.
Сейчас буду потрошить исходники, как-то надо сохранять локальние изменения без отсыла на сервак.