![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Rocky |
![]()
Сообщение
#1
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет! Помогите пожалуйста с проблемкой... Создаю таблицу БД 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 |
|
|
![]() |
Rocky |
![]()
Сообщение
#2
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
![]() Цитата кстати, проблема вполне может расти как раз из отсутствия PK, т.к. вместо поиска по уникальному ключу у тебя выполняется поиск по полному совпадению всех полей строки. а если таких строк больше одной? Я так понимаю поиск по полному совпадению всех полей строки где-то внутри? Потому что явно я вроде как нигде не ищу ничего. Взятие i-й записи это ведь не поиск. Больше одной одинаковой строки в таблице быть не может. Ни физически, ни программно. Не может быть 2 трубы с одинаковыми маркировками (названиями) и характеристиками... но речь не об этом. По-поводу AUTOINCREMENT заватра на работу приеду, попробую так сделать. Цитата делаю вывод, что к уникам ты пока не привязываешься, а используешь их только для сортировки или чего-то подобного Именно ![]() ![]() Цитата ...и тут бы ещё неплохо транзакцию добавить Она есть, спасибо. Тут опустил, т.к. она вроде как не имеет отношения к теме. Цитата используй ключи для полей, по которым наиболее часто будет производиться поиск и сортировка ок. Только вот поиска у меня не будет никакого по таблице. БД - это просто хранилище информации, которую программа считывает при запуске и хранит ее в своих внутренних структурах/классах/контейнерах (в основном std::set). И поиск ведется уже средствами самого std::set, и здесь есть уникальное поле. 2. Цитата индекс модели через вьюху и с ним дальнейшая работа - в данном случае не ах
Сообщение отредактировал Rocky - 17.2.2009, 20:08 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.7.2025, 21:02 |