powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport Sum по условию
19 сообщений из 19, страница 1 из 1
FastReport Sum по условию
    #36359533
Niror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пытаюсь поставить в footer'e вычисление суммы по одному из столбцов, взависимости от условия.
Если ставить в дизайне с самого начала, то все нормально, я просто пишу:
Код: plaintext
[SUM(<frxDBDataset1."Value1">,MasterData1)]
и все хорошо.
Но как мне поменять на Value2, если нужно? Я передаю в отчет переменную, и в зависимости от её значения хочу поставить сумму или по Value1 или по Value2.
Ни в beforeprint в footer'e, ни в beforeprint в самом этом мемо, ничего не выходит. Или пустоту выдает либо ошибки вроде
"could not convert variant of type array variant into type string"
или тому подобное.
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36359568
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
[IIF(<МояПеременная>=TRUE,SUM(<frxDBDataset1."Value1">,MasterData1),SUM(<frxDBDataset1."Value2">,MasterData1))]
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36359581
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и так

Код: plaintext
1.
2.
3.
4.
 begin 
   if  <МояПеременная>
     then  Memo1.Text := 'SUM(<frxDBDataset1."Value1">,MasterData1)'
     else  Memo1.Text := 'SUM(<frxDBDataset1."Value2">,MasterData1)'
 end .

Код: plaintext
1.
2.
3.
 const  V:  array [boolean]  of   string  = ('1','2');
 begin 
  Memo1.Text := 'SUM(<frxDBDataset1."Value'+V[<МояПеременная>]+'">,MasterData1)';
 end .
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36359611
Niror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На это

begin
if <МояПеременная>
then Memo1.Text := 'SUM(<frxDBDataset1."Value1">,MasterData1)'
else Memo1.Text := 'SUM(<frxDBDataset1."Value2">,MasterData1)'
end.
выдает "SUM(<frxDBDataset1."Value1">,MasterData1)" вместо числа.
Так
[IIF(<МояПеременная>=TRUE,SUM(<frxDBDataset1."Value1">,MasterData1),SUM(<frxDBDataset1."Value2">,MasterData1))]
все хорошо только условий у меня не два а 12.
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36359656
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niror...
[IIF(<МояПеременная>=TRUE,SUM(<frxDBDataset1."Value1">,MasterData1),SUM(<frxDBDataset1."Value2">,MasterData1))]
все хорошо только условий у меня не два а 12.
Вместо <МояПеременная>=TRUE поставь свою скриптовую функцию, которая будет твои 12 условий считать
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36359672
Niror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NextMan,

А можно на примере, как поставить, непойму?
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36359713
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В страничке скрипта пишем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Finction SuperPuperCondition() : boolean;
 begin 
...
   If  a = b  then 
    Result := True
   else   if  a =  22   then   begin 
    Result := False
   else   if  b =  44   then  
    Result := False
...
 end ;
Ну вот, а в мемке пишем что-нибудь такое:

Код: plaintext
[IIF(SuperPuperCondition(),SUM(<frxDBDataset1."Value1">,MasterData1),SUM(<frxDBDataset1."Value2">,MasterData1))]
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36360339
Niror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NextMan,

Я немного не уточнил.
Условие у меня не true, false, ни 2 возможных значения.
Если если значение переменной = 1, то пишем Value1, если = 2 то Value2, если = 3 то Value3 и так до 12.
В зависимости от значения переменной надо поставить Value.
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36360367
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
 begin 
  Memo1.Text := '[SUM(<frxDBDataset1."Value'+IntToStr(<МояПеременная>)+'">,MasterData1)]';
 end .
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36360373
Niror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Спасибо, как же я так не попробовал.
А то уже начал вложенные IIF'ы городить.
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36360376
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а лучше всего запросом вычислять
Код: plaintext
1.
2.
3.
4.
5.
select case
           when :p_sum =  1 
           then value1
           else value2
       end val,
...
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #36360399
Niror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

В запросе примерно так и вычисляется, только вот отображать нужно поле по выбору.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
FastReport Sum по условию
    #39720000
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, суть та же, не получается никак... Надо вывести суммы, в зависимости от значения одной колонки...

