![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
VBA |
![]() ![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 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 |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
я так делал (C++):
|
|
|
VBA |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Так это получается удаляються только строки из QTableView, а из самой таблицы БД нет. да в приведенном примере нет подтверждения действия так как у меня на это отдельная кнопочка. Но я пока вижу разницу только в методах:Мне надо, чтобы удалялись записи из самой БД, физически, если можно так назвать. у тебя removeRow(...), а уменя removeRows(...) может быть в этом дело? а подверждаю так:
|
|
|
VBA |
![]()
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Хм. Даже не знаю в чем может быть проблема, я проверял только с двумя БД SQLite и FireBird. А это не может быть багом именно PyQt? (что-то не до конца реализовано)
|
|
|
VBA |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 13.1.2009 Пользователь №: 487 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Уф... заработало...
![]() У меня в таблице БД первое поле - это ID записи. Соответственно, я его пытался не отображать в QTableView. Согласно офф. доке http://doc.trolltech.com/4.4/qsqltablemodel.html#details я написал:
Поле стало невидимым, но вылезли вот такие непонятные проблемы (кстати, до сих пор не пойму их суть). Закоментировал эту строку и все чудом заработало. Поле (а точнее уже столбец) скрываю не в модели, а в вьювере:
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Поле (а точнее уже столбец) скрываю не в модели, а в вьювере: угу, сюда еще глянь
|
|
|
![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 6.4.2025, 9:40 |