Не удается программно изменять значения модели БД, submitAll возвращает false после вызова setRecord |
Здравствуйте, гость ( Вход | Регистрация )
Не удается программно изменять значения модели БД, submitAll возвращает false после вызова setRecord |
Rocky |
17.2.2009, 10:43
Сообщение
#1
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Всем привет! Помогите пожалуйста с проблемкой... Создаю таблицу БД SQLite 3 таким образом:
Таблица создана. Затем нужно сделать ее редактирование, и при этом вставлять записи в нужное место (не обязательно в конец). Вставку делаю так:
После этого m_pModel->submitAll() возвращает false, т.е. ничего не сохраняется... Если цикл по строкам убрать, и оставить только саму вставку строки, то submitAll возвращает true (только вставленная строка перемещается в другое место). Пробовал через setRecord менять другие столбцы (не id), результат тот же. Пробовал менять данные через индексы и setData, результат тот же... m_pDataTableView - это QTableView. Модель устанавливается в конструкторе класса через setModel(pModel); Сама модель:
В чем могут быть грабли? Никто не пробовал менять данные таким образом? Как можно обойти это? QT 4.3.4. Заранее большое спасибо! -----Добавлено------ Блин, удалите пожалуйста эту тему, инет сглючил, 2 темы создал случайно Сообщение отредактировал Rocky - 17.2.2009, 10:46 |
|
|
Константин |
17.2.2009, 20:44
Сообщение
#2
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
/* от дурная башка */ ...сначала просто поинтересовался "почему так?", потом, не глядя на код выше, три перекочевало в два, а теперь уже хрен знает отчего я это ляпнул...дожно быть, что-то показалось )
Ну, если по правилам хорошего тона )) нужны именно ключи к каждой строке таблицы, ок, пусть будут. Цитата используй ключи для полей, по которым наиболее часто будет производиться поиск и сортировка ок. Только вот поиска у меня не будет никакого по таблице. БД - это просто хранилище информации, которую программа считывает при запуске и хранит ее в своих внутренних структурах/классах/контейнерах (в основном std::set). И поиск ведется уже средствами самого std::set, и здесь есть уникальное поле. тут не просто правила хорошего тона. поиска может и не будет, а редактировать записи предполагается - склтаблмодель будет работать значительно эффективнее с таблицами, имеющими PK, чем с таблицами, таковых не имеющими. в частности ведь гораздо проще и быстрее обработать `WHERE id=5`, чем `WHERE id=5 AND PipeType=uhpoiuhfp AND D_outside=hopwojdpeo AND d_inside=joifjweoq AND Roughness=idjidj AND Lamda=lamda` Сообщение отредактировал Константин - 17.2.2009, 20:49 |
|
|
Текстовая версия | Сейчас: 28.3.2024, 14:47 |