преобразование memo в fastreport
Технические вопросы
Разработка

преобразование memo в fastreport

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

я могу делать так: m5.Text := m1.Text;
но не могу так: m5.Text := FloatToStr(StrToFloat(m1.Text));

код :
m5.Text := FloatToStr(StrToFloat(m1.Text) - StrToFloat(m3.Text));

m6.Text := FloatToStr(StrToFloat(m5.Text) * 0.10);

m7.Text := FloatToStr(StrToFloat(m6.Text) - StrToFloat(m4.Text) *0.18 * 30/360 );

m8.Text := FloatToStr(StrToFloat(m5.Text) / StrToFloat(m1.Text) );

подскажите что я делаю не так, может быть есть гораздо более легкий способ, например использовать переменные, которые не работают ...
Необходимо просто на основании мемок со значениями получить значения в других мемках.

Нравится

3 комментария

Владимир, идеальным вариантом будет создание в датасете вычисляемых полей, а в отчете простое их отображение. Почему именно скрипты FastReport? С ними как раз и возникают вот такие непредвиденные ошибки.

"Стоян Виталий" написал:идеальным вариантом будет создание в датасете вычисляемых полей

Действительно, так будет проще. Да и в самом редакторе FastReport есть понятие "функции", тоесть можно пересчеты сделать за их счет, в обход скриптов.

Но лично я бы все грузанул в ексель или ворд. Фаст только для наглядного просомтра и печати катит...

Я с вами согласен, скрипты фастрепорта это *... не лучше решение как минимум :)

Решил проблему вычисляемыми полями:
[javascript]
function ds_SalesByCorporateClientsOnDatasetCalcFields(Dataset) {
var SaleUA = Dataset('Amount') - Dataset('Amount_no_abUA');
var Discount10 = SaleUA * 0.10;
var NotGetAmount = Discount10 - Dataset('CurrentBalanceRUR') *0.18 * 30/360;
var FactDiscount = SaleUA / Dataset('Amount');

Dataset.ValAsFloat('_AmountUa') = SaleUA;
Dataset.ValAsFloat('_Discount10') = Discount10;
Dataset.ValAsFloat('_NotGetAmount') = NotGetAmount;
Dataset.ValAsFloat('_FactDiscount') = FactDiscount;
}

function ds_SalesByCorporateClientsOnDatasetAfterOpen(Dataset) {
Dataset.CalcDataFields();
}
[/javascript]

Показать все комментарии