Не отрабатывает 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 |
9.10.2015, 15:20
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Как вариант, у тебя Qt 4.8.2, а вот плагин для работы с БД такой же версии?
А то может забыл обновить или старые пути прописаны? |
|
|
JohnZ |
9.10.2015, 19:06
Сообщение
#3
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Как вариант, у тебя Qt 4.8.2, а вот плагин для работы с БД такой же версии? А то может забыл обновить или старые пути прописаны? Где и как можно проверить версию сборки плагина и драйвера ? До-Собирал его сам, т.к. в установке QT 4.8.2 ни плагина ни драйвера MySQL-я не было. База-то читается, но вот только не пишется ... Пробовал подкинуть собранные из 4.5.3, - результат тот-же. Сервер MySQL 4.1, но клиента использовал из MySQL 5.5, так работало в QT 4.5.3 |
|
|
ViGOur |
12.10.2015, 9:14
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Какая ошибка возвращается при записи?
Проверь, соответствуют ли типы, размеры полей твоей app и БД. |
|
|
JohnZ |
12.10.2015, 15:49
Сообщение
#5
|
Участник Группа: Участник Сообщений: 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 |
|
|
JohnZ |
12.10.2015, 21:33
Сообщение
#6
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Решено !
1. В каталоге QT 4.8.2\BIN не хватало драйвера libmysql.dll 2. Мапер получал несуществующий индекс поля БД, и тупо молчалЪ ... Как пример, поле даты на картинке, в БД отсутствовало, и мапер получал номер несуществующего поля, и вообще отказывался что-либо обновлять. |
|
|
ViGOur |
13.10.2015, 9:04
Сообщение
#7
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Только хотел сказать, что похоже на то, что у тебя все же как я и говорил проблема с плагином MySQL, а то и с его отсутствием, вот в последнем твоем посте ты это и подтвердил.
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 3:25 |