Russian Qt Forum

Qt => Базы данных => Тема начата: miha-ha от Февраль 28, 2009, 16:22



Название: вычисляемый столбец в QSqlTableModel???
Отправлено: miha-ha от Февраль 28, 2009, 16:22
Как можно добавить вычисляемый столбец?
для того что бы в базе не хранить лишнюю информацию.
например есть столбцы: kol, price
нужно добавить: sum = kol*price
если делать с помощью QSqlQueryModel запрос вида: select kol, price, kol*price from table
то всё конечно работает, но QSqlQueryModel не позволяет добавлять новую стоку с кешированием. т.е. с возможностью отложить запись изменений в базу.
Очень не хочется изобретать велосипед :)
Подскажите, кто и как решал данную проблему???

версия 4.4.3


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: BRE от Февраль 28, 2009, 16:35
Помню было такое... оказалось в Qt3:
void QSqlCursor::setCalculated ( const QString & name, bool calculated )
QVariant QSqlCursor::calculateField ( const QString & name )

Как в Qt4 с этим смотрю.


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: lit-uriy от Февраль 28, 2009, 17:00
>>для того что бы в базе не хранить лишнюю информацию.
дак ты и cделай вычисляемый столбец в базе, например в FireBird:
Код:
CREATE TABLE MYTABLE(
  kol Integer,
  price Decimal(10,3),
  RESUME COMPUTED BY (kol*price);
);


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: miha-ha от Февраль 28, 2009, 17:13
использую SQLITE
необходима мобильность программы.


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: lit-uriy от Февраль 28, 2009, 17:17
Можно свою проммодель создать, которая будет еще один столбец делать.


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: miha-ha от Февраль 28, 2009, 17:23
Можно свою проммодель создать, которая будет еще один столбец делать.
наследовать от QAbstractProxyModel ???


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: miha-ha от Февраль 28, 2009, 17:51
Можно свою проммодель создать, которая будет еще один столбец делать.
В том то и вопрос: как добавить???
используя insertColumn?
но index(0,<номер_нового_столбца>) возвращает false
т.е. setData не работает.


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: miha-ha от Март 02, 2009, 13:30
никто не делал такого?


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: BRE от Март 02, 2009, 14:43
никто не делал такого?
Скажу про себя.
Я использую свои модели (наследуются от QAbstractTableModel), а с использованием QSqlTableModel у меня как-то не сложилось (не знаю почему).  :)


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: miha-ha от Март 03, 2009, 17:19
Скажу про себя.
Я использую свои модели (наследуются от QAbstractTableModel), а с использованием QSqlTableModel у меня как-то не сложилось (не знаю почему).  :)
Спасибо! Попробую...


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: alex-v от Июнь 24, 2011, 09:44
Я решил это средствами SQL.
К примеру:
Код:
select year, month, year*0.1 as qwe from reports


Название: Re: вычисляемый столбец в QSqlTableModel???
Отправлено: pokidoff от Июнь 24, 2011, 14:18
Я решил это средствами SQL.
К примеру:
Код:
select year, month, year*0.1 as qwe from reports
Тебе ж сказали - нужна редактируемая модель.

Я для себя нашел решение, правда в Oracle. Это виртуальные колонки. Безумно гибко.
Код
SQL
ALTER TABLE tbl ADD col_name AS (tbl.col1+tbl.col2)
 

А вообще тут можно унаследоваться от QSqlQueryModel