Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вот народился вопрос по FastReport. Как впихнуть в него условие? [D6, Access]


DimonS ©   (2006-02-07 07:15:00) 

Доброго всем времени суток.

Есть отчет в ФастРепорте, отчет сводный, т.е. есть только DataHeader? Datamaster и строка DetailFooter, в которой и отображаются суммы.

Вопрос такой. Суммы отображаются б/п, но мне нужно в одном поле БД (OTZ) сплюссовать только те суммы, когда поле [OTZ] принимает значение True. В условном форматировании это не прокатывает, я так понял, что это нужно делать в Редакторе скрипта, типа:

begin
      if [OTZ]=true then [что сюда вписать?]:=[SUM([QZ."OTZ"])];

end

Если это правильно, то чему нужно присвоить значение, а если нет, то как написать правильно?

P.S. Про F1 просьба не писать, не нашел такого, только что-то очень обобщающее.


DimonS   (2006-02-08 10:02:00) [1]

То Bless ©  
SUM(IF([QZ."OTС"]=true, [QZ."OTZ"], 0))

Реально помогло, не знал, что так просто делается!!! Спасибо!


DimonS   (2006-02-08 09:39:00) [2]

То Bless ©  
Спасибо, попробую.
А с именем поля я напутал, конечно:
if [OTС]=true then [что сюда вписать?]:=[SUM([QZ."OTZ"])];

OTС - Boolean, OTZ - Float, вот так правильно будет.


Bless   (2006-02-08 09:25:00) [3]

Забыл закрыть тег. Исправляюсь
if [OTZ]=truethen [что сюда вписать?]:=[SUM([QZ." OTZ"])];

Что-то я не въехал, ты что, складываешь поля типа boolean?
Впрочем, хозяин - барин.

1.
Писать в таком духе нельзя, имхо (проверять лениво), потому что в процитированном мной твоем фрагменте написано
"Если otz истинно, то чему-то там присвоить сумму ВСЕХ значений поля OTZ (а не только тех, которые true)", а это не то, видимо, что тебе нужно.

2. Совет про F1 ты сходу зря откинул, именно он тут как раз и рулит. С FastReport-ом идут хорошие примеры, разъясняющие массу моментов.

3.
>  Но вот что записать вместо Label1.Caption, чтобы записалось
> в данной ячейке?


<имя ячейки>.memo :=...
например, memo1.memo := 'блаблабла';

4. Совет про переменные ты тоже зря откинул. С их помощью это все действительно элементарно решается, тут справка тебя не обманула.

Все нижеприведенное должно быть верно для FastReport 2.4, который у меня. Но вряд ли сильно отличается в других версиях.
1. В скрипте страницы (page1) (хотя страница - не единственное место, где это можно сделать. Можешь и в DataHeader-е)пишешь что-то типа
TrueSum := 0.
2. В скрипте MasterData пишешь  
if [OTZ]=true then TrueSum := TrueSum +[QZ."OTZ"];
3.В footer-е пишешь
MyMemo.memo :=[TrueSum]

Вот и все.

Если тебе лениво делать так, можешь попробовать воспользовать возможностями встроенной функции IF, может тогда обойдешься вообще без скриптов.
Тогда в свое мемо просто напишешь
SUM(IF([QZ."OTZ"]=true, [QZ."OTZ"], 0))</code


Bless   (2006-02-08 09:24:00) [4]

if [OTZ]=true then [что сюда вписать?]:=[SUM([QZ." OTZ"])];

Что-то я не въехал, ты что, складываешь поля типа boolean?
Впрочем, хозяин - барин.

1.
Писать в таком духе нельзя, имхо (проверять лениво), потому что в процитированном мной твоем фрагменте написано
"Если otz истинно, то чему-то там присвоить сумму ВСЕХ значений поля OTZ (а не только тех, которые true)", а это не то, видимо, что тебе нужно.

2. Совет про F1 ты сходу зря откинул, именно он тут как раз и рулит. С FastReport-ом идут хорошие примеры, разъясняющие массу моментов.

3.
>  Но вот что записать вместо Label1.Caption, чтобы записалось
> в данной ячейке?


<имя ячейки>.memo :=...
например, memo1.memo := 'блаблабла';

4. Совет про переменные ты тоже зря откинул. С их помощью это все действительно элементарно решается, тут справка тебя не обманула.

Все нижеприведенное должно быть верно для FastReport 2.4, который у меня. Но вряд ли сильно отличается в других версиях.
1. В скрипте страницы (page1) (хотя страница - не единственное место, где это можно сделать. Можешь и в DataHeader-е)пишешь что-то типа
TrueSum := 0.
2. В скрипте MasterData пишешь  
if [OTZ]=true then TrueSum := TrueSum +[QZ."OTZ"];
3.В footer-е пишешь
MyMemo.memo :=[TrueSum]

Вот и все.

Если тебе лениво делать так, можешь попробовать воспользовать возможностями встроенной функции IF, может тогда обойдешься вообще без скриптов.
Тогда в свое мемо просто напишешь
SUM(IF([QZ."OTZ"]=true, [QZ."OTZ"], 0))</code


DimonS   (2006-02-08 07:25:00) [5]

В том то и дело, это я знаю. Но вот что записать вместо Label1.Caption, чтобы записалось в данной ячейке?


Ильш   (2006-02-08 07:16:00) [6]

begin
     if [OTZ]=true then Label1.Caption:=[SUM([QZ."OTZ"])];
end

в этом духе вроде
там паскаль в общем то


DimonS   (2006-02-07 15:09:00) [7]

То WellSlava
Я это уже пробовал. Если не знаешь отчетники типа Мастер-Детайл (не обязательно ФастРепорт), то лучше не советуй, это пройденный этап.

Ну, а если никто не знает, как это сделать (хотя в справке этого же ФастРепорт-а написано, что это элементарно), то вопрос снимается. :(


WellSlava   (2006-02-07 14:58:00) [8]

- во-первых почему не катит?
- во-вторых, ты уверен, что сделать это посредством FastReport будет проще?


DimonS   (2006-02-07 14:53:00) [9]

4 переменные не катит. Блин.... Ну НЕ ВЕРЮ! что никто с фаст репортом не работал. Ну неужели сложно так подсказать? Не думаю, что это такая уж большая проблема...


WellSlava   (2006-02-07 14:31:00) [10]

можно 4 переменные, конечно.... а средствами FastReport - не пробовал


DimonS   (2006-02-07 14:16:00) [11]

WellSlava   (07.02.06 13:58) [4]

Это хорошо, а если в отчете четыре Data Footer-а? Не подходит, однако....


WellSlava   (2006-02-07 13:58:00) [12]

Я в таком положении вышел очень просто - добавил переменную и ее считал по условию, а a футере вывел.


DimonS   (2006-02-07 13:49:00) [13]

Блин... Ну что, никто не знает? Вроде тут о ФастРепорде нормальные отзывы были :(


DimonS   (2006-02-07 07:58:00) [14]

Можно, но ФастРепорт вроде мощная система и такие пустяки, я думаю, должны в ней решаться. Вопрос в том только, как это сделать?


ЮЮ   (2006-02-07 07:46:00) [15]

А если в НабореДвнных дабавить вычислимое поле? Тогда в отчете достаточно будет просто складывать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо