Название: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 20:23 Доброго времени суток, для курсовой работы(работа с БД) необходимо написать функцию которая удаляла б выделенную колонку.Нашел запрос alter tabla table_name delete column column_name но не могу получить название выделенного поля.Заранее прошу прощения за возможно не очень корректно поставленный вопрос просто с Qt и Gui вообщем только начинаю работать.Заранее спасибо за помощь)
Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 20:29 Что бы получить номер текущей колонки:
QModelIndex QAbstractItemView::currentIndex() const int QModelIndex::column() const Что бы получить имя по номеру колонки: QSqlRecord QSqlTableModel::record() const QString QSqlRecord::fieldName(int index) const Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 20:48 Все решил проблему огромное спасибо
Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 21:05 Что бы получить номер текущей колонки: попробовал удалить поле но оно по прежнему на месте не могу понять в чем проблема...QModelIndex QAbstractItemView::currentIndex() const int QModelIndex::column() const Что бы получить имя по номеру колонки: QSqlRecord QSqlTableModel::record() const QString QSqlRecord::fieldName(int index) const QSqlRecord record; int cnumber; QString fieldName; QSqlQuery query; QModelIndex index=ui->sqlTable->currentIndex(); qDebug()<<index; cnumber=index.column(); record=model->record(); fieldName=record.fieldName(cnumber); query.exec("alter table "+tableName+" drop column "+fieldName); model->setTable(tableName); model->select(); ui->sqlTable->setModel(model); Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 21:09 Проверяйте ошибки.
Что возвращает exec и QSqlQuery::lastError. Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 21:18 Что у вас за база?
Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 21:19 Что у вас за база? QSqlDatabase db;db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(dbName); db.open(); Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 21:20 Sqlite не поддерживает удаление столбцов.
http://stackoverflow.com/questions/8442147/how-to-delete-or-add-column-in-sqlite Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 21:23 Sqlite не поддерживает удаление столбцов. Ок я понял, а через QSqltablemodel удалить колонку никак нельзя?http://stackoverflow.com/questions/8442147/how-to-delete-or-add-column-in-sqlite Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 21:28 http://qt-project.org/doc/qt-5/qsqltablemodel.html#removeColumns
Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 21:35 model->removeColumns(cnumber,1,index);
возвращает false также пробовал model->removeColumn(cnumber,index); тот же результат. Я так понял единственный выход это создавать новую таблицу копировать всю инфу из старой кроме указанного поля и переименовывать ее? Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 21:41 А так?
model->removeColumn( cnumber, QModelIndex() ); Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 21:44 А так? все равно false возвращает(model->removeColumn( cnumber, QModelIndex() ); Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 21:58 все равно false возвращает( Скорее всего он пытается честно удалить столбец в таблице и получает отлуп от sqlite.Ещё можно скрывать столбец в QTableView::hideColumn Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 22:03 все равно false возвращает( Скорее всего он пытается честно удалить столбец в таблице и получает отлуп от sqlite.Ещё можно скрывать столбец в QTableView::hideColumn Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: Old от Июня 09, 2014, 22:05 Либо меняйте базу, либо манипулируйте столбцами, через создание новой таблицы.
Название: Re: Удаление поля из QTableview,QSqlTableModel Отправлено: pro100skif от Июня 09, 2014, 22:22 спасибо за помощь
|