![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Fast Report 3, не передаются значения переменным [D7, WinXP]
Виталий Панасенко(дом) © (2010-04-12 22:35:00)Есть такой код:
//-Формирование отчета по деньгам
if frmPeriod.ShowModal = mrOK then
with dm do
begin
Period := Format('Период: %s по %s',[DateToStr(frmPeriod.detStart.Date), DateToStr(frmPeriod.detEnd.Date)]);
Rep.Clear();//-Очищаем старые отчеты
Rep.LoadFromFile(ExtractFilePath(ParamStr(0))+'ДЕНЬГИ.FR3');
tMng.First();
while not tMng.Eof do
begin
Rep.Variables['mng_id'] := tMngMNG_ID.AsInteger;
Rep.Variables['mng_name'] := QuotedStr(tMngMNG_NAME.AsString);
Rep.Variables['period'] := QuotedStr(Period);
Rep.Variables['dat1'] := frmPeriod.detStart.Date;
Rep.Variables['dat2'] := frmPeriod.detEnd.Date;
Rep.PrepareReport(False);
tMng.Next();
end;
Rep.ShowPreparedReport();//_Показываем подготовленные отчеты
end;//-with
Я создаю отдельные кросс-таб отчеты для каждого менеджера. Все красиво работает.. Но только один раз. В дальнейшем, все попытки изменить период не оказывает на отчет никакого воздействия. Если заремировать вызов Clear, опять все красиво..Только страницы добавляются в общий отчет.
Я "обманул" фаст, ввел булвую переменную, истинную перед циклом и ложную сразу после первого прохода
Clr := True;
while not tMng.Eof do
begin
Rep.Variables['mng_id'] := tMngMNG_ID.AsInteger;
Rep.Variables['mng_name'] := QuotedStr(tMngMNG_NAME.AsString);
Rep.Variables['period'] := QuotedStr(Period);
Rep.Variables['dat1'] := frmPeriod.detStart.Date;
Rep.Variables['dat2'] := frmPeriod.detEnd.Date;
Rep.PrepareReport(Clr);
Clr := False;
tMng.Next();
end;
Но все-таки интересно, это я где-то "гоню" или все таки фаст...
Виталий Панасенко(дом) (2010-04-12 22:42:00) [1]Видимо, я неправильно понял назначение метода Clear... Судя из мануала
> Следующий пример показывает, как построить пакет из двух
> отчетов:
> frxReport1.LoadFromFile('1.fr3');
> frxReport1.PrepareReport;
> frxReport1.LoadFromFile('2.fr3');
> frxReport1.PrepareReport(False);
> frxReport1.ShowPreparedReport;
> Мы загружаем первый отчет и строим его, не показывая на
> экране
делается также, как я во втором случае