Вычисления во время формирования отчета
Необходимо произвести следующие действия:
Есть два поля (float) необходимо в каждой записи умножить их друг на друга, а внизу страницы вывести сумму этих произведений.
Я понимаю так, что делать это надо через скрипт, но можно, пожалуйста, чуть подробней?
Для примера (сделано, как написанно в документации):
Ошибка происходит в модуле FR_Class в этой процедуре:
Есть два поля (float) необходимо в каждой записи умножить их друг на друга, а внизу страницы вывести сумму этих произведений.
Я понимаю так, что делать это надо через скрипт, но можно, пожалуйста, чуть подробней?
Для примера (сделано, как написанно в документации):
function GetNaim: string;
begin
Result:='string';
end;
procedure TForm2.frReport1UserFunction(const Name: String; p1, p2,
p3: Variant; var Val: String);
begin
if AnsiCompareText('GetNaim', Name) = 0 then
val := GetNaim();
end;
Кладу в отчёт DetailFooter на него поле с текстом и пишу там GetNaim. И в скрипт тоже писал. Как сделать правильно, подскажите пожалуйста?Ошибка происходит в модуле FR_Class в этой процедуре:
procedure TfrReport.OnGetParsFunction(const name: String; p1, p2, p3: Variant;
var val: String);
var
i: Integer;
begin
val := '0';
for i := 0 to frFunctionsCount - 1 do
if frFunctions[i].FunctionLibrary.OnFunction(name, p1, p2, p3, val) then
exit;
if AggrBand.Visible then // <-- здесь!
if Assigned(FOnFunction) then FOnFunction(name, p1, p2, p3, val);
end;
Комментарии
Бросай футер а в нем считай свою сумму [SUM(Выражение)].
Работает не верно. Необходимо, чтоб считало произведение для каждой записи отдельно, а потом уже складывало все произведения.
Вобще-то у меня есть функция в дельфи, если это невозможно сделать функцией в ФР скажите, пожалуйста, как вывести результат моей функции в отчёт.
procedure TForm2.frReport1UserFunction(const Name: String; p1, p2,
p3: Variant; var Val: String);
begin
ShowMessage('ok');
end;
Сообщение не появляется.
Кладём в отчёте новое поле. И в нём пишем текст любой переменной, скажем [Peremena] (Внимание, квадратные скобки обязательны! Собсна почти в этом и была моя ошибка.)
Затем:
Теперь присвоится текст ляляля. Также можно присвоить значение, возвращаемое функцией и вобще что угодно.
Обработка события GetValue происходит тогда, когда в отчёте встречается непонятная переменная.
А когда происходит обработка события UserFunction - непонятно.
Или вот еще вариант. Объявить переменную в отчете к примеру vSum=0, и потом в МастерДата ее увеличивать vSum=vSum+[ADOTable1."Количество"] * [ADOTable1."Цена за единицу"]. Соответственно в Меме где должна быть сумма написать [vSum] и все.