QSqlRelationalTableModel - не редактируются данные |
Здравствуйте, гость ( Вход | Регистрация )
QSqlRelationalTableModel - не редактируются данные |
Rudel |
16.6.2009, 22:33
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 16.6.2009 Пользователь №: 830 Спасибо сказали: 0 раз(а) Репутация: 0 |
Пишу программу с использованием SQLITE. База данных создается, удалением, добавление, поиск - сделал. Однако редактирование не работает. Данные просто не меняются. Поиск по нету ничего не дал.
Есть ли какие-нибудь определенные моменты, которые могут привести к такому рода поведению? |
|
|
ViGOur |
16.6.2009, 23:08
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Покажи код, ошибки какие-нибудь возвращаются?
|
|
|
LonelyDreamer |
25.6.2009, 8:05
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 25.6.2009 Пользователь №: 850 Спасибо сказали: 0 раз(а) Репутация: 0 |
Аналогичная проблема. На форме два QTableView для отображения данных из двух таблиц БД (SQLite3). Для одной таблицы используется QSqlTableModel и всё нормально (редактируется), для второй QSqlRelationalTableModel и данные не редактируются. Для OnFieldChange после редактирования данных в QTableView сразу же возвращается старое значение. Для OnRowChange после редактирования в QTableView отображатеся новое значение, но в БД остается старое, и после редактирования какой-нибудь другой ячейки в QTableView старое значение возвращается обратно.
Как заставить QTableView\QSqlRelationalTableModel вносить изменения в БД так же, как это делают QTableView\QSqlTableModel? Код, где создаются Model/View: Раскрывающийся текст
|
|
|
mva |
25.6.2009, 9:20
Сообщение
#4
|
Участник Группа: Участник Сообщений: 104 Регистрация: 15.3.2009 Из: Киров Пользователь №: 615 Спасибо сказали: 3 раз(а) Репутация: 0 |
Думаю, что экземпляр QSqlRelationalTableModel не может по каким-то причинам сохранить данные на сервере. Если бы это был отдельный процесс с сервером, то можно было бы посмотреть обмен данными с помощью сниффера. Но SQLite работает в этом же процессе, поэтому сниффером не получится.
Надо искать способ вывести сообщение об ошибке через какое-нибудь событие или сигнал командами qDebug() << db.lastError().text() или qDebug() << db.driver().lastError().text() Например, можно политику установить в OnManualSubmit, сделать на форме кнопку "Обновить" и к ней привязать команду submitAll(), а следом вывод сообщений об ошибках, как написано выше. |
|
|
Litkevich Yuriy |
25.6.2009, 9:39
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
LonelyDreamer, как себя ведёт пример %QTDIR%\examples\sql\relationaltablemodel ?
|
|
|
LonelyDreamer |
25.6.2009, 11:51
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 25.6.2009 Пользователь №: 850 Спасибо сказали: 0 раз(а) Репутация: 0 |
Пример %QTDIR%\examples\sql\relationaltablemodel после небольшой доработки для работы с файлами заработал как надо. После комментирования практически всего своего кода, когда результат не изменился, полез посмотреть как создаются таблицы и обнаружил, что для этой таблицы пропустил PRIMARY KEY. В этом и заключалась проблема.
|
|
|
Litkevich Yuriy |
25.6.2009, 17:12
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Ну вот и хорошо, разобрался. А вообще проверять на стандартных примерах стоит, так как другим людям всегда проще запустить стандартный пример и посмотреть поведение.
|
|
|
Текстовая версия | Сейчас: 21.12.2024, 19:07 |