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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: вычисляемый столбец в QSqlTableModel???  (Прочитано 8698 раз)
miha-ha
Гость
« : Февраль 28, 2009, 16:22 »

Как можно добавить вычисляемый столбец?
для того что бы в базе не хранить лишнюю информацию.
например есть столбцы: kol, price
нужно добавить: sum = kol*price
если делать с помощью QSqlQueryModel запрос вида: select kol, price, kol*price from table
то всё конечно работает, но QSqlQueryModel не позволяет добавлять новую стоку с кешированием. т.е. с возможностью отложить запись изменений в базу.
Очень не хочется изобретать велосипед Улыбающийся
Подскажите, кто и как решал данную проблему???

версия 4.4.3
« Последнее редактирование: Февраль 28, 2009, 16:24 от miha-ha » Записан
BRE
Гость
« Ответ #1 : Февраль 28, 2009, 16:35 »

Помню было такое... оказалось в Qt3:
void QSqlCursor::setCalculated ( const QString & name, bool calculated )
QVariant QSqlCursor::calculateField ( const QString & name )

Как в Qt4 с этим смотрю.
« Последнее редактирование: Февраль 28, 2009, 17:02 от BRE » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Февраль 28, 2009, 17:00 »

>>для того что бы в базе не хранить лишнюю информацию.
дак ты и cделай вычисляемый столбец в базе, например в FireBird:
Код:
CREATE TABLE MYTABLE(
  kol Integer,
  price Decimal(10,3),
  RESUME COMPUTED BY (kol*price);
);
Записан

Юра.
miha-ha
Гость
« Ответ #3 : Февраль 28, 2009, 17:13 »

использую SQLITE
необходима мобильность программы.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Февраль 28, 2009, 17:17 »

Можно свою проммодель создать, которая будет еще один столбец делать.
Записан

Юра.
miha-ha
Гость
« Ответ #5 : Февраль 28, 2009, 17:23 »

Можно свою проммодель создать, которая будет еще один столбец делать.
наследовать от QAbstractProxyModel Непонимающий
Записан
miha-ha
Гость
« Ответ #6 : Февраль 28, 2009, 17:51 »

Можно свою проммодель создать, которая будет еще один столбец делать.
В том то и вопрос: как добавить???
используя insertColumn?
но index(0,<номер_нового_столбца>) возвращает false
т.е. setData не работает.
« Последнее редактирование: Февраль 28, 2009, 17:52 от miha-ha » Записан
miha-ha
Гость
« Ответ #7 : Март 02, 2009, 13:30 »

никто не делал такого?
Записан
BRE
Гость
« Ответ #8 : Март 02, 2009, 14:43 »

никто не делал такого?
Скажу про себя.
Я использую свои модели (наследуются от QAbstractTableModel), а с использованием QSqlTableModel у меня как-то не сложилось (не знаю почему).  Улыбающийся
Записан
miha-ha
Гость
« Ответ #9 : Март 03, 2009, 17:19 »

Скажу про себя.
Я использую свои модели (наследуются от QAbstractTableModel), а с использованием QSqlTableModel у меня как-то не сложилось (не знаю почему).  Улыбающийся
Спасибо! Попробую...
Записан
alex-v
Гость
« Ответ #10 : Июнь 24, 2011, 09:44 »

Я решил это средствами SQL.
К примеру:
Код:
select year, month, year*0.1 as qwe from reports
Записан
pokidoff
Гость
« Ответ #11 : Июнь 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
« Последнее редактирование: Июнь 24, 2011, 14:25 от pokidoff » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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