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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Поясните по QSqlTableModel  (Прочитано 2619 раз)
Alex_C
Гость
« : Июль 10, 2012, 10:21 »

Перечитал все что нашел книги по Qt, но по работе конкретно QSqlTableModel не все понятно.
Создал свою модель на основе QSqlTableModel. переопределил метод setData. В QTableView модель показывается, редактируется и сохраняется в базу. setData работает правильно.
А вот если я пытаюсь редактировать модель так:
Код
C++ (Qt)
   QSqlRecord record = model.record(0);
   record.setValue("title", "ZZZzzzzzZz");
   record.setValue("year", record.value("year").toInt() + 1);
   model.setRecord(0, record);
   model.submitAll();
 

или так

Код
C++ (Qt)
   model.removeRows(0, 1);
   model.submitAll();
 

Данные в QTableView меняются, но в базу изменения не заносятся.
setEditStrategy(QSqlTableModel::OnManualSubmit); - у меня прописано.
Записан
dio
Гость
« Ответ #1 : Июль 11, 2012, 16:42 »

Для начала, посмотрите результат выполнения метода model.submitAll(). При не удачном выполнении кэш не чистится.
Цитировать
Note: In OnManualSubmit mode, already submitted changes won't be cleared from the cache when submitAll() fails. This allows transactions to be rolled back and resubmitted again without losing data.

Если submitAll() проходит нормально, то проверяйте метод  setData. Посмотрите в исходниках как он реализован в QSqlTableModel.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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