crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Баг в QSqlTableModel?, Старанное поведение с записями у которых одно поле содержит NULL
Kagami
  опции профиля:
сообщение 12.3.2009, 15:40
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Написал небольшую программку для графической работы со своей базой sqlite3.
Базу создавал следующим SQL-запросом:
"CREATE TABLE updates (name TEXT UNIQUE, file TEXT, params TEXT)"

Потом сделал форму с QTableView и, соответственно, стал использовать QSqlTableModel. В конструкторе у меня есть такие строчки:
    //updatesDb - указатель на уже открытую ранее базу данных
    model = new QSqlTableModel(this, *updatesDb);
    tableView->setModel(model);
    model->setTable("updates");

А еще добавил слот, который вызывается по нажатию кнопки Del для удаления записи:
void UpdateBaseViewer::deleteRecord() {
    QMessageBox::information(this, "Deleting record", "Deleting started", QMessageBox::Ok, QMessageBox::Ok);
    int currentRow = tableView->currentIndex().row();
    model->removeRows(currentRow, 1);
    if (model->rowCount() == currentRow) tableView->setCurrentIndex(model->index(currentRow - 1,0));
    else tableView->setCurrentIndex(model->index(currentRow,0));
}

Строки в базу у меня добавлялись с помощью QSqlQuery:
    query.prepare("INSERT INTO updates VALUES (?, ?, ?)");
    query.addBindValue(updateName);
    query.addBindValue(updateFile);
    query.addBindValue(updateParams);
    query.exec();

при этом были строки, у которых третий параметр был NULL. Так вот, с такими строками я ничего не могу сделать ни в QTableView, ни в QSqlTableModel - ни удалить, ни изменить.
Это баг или фича?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Kagami
  опции профиля:
сообщение 13.3.2009, 21:59
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Попробуй вот так :)
    appdbquery.bindValue(":id", GID_ADMIN); appdbquery.bindValue(":group", QString());
    appdbquery.exec();

Я понимаю, так делать не хорошо, но если это позволяется, то почему бы и нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 16:41