QSqlRelationTableModel->submitAll() ошибка No Fields to update" |
Здравствуйте, гость ( Вход | Регистрация )
QSqlRelationTableModel->submitAll() ошибка No Fields to update" |
mishabard |
6.7.2011, 15:47
Сообщение
#1
|
Студент Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день! Вот код в кратце. Выбрал все самое нужно. Все работает, данные обновляются или добовляются,
но в дебаге выскакиевает ошибка: No Fields to update". В программе используется следующая модель: QSqlRelationTableModel * model; QTableView *view; Создаю диалоговое окно для обновления или добавления записей в таблицу. Впринципе все сделал на основе примера из Qt вот конструктор диалогвого окна, для добавления новой записи в QSqlRelationTableModel передаю в него указатель view на TableView
Если пользователь нажимает ОК в диалоговом окне то делаю
Вот процедура, которая вызывает диалоговое окно
Вроде все добавляет в базу(хотя через раз вроде), но выскакивает ошибка, и не позволяет обробатывать действительно проблемы со вствкой записей. |
|
|
mishabard |
6.7.2011, 16:42
Сообщение
#2
|
Студент Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: 0 |
РЕШЕНО!!!
Целый день занимался проблемой, и только как написал вопрос на форум, сразу понял всем проблема. НЕВНИМАТЕЛЬНОСТЬ! Я в mapper использую mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit); а в главной модели стоит стратеги по умолчанию т.е QSqlTableModel::OnFieldChange. Просто дописал строку при настройке модели: Model->setEditStrategy(QSqlTableModel::OnManualSubmit); Все работает!!!! Теперь обновления в базу данных происходят только по model->submitAll(); Поторопился!!!!((((( Теперь при model->submitAll() возвращает false, но в model->lastError().text возвращает пустую строку. Подскажите что еще я не учел? ПС : Данные в базу записываются. |
|
|
Litkevich Yuriy |
6.7.2011, 18:34
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
как-то я уже упоминал, что Мапер сам делает submitAll(), поэтому второй (model->submitAll()) лишний. ЛОЖЬ вернётся, потому что нечего фиксировать в БД, а сообщения об ошибке нет, так как и ошибки, собственно, нет.
|
|
|
mishabard |
6.7.2011, 19:02
Сообщение
#4
|
Студент Группа: Участник Сообщений: 31 Регистрация: 13.6.2011 Из: Киев Пользователь №: 2741 Спасибо сказали: 0 раз(а) Репутация: 0 |
как-то я уже упоминал, что Мапер сам делает submitAll(), поэтому второй (model->submitAll()) лишний. ЛОЖЬ вернётся, потому что нечего фиксировать в БД, а сообщения об ошибке нет, так как и ошибки, собственно, нет. Знаю! Читал! Только что специально еще раз перепроверил. Не работает! если сделать mapper->submit(); Но не сделать model->submitAll(), то данные в модели остаются до первой ее обновления из базы, например сортировки колонки Если сделать model->submitAll() то, я уже проверил, model->errorLast().type() возвращает QSqlError::NoError. т.е. ошибки действительно нет. Значит мне нужно при mapper->submit() еще что-то делать, что , пока не понимаю Может из-за QSqlRelationTableModel? У меня Furebird2.1 QT 4.7 |
|
|
Litkevich Yuriy |
6.7.2011, 21:55
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Может из-за QSqlRelationTableModel? именно при таком сочетании, я сделал вот такое печальное открытиеУ меня Furebird2.1 QT 4.7 надо порыть в закромах, вроде с мапером я всё таки что-то сделал. Помню только, что код я по уродовал порядком. |
|
|
Текстовая версия | Сейчас: 12.12.2024, 8:32 |