Russian Qt Forum

Qt => Базы данных => Тема начата: Druxa от Сентябрь 20, 2007, 18:04



Название: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Druxa от Сентябрь 20, 2007, 18:04
есть QSqlTableModel которая вставляется в QTableView, как добавить в модель и связать с видом свой какой-нибудь расчёт?


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Пантер от Сентябрь 20, 2007, 18:09
Возможно туплю, но что-то типа
SELECT base1.id,base1.name,base1.money*base2.money FROM base1,base2 WHERE base1.kurs=base2.id


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Druxa от Сентябрь 20, 2007, 18:24
Возможно туплю, но что-то типа
SELECT base1.id,base1.name,base1.money*base2.money FROM base1,base2 WHERE base1.kurs=base2.id
Не не надо средствами БД, не хочу её перегружать.


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Вячеслав от Сентябрь 20, 2007, 18:28
Возможно туплю, но что-то типа
SELECT base1.id,base1.name,base1.money*base2.money FROM base1,base2 WHERE base1.kurs=base2.id
Не не надо средствами БД, не хочу её перегружать.
Для любого современного сервака _такие_ расчеты - ничто.... Ты его больше выборкой нагрузишь(в сысле чтением с диска) ;) Да и намного проще однако ;)


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: ритт от Сентябрь 20, 2007, 20:46
>Для любого современного сервака _такие_ расчеты - ничто...

согласен.
но не проблема ведь сделать и средствами кутэ, причём, задача тривиальная.

наследуешься от QSqlQueryModel и перегружаешь метод QVariant data(const QModelIndex& index, int role) const
по индексу узнаёшь номер столбца (или параметр, по которому будешь определять в какой столбец/строку писать расчётные данные) и вызовами даты из требуемых ячеек набираешь исходные данные для обсчёта

советую между вью и моделью поставить фильтрсортпроксимодель - весьма качественная прослойка

а, да...практически забыл: перегрузи ещё ровКаунт и колКаунт :)


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Вячеслав от Сентябрь 20, 2007, 22:21
>Для любого современного сервака _такие_ расчеты - ничто...

согласен.
но не проблема ведь сделать и средствами кутэ, причём, задача тривиальная.

наследуешься от QSqlQueryModel и перегружаешь метод QVariant data(const QModelIndex& index, int role) const
по индексу узнаёшь номер столбца (или параметр, по которому будешь определять в какой столбец/строку писать расчётные данные) и вызовами даты из требуемых ячеек набираешь исходные данные для обсчёта

советую между вью и моделью поставить фильтрсортпроксимодель - весьма качественная прослойка

а, да...практически забыл: перегрузи ещё ровКаунт и колКаунт :)

Ну да .... дописать ~50 символов в запрос или городить свой класс - каждый выбирает сам ;)Мне ехать(и нехай сервак думает - будет возникать или запросы причешу или еще мозгов добавлю ;) побыстрее.....


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: ритт от Сентябрь 20, 2007, 23:24
ну, если у него в третьем столбце простая арифметика, то, конечно, проще запросом и не ипсти мозги на форуме...
а ежели какое-нибудь моделирование или др. сложные вычисления? - тоже запросегом?


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Вячеслав от Сентябрь 21, 2007, 09:32
ну, если у него в третьем столбце простая арифметика, то, конечно, проще запросом и не ипсти мозги на форуме...
а ежели какое-нибудь моделирование или др. сложные вычисления? - тоже запросегом?
Пример можно ? моделирования ?
Вариантов-то масса ;) И для каждого случая надо свой ввыбирать по месту .... Бензопилой картошку тоже чистить можно, но вот удобно-ли ?


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: ритт от Сентябрь 21, 2007, 10:07
ну, так-то да...если ему конкретно формула из сабжа была нужна, то тема давно исчерпана


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: matsumoto от Сентябрь 21, 2007, 11:46
советую между вью и моделью поставить фильтрсортпроксимодель - весьма качественная прослойка


что за прослойка такая? можно поподробнее?


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Druxa от Сентябрь 21, 2007, 21:08
Народ, расчёт простой, но их штук 10 нужно сделать, что стандартных Qt методов нету как я понял :(


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Вячеслав от Сентябрь 21, 2007, 21:46
если математика простая - пихай в запрос ;) Если что-нибудь типа статистики - или делай свой класс как выше советовали или смотри в сторону ХП ....


Название: Re: QSqlTableModel есть 2 SQL колонки, как сделать не SQL 3-ю A*B?
Отправлено: Icoz от Сентябрь 25, 2007, 19:30

советую между вью и моделью поставить фильтрсортпроксимодель - весьма качественная прослойка

что за прослойка такая? можно поподробнее?

Думаю тебе про http://doc.trolltech.com/4.3/qproxymodel.html#details (http://doc.trolltech.com/4.3/qproxymodel.html#details) пытались сказать...