Russian Qt Forum
Сентябрь 30, 2024, 06:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нужна помощь с QSqlRelationalTableModel и около того.  (Прочитано 3515 раз)
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. Нужно организовать такую форму работы с ней:

 Для отображения используется другая таблица, которая содержит в себе записи только для конкретного кода специальности. Таблица формируется так:
Код:
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
Надеюсь на вашу помощь, заранее спасибо.
« Последнее редактирование: Ноябрь 29, 2013, 13:10 от Alendorff » Записан
dio
Гость
« Ответ #1 : Ноябрь 29, 2013, 18:05 »

А зачем Вам нужна таблица Main? Работайте с таблицей Norm. Используйте QSqlRelationalTableModel+ filter или создайте свою модель.
« Последнее редактирование: Ноябрь 29, 2013, 22:29 от dio » Записан
Alendorff
Гость
« Ответ #2 : Декабрь 03, 2013, 04:13 »

Мне вот нравится тоже эта идея. Но нас просили сделать временную таблицу, из которой при смене значения в комбобоксе удалять все записи и селектить снова из разных таблиц, а если нужно добавить что-то, то там вообще целая песня ) По мне так странный вариант, и я тоже сделал с использованием фильтра. Надеюсь, что примут Улыбающийся
Записан
lexflax
Гость
« Ответ #3 : Январь 18, 2014, 17:34 »

Не Федосеев у вас преподователь случаем?)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.126 секунд. Запросов: 21.