crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Не отрабатывает 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  


Цитата(ViGOur @ 12.10.2015, 9:14) *
Какая ошибка возвращается при записи?
Проверь, соответствуют ли типы, размеры полей твоей 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 такого не было :blink:
Если пересобрать в QT 4.5.3, БД обновляется без проблем.
Может такое быть, из-за того что сервер и клиент разных версий ?
Но с другой стороны, почему тогда в QT 4.5.3 работает, а в 4.8.2 нет ? :blink:

Сообщение отредактировал JohnZ - 12.10.2015, 19:28
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 17:06