Не отрабатывает QDataWidgetMapper->submit(), В 4.5.3 работало, в 4.8.2 не работает |
Здравствуйте, гость ( Вход | Регистрация )
Не отрабатывает QDataWidgetMapper->submit(), В 4.5.3 работало, в 4.8.2 не работает |
JohnZ |
9.10.2015, 15:14
Сообщение
#1
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Всем Здравия !
ВотЪ такая проблема, код Раскрывающийся текст // После нажатия Ок void fpForma::on_buttonBox_accepted() { // Stores data from QLineEdit to database using QDataWidgetMapper if (dataMapper) dataMapper->submit(); QDialog::accept(); } в 4.5.3 работало, БД обновлялась. После перехода в 4.8.2 не работает, БД не обновляется, и сообщений никаких В чём трабл, подскажите plz кто в курсе ... |
|
|
ViGOur |
12.10.2015, 9:14
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Какая ошибка возвращается при записи?
Проверь, соответствуют ли типы, размеры полей твоей app и БД. |
|
|
JohnZ |
12.10.2015, 15:49
Сообщение
#3
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Какая ошибка возвращается при записи? Проверь, соответствуют ли типы, размеры полей твоей app и БД. В том-то и дело, что ошибок нет, и изменений в записи тоже нет. Скорее всего, напутано в логике работы с dataMapper. Код класса получился 3-го рода, - уже и сам в нём запутался 2 дня в отладчике, - результат == 0 Будем искать ... Слишком уж он большой получился. Хотелось реализовать универсальность в рамках одного (рекурсивного) класса. Для полного раскрытия вопроса, нужно глянуть _весь_ проэкт, а тут как говорится, одному и за 10 дён ... Если по-теме mapper-а, то в примерах нашёл такой код ... Раскрывающийся текст mapper = new QDataWidgetMapper(this); mapper->setModel(model); mapper->addMapping(nameEdit, 0); mapper->addMapping(addressEdit, 1); mapper->addMapping(ageSpinBox, 2); connect(previousButton, SIGNAL(clicked()), mapper, SLOT(toPrevious())); connect(nextButton, SIGNAL(clicked()), mapper, SLOT(toNext())); connect(mapper, SIGNAL(currentIndexChanged(int)), this, SLOT(updateButtons(int))); Интересует последний connect, - откуда mapper может узнать о currentIndexChanged, в случае листания постранично (QTableView) и перемещения Home/End ? У меня подозрение что перед записью mapper восстанавливает значения в элементах диалога из БД, а затем уже их сохраняет, поэтому нет изменений в БД. Поймать пока не могу ... На картинке, все 3 окна, - это объекты одного класса, созданы рекурсивно. На 1-м уровне, т.е. при изменении только шапки накладной, изменения в БД попадают, а вот при изменении содержимого, - нет. В догонку Дошёл отладчиком до сохранения в БД, дык там действительно ошибка в драйвере БД. QMYSQL3: Unable to bind value Using unsupported buffer type: -842150451 (parameter: 1) Первый параметр это ID ( uint (10) ) В QT 4.5.3 такого не было Если пересобрать в QT 4.5.3, БД обновляется без проблем. Может такое быть, из-за того что сервер и клиент разных версий ? Но с другой стороны, почему тогда в QT 4.5.3 работает, а в 4.8.2 нет ? Сообщение отредактировал JohnZ - 12.10.2015, 19:28 |
|
|
Текстовая версия | Сейчас: 25.11.2024, 17:06 |