Russian Qt Forum
Ноябрь 23, 2024, 11:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Удаление поля из QTableview,QSqlTableModel
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Удаление поля из QTableview,QSqlTableModel (Прочитано 8654 раз)
pro100skif
Гость
Удаление поля из QTableview,QSqlTableModel
«
:
Июнь 09, 2014, 20:23 »
Доброго времени суток, для курсовой работы(работа с БД) необходимо написать функцию которая удаляла б выделенную колонку.Нашел запрос alter tabla table_name delete column column_name но не могу получить название выделенного поля.Заранее прошу прощения за возможно не очень корректно поставленный вопрос просто с Qt и Gui вообщем только начинаю работать.Заранее спасибо за помощь)
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #1 :
Июнь 09, 2014, 20:29 »
Что бы получить номер текущей колонки:
QModelIndex QAbstractItemView::currentIndex() const
int QModelIndex::column() const
Что бы получить имя по номеру колонки:
QSqlRecord QSqlTableModel::record() const
QString QSqlRecord::fieldName(int index) const
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #2 :
Июнь 09, 2014, 20:48 »
Все решил проблему огромное спасибо
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #3 :
Июнь 09, 2014, 21:05 »
Цитата: Old от Июнь 09, 2014, 20:29
Что бы получить номер текущей колонки:
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);
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #4 :
Июнь 09, 2014, 21:09 »
Проверяйте ошибки.
Что возвращает exec и QSqlQuery::lastError.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #5 :
Июнь 09, 2014, 21:18 »
Что у вас за база?
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #6 :
Июнь 09, 2014, 21:19 »
Цитата: Old от Июнь 09, 2014, 21:18
Что у вас за база?
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(dbName);
db.open();
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #7 :
Июнь 09, 2014, 21:20 »
Sqlite не поддерживает удаление столбцов.
http://stackoverflow.com/questions/8442147/how-to-delete-or-add-column-in-sqlite
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #8 :
Июнь 09, 2014, 21:23 »
Цитата: Old от Июнь 09, 2014, 21:20
Sqlite не поддерживает удаление столбцов.
http://stackoverflow.com/questions/8442147/how-to-delete-or-add-column-in-sqlite
Ок я понял, а через QSqltablemodel удалить колонку никак нельзя?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #9 :
Июнь 09, 2014, 21:28 »
http://qt-project.org/doc/qt-5/qsqltablemodel.html#removeColumns
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #10 :
Июнь 09, 2014, 21:35 »
model->removeColumns(cnumber,1,index);
возвращает false
также пробовал
model->removeColumn(cnumber,index);
тот же результат.
Я так понял единственный выход это создавать новую таблицу копировать всю инфу из старой кроме указанного поля и переименовывать ее?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #11 :
Июнь 09, 2014, 21:41 »
А так?
model->removeColumn( cnumber, QModelIndex() );
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #12 :
Июнь 09, 2014, 21:44 »
Цитата: Old от Июнь 09, 2014, 21:41
А так?
model->removeColumn( cnumber, QModelIndex() );
все равно false возвращает(
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #13 :
Июнь 09, 2014, 21:58 »
Цитата: pro100skif от Июнь 09, 2014, 21:44
все равно false возвращает(
Скорее всего он пытается честно удалить столбец в таблице и получает отлуп от sqlite.
Ещё можно скрывать столбец в QTableView::hideColumn
Записан
pro100skif
Гость
Re: Удаление поля из QTableview,QSqlTableModel
«
Ответ #14 :
Июнь 09, 2014, 22:03 »
Цитата: Old от Июнь 09, 2014, 21:58
Цитата: pro100skif от Июнь 09, 2014, 21:44
все равно false возвращает(
Скорее всего он пытается честно удалить столбец в таблице и получает отлуп от sqlite.
Ещё можно скрывать столбец в QTableView::hideColumn
ну вроде как работает но когда создаешь новое поле с названием которое "было удалено" бд его не создает, поскольку такое поле уже есть...
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...