|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.10.2016, 20:36 | #11 |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
параметр запроса :id (код товара) получает значения из датасета, а эти значения надо перебирать в while цикле.
например: выписал накладной, в котором 3 записей. В DBGrid-е кроме полей бд у каждой записи хочу увыдеть вычисляемое поле ндс, который вычисляю в CalcFields процедуре. Потом в Label нужно получать sum(ндс*количество). В Datasete встаю на первую запись, который имеет свой ID товара и в while цикле перебираю записи: while not dataset1.eof do begin dataset1.close; dataset1.sql.clear; dataset1.sql.add('select * from Goods where id=:id'); dataset1.paramsbyname('id').asinteg er:=dataset1Id.asinteger; dataset1.open; end; если товар не облагается ндс-ом тогда ндс:=0 else ндс:=цена*18/118. но кроме этого надо проверять конкретно этот поставщик платит или нет ндс. А как это проверить на сервере,пока поставщика не выбрал на клиенте? Последний раз редактировалось delphi159; 13.10.2016 в 20:42. |
13.10.2016, 20:40 | #12 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно в запросе с помощью left join прицепить Goods к основной таблице и там то же самое делать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.10.2016, 02:42 | #13 |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
|
15.10.2016, 08:28 | #14 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Этим избавимся от вычисляемого поля на клиенте. И коль IB поддерживает агрегатные поля, то должно нормально просуммировать без твоего цикла. А если агрегатные поля в нем мираж, то вторым запросом суммируй и на клиенте просто бери из него данные
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.10.2016, 14:00 | #15 | |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
Цитата:
Код:
Последний раз редактировалось delphi159; 15.10.2016 в 19:15. |
|
15.10.2016, 14:23 | #16 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А просто так без не нужных вложений
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.10.2016, 14:34 | #17 | |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
Цитата:
А на счёт агрегата, наверно, не получится без Clientdataset-а. Interbase 2009 наверно не может группировать по выражению. Как, по вашему мнению, можно обойти эту проблему в IB? |
|
15.10.2016, 14:49 | #18 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Понятия не имею, ни когда не использовал IB. И агрегаты к СУБД не имеют отношения, этим занимается сам датасет. А чтобы сгруппировать по выражению запрос с ним нужно сделать вложенным в FROM и группировать во внешнем запросе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 15.10.2016 в 14:53. |
15.10.2016, 17:20 | #19 |
Подтвердите свой е-майл
Регистрация: 27.01.2015
Сообщений: 28
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как суммировать 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 |