Russian Qt Forum

Qt => Базы данных => Тема начата: Max Payne от Апрель 05, 2012, 13:35



Название: QSqlTableModel и метод setQuery QSqlQueryModel *q=dynamic_cast<QSqlQueryModel*>
Отправлено: Max Payne от Апрель 05, 2012, 13:35
Задача сделать редактирование данных  с  разных таблиц  в одном QTableView. Нашел как это делается через наследование :
Код:
QSqlTableModel *model = new QSqlTableModel(this,dbSql);
QSqlQueryModel *queryModel = dynamic_cast<QSqlQueryModel*>(model);

Модель работает  если делать не большой запрос типа ("select Name, Id from data where Pol = 1")
Но у меня сложный запрос типа
Код:
select Animals.Код_Породы, Animals.Код_Окраса,Animals.Пол,Animals.Кличка,Animals.Дата_рождения,Animals.Родословная,Animals.Отец_Кличка,Animals.Отец_Окрас,Animals.Мать_Кличка,Animals.Мать_Окрас, Заводчик.Заводчики,Владелец.Владелец, View.Expert_1,View.Expert_2, View.NClass_1,View.NClass_2, View.ZOc_1,View.ZOc_2 , View.Nom_Bis_1 , View.Nom_Bis_2, View.Present_1 ,View.Present_2 , View.WCF_Master, View.WCF_Ring, View.BreedShow, View.Paying, View.AddiNote, View.Selling, View.Titul_1,View.Title_1, View.Titul_2, View.Title_2 , View.NB_1, View.NB_2 from Animals, Заводчик,Владелец , View where Заводчик.ID_Breeder=Animals.ID_Breeder And Владелец.ID_owner=Animals.ID_Owner AND View.ID=(select ID from Data where Name='привт') And View.ID_Cat=Animals.ID_Cat And View.AddiList='true'


и выборку корректно делает только по нескольким переменным (у меня это 10 колонок ), а дальше таблица забивается словом, которым определён хидер таблицы. Может кто то с этим сталкивался хелп.
Заранее спасибо.


Название: Re: QSqlTableModel и метод setQuery QSqlQueryModel *q=dynamic_cast<QSqlQueryModel*>
Отправлено: Пантер от Апрель 06, 2012, 13:35
Так делать нельзя. Используй QSqlRelationalTableModel.


Название: Re: QSqlTableModel и метод setQuery QSqlQueryModel *q=dynamic_cast<QSqlQueryModel*>
Отправлено: Max Payne от Апрель 08, 2012, 10:16
Но это модель тоже работает только с одной таблицей =/
Код:
The QSqlRelationalTableModel class provides an editable data model for a single database table, with foreign key support


Название: Re: QSqlTableModel и метод setQuery QSqlQueryModel *q=dynamic_cast<QSqlQueryModel*>
Отправлено: Пантер от Апрель 09, 2012, 09:34
Тогда наследуйся от QSqlQueryModel и реализуй сам редактирование.