[РЕШЕНО] QTableView + QSqlTableModel, Удаление данных, PyQt4 |
Здравствуйте, гость ( Вход | Регистрация )
[РЕШЕНО] QTableView + QSqlTableModel, Удаление данных, PyQt4 |
VBA |
13.1.2009, 18:15
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: 0 |
Использую QSqlTableModel и QTableView в связке с PyQt4, для отображения данных из таблицы БД.
Пытаюсь удалить строку, которую выбрал пользователь в TableView, таким образом:
В результате получаю ошибку: QSqlQuery::value: not positioned on a valid record Причем, TableView.model().removeRow(Index.row()) возвращает True, а "затык" происходит на TableView.model().submitAll() (возвращает False). ТableView.model().lastError().text() пишет следующее: No data supplied for parameters in prepared statement QMYSQL3: Unable to execute statement Добавление записей происходит без проблем, а вот удаление... ((( Сообщение отредактировал Litkevich Yuriy - 31.1.2009, 12:34 |
|
|
Litkevich Yuriy |
13.1.2009, 18:29
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
я так делал (C++):
|
|
|
VBA |
13.1.2009, 18:50
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
13.1.2009, 18:54
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Так это получается удаляються только строки из QTableView, а из самой таблицы БД нет. да в приведенном примере нет подтверждения действия так как у меня на это отдельная кнопочка. Но я пока вижу разницу только в методах:Мне надо, чтобы удалялись записи из самой БД, физически, если можно так назвать. у тебя removeRow(...), а уменя removeRows(...) может быть в этом дело? а подверждаю так:
|
|
|
VBA |
13.1.2009, 19:16
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
13.1.2009, 19:52
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Хм. Даже не знаю в чем может быть проблема, я проверял только с двумя БД SQLite и FireBird. А это не может быть багом именно PyQt? (что-то не до конца реализовано)
|
|
|
VBA |
14.1.2009, 0:21
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: 0 |
Уф... заработало...
У меня в таблице БД первое поле - это ID записи. Соответственно, я его пытался не отображать в QTableView. Согласно офф. доке http://doc.trolltech.com/4.4/qsqltablemodel.html#details я написал:
Поле стало невидимым, но вылезли вот такие непонятные проблемы (кстати, до сих пор не пойму их суть). Закоментировал эту строку и все чудом заработало. Поле (а точнее уже столбец) скрываю не в модели, а в вьювере:
|
|
|
Litkevich Yuriy |
14.1.2009, 5:56
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Поле (а точнее уже столбец) скрываю не в модели, а в вьювере: угу, сюда еще глянь
|
|
|
Текстовая версия | Сейчас: 11.12.2024, 18:48 |