Название: QSqlRelationalDelegate подскажите Отправлено: 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". Объясните пожалуйста что не так? уже все кипит, и объясните что такое делегат и с чем его едят. ??? Название: Re: QSqlRelationalDelegate подскажите Отправлено: Marat(Qt) от Май 11, 2010, 01:41 #include <QSqlRelationalDelegate>
Название: Re: QSqlRelationalDelegate подскажите Отправлено: phill13 от Май 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" и не сохраняет данные. В чем трабла не пойму Название: Re: QSqlRelationalDelegate подскажите Отправлено: phill13 от Май 11, 2010, 10:50 Люди чуствует моя душа что вот эта ошибка не дает редактировать таблицу "QSqlQuery::value: not positioned on a valid record".
Помогите! Название: Re: QSqlRelationalDelegate подскажите Отправлено: phill13 от Май 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 Название: Re: QSqlRelationalDelegate подскажите Отправлено: Marat(Qt) от Май 11, 2010, 11:34 Код: compositionsRelation->setRelation(0, QSqlRelation("client", "\"Kod_client\"", "\"Surname\"")); Название: Re: QSqlRelationalDelegate подскажите Отправлено: phill13 от Май 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 использую. Название: Re: QSqlRelationalDelegate подскажите Отправлено: cnx.faeon от Август 05, 2010, 18:24 Аналогичная проблема и у меня
взято из стандартного примера Код: tablemodel=new QSqlTableModel(); при попытке сохранить данные выдает Код: QSqlQuery::value: not positioned on a valid record |