![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Kagami |
![]()
Сообщение
#1
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Написал небольшую программку для графической работы со своей базой sqlite3.
Базу создавал следующим SQL-запросом:
Потом сделал форму с QTableView и, соответственно, стал использовать QSqlTableModel. В конструкторе у меня есть такие строчки:
А еще добавил слот, который вызывается по нажатию кнопки Del для удаления записи:
Строки в базу у меня добавлялись с помощью QSqlQuery:
при этом были строки, у которых третий параметр был NULL. Так вот, с такими строками я ничего не могу сделать ни в QTableView, ни в QSqlTableModel - ни удалить, ни изменить. Это баг или фича? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Kagami |
![]()
Сообщение
#3
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
То же самое - если все поля заполнены, то с ними можно работать. Если есть NULL - после перехода на другую строку все возвращается как было. Пока нашел небольшой workaround - делать не нулевую, а пустую строку, т.е. QString(""). Выглядит одинаково, но с такими значениями уже можно работать
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Kagami, любопытно, а можешь БД дать?
Qt какой версии? |
|
|
Kagami |
![]()
Сообщение
#5
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Первый раз заметил еще на 4.4.3, сейчас сижу на 4.5.
Прикрепленные файлы
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Kagami, факт глюкаво
однако сосвоей БД я такого не наблюдаю Создается так
![]() и вставку в коде я делаю не так как ты: Цитата INSERT INTO APPGROUP (F_ID, F_GROUP)VALUES (:id, :group) т.е. перечисляю поля для вставки.код:
|
|
|
Kagami |
![]()
Сообщение
#7
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Попробуй вот так
![]()
Я понимаю, так делать не хорошо, но если это позволяется, то почему бы и нет? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Kagami |
![]()
Сообщение
#9
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Я имел в виду писать в базу NULL. Хотя вроде стандартом это не запрещено
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Я имел в виду писать в базу NULL Цитата void QSqlQuery::addBindValue ( const QVariant & val, QSql::ParamType paramType = QSql::In ) Adds the value val to the list of values when using positional value binding. The order of the addBindValue() calls determines which placeholder a value will be bound to in the prepared query. If paramType is QSql::Out or QSql::InOut, the placeholder will be overwritten with data from the database after the exec() call. To bind a NULL value, use a null QVariant; for example, use QVariant(QVariant::String) if you are binding a string. т.к. QString() имеет своё собственное представление отличное от NULL в БД |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 16:15 |