crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Вычисляемый столбец в QSqlRelationalTableModel
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
SABROG Дата 3.9.2009, 16:04
 
Цитата(ViGOur @ 3.9.2009, 16:04) *
но вот только не знаю можно ее сделать для SqLite.


Можно.
nZil Дата 3.9.2009, 16:03
  Ясно что надо писать свои классы, на что нужно время, так что придется отложить это дело на неопределенный срок
Спасибо всем за внимание.
ViGOur Дата 3.9.2009, 15:04
  Как вариант сделать вьюху, но вот только не знаю можно ее сделать для SqLite.
Но это только в том случае, если запрос напрямую к SqLite работает, а в модели нет.

Поэтому для начала нужно проверить правильно ли работает запрос... :)
Litkevich Yuriy Дата 3.9.2009, 14:55
 
Цитата(nZil @ 3.9.2009, 17:50) *
только как это реализовать не написано
Это реализованно в БД. Один из столбцов в таблице является вычисляемым.
Код для Firebird'а:
CREATE TABLE REFPOINT
(
  F_ID Integer NOT NULL,
  F_NAME D_NAME NOT NULL,
  F_OBJ D_NAME NOT NULL,
  F_SUBOBJ D_NAME DEFAULT '',
  F_OBJNAME COMPUTED BY (F_OBJ||' '||F_SUBOBJ)
  F_COMMENT D_COMMENT,
  F_REGDATE Timestamp NOT NULL,
  CONSTRAINT PK_REFPOINT PRIMARY KEY (F_ID),
  CONSTRAINT UK_REFPOINT UNIQUE (F_NAME)
);
nZil Дата 3.9.2009, 13:50
  а под SqLite не очень( Вот что нарыл http://www.forum.crossplatform.ru/index.ph...art=#entry21388
только как это реализовать не написано(
ViGOur Дата 3.9.2009, 13:02
  Кажется понял в чем проблема, если сделать тупо запрос приведенный тобой, то результат также будет не тот, который хотелось бы! :)
Попробуй так:
SELECT id, incode, CONCAT( surname, " ",  name,  " ", lastname), birthdate, pseries, pnumber FROM workers

по крайней мере под mysql работает... :)
nZil Дата 3.9.2009, 12:28
 
Цитата(ViGOur @ 3.9.2009, 12:15) *
А как ты делал и у тебя не работало, так?
    workersModel = new SqlRelationalTableModel;
    workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");

    workersView = new QTableView;
    // ...


да
ViGOur Дата 3.9.2009, 12:15
  А как ты делал и у тебя не работало, так?
    workersModel = new SqlRelationalTableModel;
    workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");

    workersView = new QTableView;
    // ...
nZil Дата 3.9.2009, 11:39
  Описание класса:
#ifndef SQLRELATIONALTABLEMODEL_H
#define SQLRELATIONALTABLEMODEL_H

#include <QSqlRelationalTableModel>
#include <QSqlQuery>

class SqlRelationalTableModel : public QSqlRelationalTableModel
{
public:
    SqlRelationalTableModel();
    void setSqlQuery (const QString &query);
};

#endif // SQLRELATIONALTABLEMODEL_H

и его реализация:
#include "sqlrelationaltablemodel.h"

SqlRelationalTableModel::SqlRelationalTableModel()
{}
void SqlRelationalTableModel::setSqlQuery(const QString &query)
{
    this->setQuery(QSqlQuery(query));
}



создание модели и представления:
void MWindow::createWorkersTab()
{
    workersModel = new SqlRelationalTableModel;
    workersModel->setTable("workers");
    workersModel->setHeaderData(0, Qt::Horizontal, tr("Number in database"));
    workersModel->setHeaderData(1, Qt::Horizontal, tr("Surname"));
    //workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");
    workersModel->select();

    workersView = new QTableView;
    workersView->setModel(workersModel);
    workersView->setSortingEnabled(true);
    workersView->setAlternatingRowColors(true);
    workersView->setShowGrid(false);
    workersView->setSelectionBehavior(QAbstractItemView::SelectRows);
    workersView->setSelectionMode(QAbstractItemView::SingleSelection);
    //workersView->verticalHeader()->hide();
    workersView->resizeColumnsToContents();
    workersView->setEditTriggers(QAbstractItemView::NoEditTriggers);

    main->addTab(workersView, QIcon (":/images/qt.png"), tr("Workers"));
}




Строка запроса закомментирована, ибо не правильно работает:(
Litkevich Yuriy Дата 2.9.2009, 22:54
  nZil, приведи код и класса SqlRelationalTableModel (весь, и заголовочник и реализацию)
и приведи код использования и модели и приедствления.


Справка по тэгам
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 3:53