Создал отчет, в ходе решения задачи выяснилось что в отчете будут поля, вычисляемые на основании уже вычисленных. С помощью нехитрого кода в скрипте 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) );
подскажите что я делаю не так, может быть есть гораздо более легкий способ, например использовать переменные, которые не работают ...
Необходимо просто на основании мемок со значениями получить значения в других мемках.
Нравится
Владимир, идеальным вариантом будет создание в датасете вычисляемых полей, а в отчете простое их отображение. Почему именно скрипты FastReport? С ними как раз и возникают вот такие непредвиденные ошибки.
"Стоян Виталий" написал:идеальным вариантом будет создание в датасете вычисляемых полей
Действительно, так будет проще. Да и в самом редакторе FastReport есть понятие "функции", тоесть можно пересчеты сделать за их счет, в обход скриптов.
Но лично я бы все грузанул в ексель или ворд. Фаст только для наглядного просомтра и печати катит...
Я с вами согласен, скрипты фастрепорта это *... не лучше решение как минимум :)
Решил проблему вычисляемыми полями:
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(); }