Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
ВнизВот народился вопрос по FastReport. Как впихнуть в него условие? Найти похожие ветки
← →
DimonS © (2006-02-07 07:15) [0]Доброго всем времени суток.
Есть отчет в ФастРепорте, отчет сводный, т.е. есть только DataHeader? Datamaster и строка DetailFooter, в которой и отображаются суммы.
Вопрос такой. Суммы отображаются б/п, но мне нужно в одном поле БД (OTZ) сплюссовать только те суммы, когда поле [OTZ] принимает значение True. В условном форматировании это не прокатывает, я так понял, что это нужно делать в Редакторе скрипта, типа:
begin
if [OTZ]=true then [что сюда вписать?]:=[SUM([QZ."OTZ"])];
end
Если это правильно, то чему нужно присвоить значение, а если нет, то как написать правильно?
P.S. Про F1 просьба не писать, не нашел такого, только что-то очень обобщающее.
← →
ЮЮ © (2006-02-07 07:46) [1]А если в НабореДвнных дабавить вычислимое поле? Тогда в отчете достаточно будет просто складывать.
← →
DimonS © (2006-02-07 07:58) [2]Можно, но ФастРепорт вроде мощная система и такие пустяки, я думаю, должны в ней решаться. Вопрос в том только, как это сделать?
← →
DimonS © (2006-02-07 13:49) [3]Блин... Ну что, никто не знает? Вроде тут о ФастРепорде нормальные отзывы были :(
← →
WellSlava (2006-02-07 13:58) [4]Я в таком положении вышел очень просто - добавил переменную и ее считал по условию, а a футере вывел.
← →
DimonS © (2006-02-07 14:16) [5]WellSlava (07.02.06 13:58) [4]
Это хорошо, а если в отчете четыре Data Footer-а? Не подходит, однако....
← →
WellSlava (2006-02-07 14:31) [6]можно 4 переменные, конечно.... а средствами FastReport - не пробовал
← →
DimonS © (2006-02-07 14:53) [7]4 переменные не катит. Блин.... Ну НЕ ВЕРЮ! что никто с фаст репортом не работал. Ну неужели сложно так подсказать? Не думаю, что это такая уж большая проблема...
← →
WellSlava (2006-02-07 14:58) [8]- во-первых почему не катит?
- во-вторых, ты уверен, что сделать это посредством FastReport будет проще?
← →
DimonS © (2006-02-07 15:09) [9]То WellSlava
Я это уже пробовал. Если не знаешь отчетники типа Мастер-Детайл (не обязательно ФастРепорт), то лучше не советуй, это пройденный этап.
Ну, а если никто не знает, как это сделать (хотя в справке этого же ФастРепорт-а написано, что это элементарно), то вопрос снимается. :(
← →
Ильш © (2006-02-08 07:16) [10]begin
if [OTZ]=true then Label1.Caption:=[SUM([QZ."OTZ"])];
end
в этом духе вроде
там паскаль в общем то
← →
DimonS © (2006-02-08 07:25) [11]В том то и дело, это я знаю. Но вот что записать вместо Label1.Caption, чтобы записалось в данной ячейке?
← →
Bless © (2006-02-08 09:24) [12]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
← →
Bless © (2006-02-08 09:25) [13]Забыл закрыть тег. Исправляюсь
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 09:39) [14]То Bless ©
Спасибо, попробую.
А с именем поля я напутал, конечно:
if [OTС]=true then [что сюда вписать?]:=[SUM([QZ."OTZ"])];
OTС - Boolean, OTZ - Float, вот так правильно будет.
← →
DimonS © (2006-02-08 10:02) [15]То Bless ©
SUM(IF([QZ."OTС"]=true, [QZ."OTZ"], 0))
Реально помогло, не знал, что так просто делается!!! Спасибо!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.086 c