Russian Qt Forum
Сентябрь 30, 2024, 10:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlTableModel - не сохраняет значение в локальном рекордсете  (Прочитано 2982 раз)
PavelVX
Гость
« : Апрель 09, 2012, 12:41 »

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

то есть вы хотите сохранить изменения в модели, не отправляя их на сервер? дело в том, что setFilter влечет за собой запрос данных с сервера, и естественно, ваши незасабмиченные изменения грохаются. либо используйте submitAll() для сохранения изменений перед вызовом setFilter(), либо реализуйте собственную модель. но есть у меня ощущение, что вы усложняете и хотите чего-то не того.
« Последнее редактирование: Апрель 09, 2012, 13:35 от Странник » Записан
PavelVX
Гость
« Ответ #2 : Апрель 10, 2012, 08:14 »

Странник, вы не совсем правы, setFilter не перезапрашивает данные с сервака. И даже могу это доказать!
Я пытаюсь создать свою модель, подробности http://www.prog.org.ru/topic_21094_0.html
Все работет как надо, быстро. Но как только в фильтре одна позиция, из-за фишки в модели, происходит косяк в визуализации.
Сейчас буду потрошить исходники, как-то надо сохранять локальние изменения без отсыла на сервак.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.092 секунд. Запросов: 20.