Russian Qt Forum
Сентябрь 30, 2024, 06:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SQLite + QSqlTableModel + submitAll непонятки...  (Прочитано 5727 раз)
ByKA
Гость
« : Февраль 24, 2009, 17:03 »

Добрый день,

Есть QSqlTableModel с политикой OnManualSubmit на которую подвешена SQLite база.

Изменяем данные:
Код:
QSqlRecord record = SignalModel->record(ssIndex.row());
record.setValue("Gen", "2");
SignalModel->setRecord(ssIndex.row(), record);
После этого в во вьюшке (QTableView) эти изменения появляются.

submitAll вынесен на кнопку
Код:
if (!SignalModel->submitAll())
{
QMessageBox::warning(this, tr("Submit"),
tr("The database reported an error: %1")
.arg(SignalModel->lastError().text()));
}

В Qt 4.4.3 и 4.4.4 submitAll ругается что нет измененных данных (No fields to update).
В Qt 4.3.5 и 4.5.0 вызов проходит нормально, но изменения во вьюшке сбрасываются и БД не попадают (((

В багтрекере нашел ошибку по поводу "No fields to update" : http://www.qtsoftware.com/developer/task-tracker/index_html?method=entry&id=230381
Больше мыслей нет (((
Записан
ByKA
Гость
« Ответ #1 : Февраль 25, 2009, 11:03 »

Добавлю: с setData такая-же ерунда. После submitAll данные сбрасываются и в базу не попадают... Версия 4.5.0.
Записан
ByKA
Гость
« Ответ #2 : Февраль 25, 2009, 12:25 »

И еще добавлю: при изменении политики на QSqlTableModel::OnFieldChange или RowChange данные сбрасываются сразу после окончания ввода (при редактировании данных из формы).
Записан
ranet
Гость
« Ответ #3 : Март 10, 2009, 16:55 »

Проверь пожалуйста, нет ли у тебя где-нибудь похожей строчки:
SignalModel->removeColumn(0);
Если есть - то попробуй убрать.
« Последнее редактирование: Март 10, 2009, 17:00 от ranet » Записан
ByKA
Гость
« Ответ #4 : Март 12, 2009, 11:38 »

removeColumn не использую ((( Вариантов пока не нашел.....
Записан
ranet
Гость
« Ответ #5 : Март 12, 2009, 12:16 »

removeColumn не использую ((( Вариантов пока не нашел.....
а mapper'а таким образом настроенного:
mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit)
у тебя тоже нету?
Посмотрел твой код внимательно:
record.setValue("Gen", "2");
SignalModel->setRecord(ssIndex.row(), record);
-это место подозрения некоторые вызывает, а именно - ты меняешь данные, и после этого выбираешь СНОВА строку (не так важно, что строка - та же самая, которая и была). Возможно что тут как раз изменения и теряются.. Попробуй для эксперимента submit МЕЖДУ этими командами вызвать..
« Последнее редактирование: Март 12, 2009, 12:27 от ranet » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.117 секунд. Запросов: 20.