crossplatform.ru

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


  Ответ в Не отрабатывает QDataWidgetMapper->submit()
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ViGOur Дата 13.10.2015, 9:04
  Только хотел сказать, что похоже на то, что у тебя все же как я и говорил проблема с плагином MySQL, а то и с его отсутствием, вот в последнем твоем посте ты это и подтвердил. :)
JohnZ Дата 12.10.2015, 21:33
  Решено !
1. В каталоге QT 4.8.2\BIN не хватало драйвера libmysql.dll
2. Мапер получал несуществующий индекс поля БД, и тупо молчалЪ ...
Как пример, поле даты на картинке, в БД отсутствовало, и мапер получал
номер несуществующего поля, и вообще отказывался что-либо обновлять.
JohnZ Дата 12.10.2015, 15:49
 
Цитата(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:
ViGOur Дата 12.10.2015, 9:14
  Какая ошибка возвращается при записи?
Проверь, соответствуют ли типы, размеры полей твоей app и БД.
JohnZ Дата 9.10.2015, 19:06
 
Цитата(ViGOur @ 9.10.2015, 15:20) *
Как вариант, у тебя Qt 4.8.2, а вот плагин для работы с БД такой же версии?
А то может забыл обновить или старые пути прописаны?

Где и как можно проверить версию сборки плагина и драйвера ?
До-Собирал его сам, т.к. в установке QT 4.8.2 ни плагина ни драйвера MySQL-я не было.
База-то читается, но вот только не пишется ... :(

Пробовал подкинуть собранные из 4.5.3, - результат тот-же.
Сервер MySQL 4.1, но клиента использовал из MySQL 5.5, так работало в QT 4.5.3
ViGOur Дата 9.10.2015, 15:20
  Как вариант, у тебя Qt 4.8.2, а вот плагин для работы с БД такой же версии?
А то может забыл обновить или старые пути прописаны?
JohnZ Дата 9.10.2015, 15:14
  Всем Здравия !

ВотЪ такая проблема, код

Раскрывающийся текст


// После нажатия Ок

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 кто в курсе ...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 12:49