Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [qt4] редактирование SQL таблицы через QTableView, возникает ошибка 
V
    Опции темы
bsa
Дата 31.5.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Создал форму, на нее кинул QTableView, создал QDataBase (драйвер PSQL), передал QSqlTableModel. При запуске данные из таблицы отображаются корректно. Более того, даже можно редактировать, но по окончании первого редактирования строки возникает отладочное сообщение "QSqlQuery::value: not positioned on a valid record". Соответственно, данные в БД не сохраняются (даже по submitAll()).
Таблица состоит из 4-х столбцов: bigint (primary key), timestamp with time zone, text, integer.
Код
    model_ = new QSqlTableModel(this, db_);
    model_->setTable("serial_numbers");
    model_->setEditStrategy(QSqlTableModel::OnManualSubmit);
    ui->tableView->setModel(model_);
    model_->select();
    ui->tableView->resizeColumnsToContents();
    ui->tableView->horizontalHeader()->setStretchLastSection(true);
В интернете народ с этим мучается, когда удаляют индексный столбец. Я ничего не удалял! Что же я не так делаю?

P.S.: primary key начинается не с начала, а со 100 (например).

Это сообщение отредактировал(а) bsa - 31.5.2011, 11:35
PM   Вверх
borisbn
Дата 31.5.2011, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 48
Всего: 135



м.б. сигнал beforeUpdate поможет ?
Цитата

void QSqlTableModel::beforeUpdate ( int row, QSqlRecord & record ) [signal]

This signal is emitted by updateRowInTable() before the row is updated in the currently active database table with the values from record.

Note that only values that are marked as generated will be updated. The generated flag can be set with QSqlRecord::setGenerated() and checked with QSqlRecord::isGenerated().


Цитата

void QSqlRecord::setGenerated ( const QString & name, bool generated )

Sets the generated flag for the field called name to generated. If the field does not exist, nothing happens. Only fields that have generated set to true are included in the SQL that is generated by QSqlQueryModel for example.



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 31.5.2011, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



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

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

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


 




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


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

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