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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlRelationalDelegate подскажите  (Прочитано 4743 раз)
phill13
Гость
« : Май 10, 2010, 22:37 »

QSqlRelationalTableModel *compositionsRelation = new QSqlRelationalTableModel;
    compositionsRelation->setTable("bd");

    compositionsRelation->setEditStrategy(QSqlTableModel::OnRowChange);

    compositionsRelation->setRelation(0, QSqlRelation("client", "Kod_client", "Surname"));
    compositionsRelation->setRelation(1, QSqlRelation("film", "Kod_film", "Film"));
    compositionsRelation->setRelation(2, QSqlRelation("seller", "Kod_seller", "Surname"));
    compositionsRelation->setRelation(5, QSqlRelation("c_document", "Kod_document", "Document"));

    compositionsRelation->select();

    compositionsRelation->setHeaderData(0, Qt::Horizontal, QObject::tr("Фамилия клиента"));
    compositionsRelation->setHeaderData(1, Qt::Horizontal, QObject::tr("Название фильма"));
    compositionsRelation->setHeaderData(2, Qt::Horizontal, QObject::tr("Фамилия продавца"));
    compositionsRelation->setHeaderData(3, Qt::Horizontal, QObject::tr("Дата выдачи"));
    compositionsRelation->setHeaderData(4, Qt::Horizontal, QObject::tr("Дата возврата"));
    compositionsRelation->setHeaderData(5, Qt::Horizontal, QObject::tr("Документ залога"));
    compositionsRelation->setHeaderData(6, Qt::Horizontal, QObject::tr("Возврат"));

    QTableView *view = new QTableView(this);
    view->setModel(compositionsRelation);
    view->setWindowTitle(QObject::tr("Видео прокат"));
    view->setGeometry(190,45,691,351);
    view->setItemDelegate(new QSqlRelationalDelegate(view));
    view->show();


Помогите, на изменение значения в любой ячейки таблицы выдает ошибку "QSqlQuery::value: not positioned on a valid record".
Подключаю базу создаю QSqlRelationalTableModel. Потом создаю "QTableView *view".
Пытаюсь засунуть делегат "view->setItemDelegate(new QSqlRelationalDelegate(view));" ,чтобы можно было нормально редактировать таблицу, на что он мне пишет что "QSqlRelationalDelegate is not a type name".

Объясните пожалуйста что не так? уже все кипит, и объясните что такое делегат и  с чем его едят. Непонимающий
« Последнее редактирование: Май 11, 2010, 10:48 от phill13 » Записан
Marat(Qt)
Гость
« Ответ #1 : Май 11, 2010, 01:41 »

#include <QSqlRelationalDelegate>
Записан
phill13
Гость
« Ответ #2 : Май 11, 2010, 07:09 »

#include "dialog.h"
#include "ui_dialog.h"
#include <QtSql>
#include <QtGui>
#include <QTextCodec>
#include <QSqlRelationalDelegate>

подключенно все

Даже вот с этим база компилится "QSqlRelationalDelegate is not a type name".

Но при изменении в таблице значения  в базе пишет вот это "QSqlQuery::value: not positioned on a valid record" и не сохраняет данные.
В чем трабла не пойму
« Последнее редактирование: Май 11, 2010, 07:39 от phill13 » Записан
phill13
Гость
« Ответ #3 : Май 11, 2010, 10:50 »

Люди чуствует моя душа что вот эта ошибка не дает редактировать  таблицу "QSqlQuery::value: not positioned on a valid record".
Помогите!
Записан
phill13
Гость
« Ответ #4 : Май 11, 2010, 10:56 »

compositionsRelation->setRelation(0, QSqlRelation("client", "Kod_client", "Surname"));
    compositionsRelation->setRelation(1, QSqlRelation("film", "Kod_film", "Film"));
    compositionsRelation->setRelation(2, QSqlRelation("seller", "Kod_seller", "Surname"));
    compositionsRelation->setRelation(5, QSqlRelation("c_document", "Kod_document", "Document"));

если отключить эту часть программы , то редактируется успешно, но эта часть отвечает за замену столбцо с других таблиц чтобы не циферками отображалась информация в таблицы bd
Записан
Marat(Qt)
Гость
« Ответ #5 : Май 11, 2010, 11:34 »

Код:
    compositionsRelation->setRelation(0, QSqlRelation("client", "\"Kod_client\"", "\"Surname\""));
    compositionsRelation->setRelation(1, QSqlRelation("film", "\"Kod_film\"", "\"Film\""));
    compositionsRelation->setRelation(2, QSqlRelation("seller", "\"Kod_seller\"", "\"Surname\""));
    compositionsRelation->setRelation(5, QSqlRelation("c_document", "\"Kod_document\"", "\"Document\""));

Записан
phill13
Гость
« Ответ #6 : Май 11, 2010, 12:12 »

нечего не выводит.
Код клиента и Код фильма у меня состовной ключ в таблице bd .

Такие страности заметел
 compositionsRelation->setRelation(0, QSqlRelation("client", "Kod_client", "Surname"));
    compositionsRelation->setRelation(1, QSqlRelation("film", "Kod_film", "Film"));
отключаю две замены столбцов(они у меня в таблице бд в роли составного ключа) все прекрасно работает.

Как только включаю замену одну из них прекращает все работать и выдает ошибку "QSqlQuery::value: not positioned on a valid record".
СУДБ mysql использую.
« Последнее редактирование: Май 11, 2010, 12:51 от phill13 » Записан
cnx.faeon
Гость
« Ответ #7 : Август 05, 2010, 18:24 »

Аналогичная проблема и у меня

взято из стандартного примера

Код:
tablemodel=new QSqlTableModel();
tablemodel->setTable("test");
tablemodel->setEditStrategy(QSqlTableModel::OnManualSubmit);
tablemodel->select();
tablemodel->removeColumn(0); // don't show the ID
tablemodel->setHeaderData(0, Qt::Horizontal, tr("Name"));
tablemodel->setHeaderData(1, Qt::Horizontal, tr("Salary"));

при попытке сохранить данные выдает
Код:
QSqlQuery::value: not positioned on a valid record
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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