|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.10.2016, 02:32 | #1 |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
Как суммировать Calculated поле в агрегатное
делается накладная прихода.
DBGrid>DataSource>IBDataset Есть Calculated поле ("DedVat") в котором получаю ндс(18% от цены закупки) в процедуре CalcFields(DataSet: TDataSet). Нужно получить итог умножения DedVat на количество в LabelDedVat(сумма ндс). Для этого создаю аггрегатное поле AggrVat. В NewField выбираю: type Aggregate, FieldType-calculated. В expression аггрегатного поля AggrVat пишу: SUM(RS*DEDVAT)- количество прихода умножить на ндс товара. Код:
|
13.10.2016, 10:34 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Для ClientDataSet вычисляемое поле для того, что бы агрегатное его съело нужно объявлять fkInternalCalc вместо fkCalculated. Может и для IBDataset чего-то в этом духе есть?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.10.2016, 11:43 | #3 |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,389
|
если вычислять всё на SQL запросе в SELECT-е и компилировать его на сервере как "view представление" и это "представление" вызвать потом как такблица SELECT-е
E_MAIL: rijgvina7@yahoo.com
|
13.10.2016, 11:46 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
И зачем, если агрегатные поля предоставляют возможно подбивать итоги по полю. Или по группам записей в соответствии с индексом, по-крайней мере в ClientDataSet и родственниках это можно. А вычисляемое конечно можно и запросом сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.10.2016, 12:03 | #5 | |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,389
|
Цитата:
1) Лучше вычилять все на сервере и вызвать резултать ! чем из клиентское приложение 2) Можеть через некоторый время работодатель захочет уже НЕ (18% от цены закупки) А (25% от цены закупки) или 11% что бы не компилировать программа и не менять .exe файл везде "если ешё программа многопользовательски" 3) Для сопровождение проекта я думаю что все (вычисление поля) компилировать на сервере ! Это я так думаю ! не спорю ! и не забиваю что МНОГО ЧЕГО НАУЧИЛ ОТ ВАС
E_MAIL: rijgvina7@yahoo.com
|
|
13.10.2016, 12:38 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Вообще-то все в разумных пределах нужно делать. Запросом удобней и, возможно предпочтительней, и код клиента короче, но с вычисляемыми полями запрос или представление дольше работает и трафик сетевой увеличивает. Да и не всякое вычисляемое поле на сервере можно эффективно вычислить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.10.2016, 12:39 | #7 |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
Захотел поменять fkCalculated на fkInternalCalc в инспекторе но ругается: QrecsDEDVAT: Invalid field kind!
Последний раз редактировалось delphi159; 13.10.2016 в 12:44. |
13.10.2016, 12:43 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Нельзя fkCalculated на fkAggregate менять, это совершенно разное. Речь шла о замене fkCalculated на fkInternalCalc. Если еще для этого датасета это прокатит
ЗЫ вижу подправил сообщение, значит не прокатит. Сделай в запросе вычисляемое поле как xxbesoxx подсказывает и не парься еще ЗЫ - а в самом датасете есть свойство для активизации агрегатных полей. чего-то типа AggregatesActive?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 13.10.2016 в 12:52. |
13.10.2016, 14:35 | #9 | ||
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
Цитата:
Цитата:
я хочу: 1) цену без ндс-а и сам ндс хранить не в бд, а вычислять в calculated полях и отобразить в DBGrid-е. 2) суммировать вычисляемые значения calculated поля "ндс" каждой записи и в Label получать общую сумму ндс-а(количество товара*ндс). Не могу понять как написать параметризированный запрос, посколько тогда в while цикле надо перебирать записи датасета и проверять первый товарь облагается или нет ндс-ом и так до конца. Тогда while цикл для, например, 1000 записей будеть работать медленно! |
||
13.10.2016, 17:47 | #10 | |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,389
|
Цитата:
E_MAIL: rijgvina7@yahoo.com
Последний раз редактировалось xxbesoxx; 13.10.2016 в 18:30. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как суммировать 7 книг в 8 ? | Xp_Dron | Microsoft Office Excel | 5 | 24.12.2013 18:24 |
как суммировать в db grid | deadneoo | Компоненты Delphi | 0 | 01.05.2010 15:41 |
Си. Как суммировать элементы массива? | dma | Помощь студентам | 2 | 06.12.2008 17:11 |
как суммировать только определенный месяц? | Алька | Microsoft Office Excel | 2 | 08.05.2007 08:50 |