![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вот народился вопрос по 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]А если в НабореДвнных дабавить вычислимое поле? Тогда в отчете достаточно будет просто складывать.