Russian Qt Forum

Qt => Базы данных => Тема начата: Alendorff от Ноябрь 29, 2013, 12:58



Название: Нужна помощь с QSqlRelationalTableModel и около того.
Отправлено: Alendorff от Ноябрь 29, 2013, 12:58
Здравствуйте.
У меня есть база данных (на sqlite) состоящая из нескольких таблиц:
Код:
create table Spec(code_spec integer not null, code_spec_PNU integer  unique not null, name_spec varchar(200)  unique not null, name_spec_PNU varchar(200)  unique not null, PRIMARY KEY(code_spec)); 
create table Circle(id_circle INTEGER PRIMARY KEY AUTOINCREMENT, name_circle varchar(15)  unique not null);
create table Disc(id_disc INTEGER PRIMARY KEY AUTOINCREMENT, name_disc varchar(200) unique not null, id_circle references Circle on delete cascade on update cascade);
create table Norm (id_disc references Disc on delete cascade on update cascade, code_spec references Spec on delete cascade on update cascade, hours integer not null, PRIMARY KEY(id_disc, code_spec));

Самая важная для меня - таблица Norm. Нужно организовать такую форму работы с ней:
(http://s29.postimg.org/rt6ozne4n/image.jpg)
 Для отображения используется другая таблица, которая содержит в себе записи только для конкретного кода специальности. Таблица формируется так:
Код:
void MainWindow::on_comboBox_currentTextChanged(const QString &arg1)
{
    QSqlQuery g;
    g.exec("delete from Main");
    g.prepare("INSERT INTO Main SELECT name_circle, name_disc, hours FROM Circle NATURAL JOIN Disc NATURAL JOIN Norm NATURAL JOIN Spec WHERE code_spec=?");
    g.addBindValue(arg1);
    g.exec();
    MainModel->select();
}

Фактически пользователь работает именно с этой таблицей и записи добавляет в неё же. Поэтому мне нужно как-то новые добавленные записи обработать так, чтобы в моей таблице Norm появлялись новые записи.
Может мне кто-нибудь подсказать как это сделать?
Если что, тут можно скачать весь проект для creator'а: https://github.com/Alendorff/DB_Lab6 (https://github.com/Alendorff/DB_Lab6)
Надеюсь на вашу помощь, заранее спасибо.


Название: Re: Нужна помощь с QSqlRelationalTableModel и около того.
Отправлено: dio от Ноябрь 29, 2013, 18:05
А зачем Вам нужна таблица Main? Работайте с таблицей Norm. Используйте QSqlRelationalTableModel+ filter или создайте свою модель.


Название: Re: Нужна помощь с QSqlRelationalTableModel и около того.
Отправлено: Alendorff от Декабрь 03, 2013, 04:13
Мне вот нравится тоже эта идея. Но нас просили сделать временную таблицу, из которой при смене значения в комбобоксе удалять все записи и селектить снова из разных таблиц, а если нужно добавить что-то, то там вообще целая песня ) По мне так странный вариант, и я тоже сделал с использованием фильтра. Надеюсь, что примут :)


Название: Re: Нужна помощь с QSqlRelationalTableModel и около того.
Отправлено: lexflax от Январь 18, 2014, 17:34
Не Федосеев у вас преподователь случаем?)