Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;
> Мы загружаем первый отчет и строим его, не показывая на
> экране

делается также, как я во втором случае


Наверх

Титульная страница Поиск, карта сайта Написать письмо