Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QSqlTableModel - изменение записи 
V
    Опции темы
Alca
Дата 20.9.2012, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Qt 4.8.2, SQLite.
Есть QTableView и QSqlTableModel. Все данные отображаются корректно.
Пытаюсь изменить запись в таблице. 
Получаю вот это:
Код

QSqlQuery::value: not positioned on a valid record


Вот собственно код в CMain.cpp:
Код

// QSqlTableModel
_m_mdModel = new QSqlTableModel(this, _m_dbDatabase);
_m_mdModel->setTable("t_person");
_m_mdModel->setEditStrategy(QSqlTableModel::OnFieldChange);
_m_mdModel->removeColumn(0); // don't show the ID
_m_mdModel->setHeaderData(0, Qt::Horizontal, tr("Name"));
_m_mdModel->setHeaderData(1, Qt::Horizontal, tr("Adge"));
_m_mdModel->select();

// QTableView
m_Ui.tabvInfo->setModel(_m_mdModel);
m_Ui.tabvInfo->verticalHeader()->setDefaultSectionSize(CONFIG_TABLEVIEW_ROW_HEIGHT);
m_Ui.tabvInfo->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_Ui.tabvInfo->setSelectionBehavior(QAbstractItemView::SelectRows);
m_Ui.tabvInfo->show();

// ...

void
CMain::slot_tabvInfo_OnDoubleClicked(const QModelIndex &index) {
    QSqlRecord record = _m_mdModel->record( index.row() );
    record.setValue("f_main_name", tr("xxxxxxxxxxxxxxxx"));  
 
    _m_mdModel->setRecord(index.row(), record);     //<<< QSqlQuery::value: not positioned on a valid record
    _m_mdModel->submitAll();
}



Это сообщение отредактировал(а) Alca - 20.9.2012, 23:37


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 21.9.2012, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Сделал отдельный тестовый пример - все работает.
Буду разбираться, в чем причина.

Добавлено @ 12:14
Причина была в методе QSqlTableModel::removeColumn, вот так работает:
Код

...
// QSqlTableModel
_m_mdModel = new QSqlTableModel(this, _m_dbDatabase);
_m_mdModel->setTable("t_person");
_m_mdModel->setEditStrategy(QSqlTableModel::OnFieldChange);
/* _m_mdModel->removeColumn(0); // don't show the ID */
_m_mdModel->setHeaderData(0, Qt::Horizontal, tr("Name"));
_m_mdModel->setHeaderData(1, Qt::Horizontal, tr("Adge"));
_m_mdModel->select();
...


Это сообщение отредактировал(а) Alca - 21.9.2012, 12:20


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0705 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.