Надо получить сумму ячеек, где поле флаг=1:
Код: pascal
1.
[IIF(<Report26."FLAG">=1,SUM(<Report26."PLOSHAD">,DataBand61),0)]


Надо получить сумму ячеек, где поле флаг=2:
Код: pascal
1.
[IIF(<Report26."FLAG">=2,SUM(<Report26."PLOSHAD">,DataBand61),0)]


Надо получить сумму ячеек, где поле флаг=3:
Код: pascal
1.
[IIF(<Report26."FLAG">=3,SUM(<Report26."PLOSHAD">,DataBand61),0)]



Ошибки при формировании отчета нет, но и кажет не те значения, или ноль или не понятную как и сосчитанную цифру. Подскажите как посчитать сумму при моём условии?
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #39720203
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f50Надо получить сумму ячеек, где поле флаг=1:
Код: pascal
1.
[IIF(<Report26."FLAG">=1,SUM(<Report26."PLOSHAD">,DataBand61),0)]



Код: pascal
1.
[SUM(IIF(<Report26."FLAG">=1, <Report26."PLOSHAD">, 0), DataBand61)]
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #39720232
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений
Код: pascal
1.
[SUM(IIF(<Report26."FLAG">=1, <Report26."PLOSHAD">, 0), DataBand61)]



Евгений, приветствую! Все считает супер, как надо, огромное Вам спасибо!
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #39853204
Artem5544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи! подобная проблема. Не могу получить сумму, вот вычисляемое поле. там все отрабатывает как нужно, а в конце отчета суммы нет, игнорирует *.text
[(IIF( (<qryDetail1."GGNAME">) = mat,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit3.text)/100)),MasterData2,1),
IIF( (<qryDetail1."GGNAME">) = mat1,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit4.text)/100)),MasterData2,1),
IIF( (<qryDetail1."GGNAME">) = mat2,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit5.text)/100)),MasterData2,1),
IIF( (<qryDetail1."GGNAME">) = mat3,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit6.text)/100)),MasterData2,1),
IIF( (<qryDetail1."GGNAME">) = mat4,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit7.text)/100)),MasterData2,1),
IIF( (<qryDetail1."GGNAME">) = mat5,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit8.text)/100)),MasterData2,1),
IIF( (<qryDetail1."GGNAME">) = mat6,SUM(<qryDetail1."SM">*(<qryDetail1."COST">*(1+StrToInt(Edit9.text)/100)),MasterData2,1),
SUM(<qryDetail1."SM">*<qryDetail1."COST">,MasterData2,1)))))))))]
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #39853368
Shuraken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem5544, скажите пожалуйста, какой результат Вы хотите получить, если поле <qryDetail1."GGNAME"> будет принимать разные значения? Скажем mat, mat3, mat5
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #39853440
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
[SUM(<qryDetail1."SM">*<qryDetail1."COST">*(1 + StrToInt(
IIF(<qryDetail1."GGNAME"> = mat,Edit3.text,
IIF(<qryDetail1."GGNAME"> = mat1,Edit4.text,
IIF(<qryDetail1."GGNAME"> = mat2,Edit5.text,
IIF(<qryDetail1."GGNAME"> = mat3,Edit6.text,
IIF(<qryDetail1."GGNAME"> = mat4,Edit7.text,
IIF(<qryDetail1."GGNAME"> = mat5,Edit8.text,
IIF(<qryDetail1."GGNAME"> = mat6,Edit9.text,'100')))))))))]
...
Рейтинг: 0 / 0
FastReport Sum по условию
    #39853626
Artem5544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shuraken,
Результат в основном бенде? или там где суммирование в ReportSummary?
Вообще так и задумывалось , что поле <qryDetail1."GGNAME"> будет принимать разные значения и это работает нормально. А вот в ReportSummary по идее должны сложиться все значения из основного бенда, но что то пошло не так.
Вопрос в общем то решен. Коллега показал и рассказал ,как переlать все эти параметры в запрос и не мучится.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport Sum по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]