Не происходит очистка...

отредактировано 22:01 Раздел: FastReport 3.0
Добрый день ! Только начал рабоать с третьим фастом, прошу прощения если терминологию не выдержу ;) ) версия .17

Ситуация такая - имеется отчетная система, для каждого отчета отрабатывают скрипты. Для каждого отчета идет предварительная подготовка двух dxmemData, куда заносятся данные перед тем как их послать в фаст. Отчет цепляется к ним через два frxdbdataseta.
шаблон вызываемого отчета загружается из базы.

Проблема - при работе с одноим и тем же отчетом все хорошо, но стоит вызвать другой - "не обновляется" список полей которые берутся из этих сетов.
Отчет т е новый (видно при отладке вызовом дизайна) а перечень полей - СТАРЫЙ.
Ну и соотвественно вопли отчетовчто такие то поля не найдены...
Пробовал всякое - закрывать, чистить алиасы, ничего не помогает...
над мемдатой тоже по-всякому извращался - толку нет

Вопрос прежде всего к разработчикам - есть идеи ? Уж очень не хочется каждый раз динамически создаваить и грохать датамодуль.

И еще пожелание - добавьте плиз метод или дайте пример полного копирования свойств компонентов отчета (из числа тех что заполняются в инспекторе) с одного компонента на другой...

Комментарии

  • gpigpi
    отредактировано November 2005
    А изменение frxDBDataset.DataSource не помогает? С dxmemData не работал, но если в программе только два dxmemData, в которых меняются поля, то, может быть, получится изменить поля перед загрузкой отчёта вот таким образом:
    frxDBDataset.DataSource:=nil;
    frxDBDataset.DataSource:=датасет;
    frxReport1.LoadFromFile(...);
  • отредактировано 22:01
    gpi написал:
    А изменение frxDBDataset.DataSource не помогает? С dxmemData не работал, но если в программе только два dxmemData, в которых меняются поля, то, может быть, получится изменить поля перед загрузкой отчёта вот таким образом:
    frxDBDataset.DataSource:=nil;
    frxDBDataset.DataSource:=датасет;
    frxReport1.LoadFromFile(...);
    увы, нет ;) ( nil не помогает
    файл отчета читается из блоба.. всю голову сломал идей нет ;)
  • gpigpi
    отредактировано 22:01
    Только что специально попробовал с dxmemData. Всё работает
    пример - http://rapidshare.de/files/8201379/MemData.zip.html
  • отредактировано 22:01
    gpi написал:
    Только что специально попробовал с dxmemData. Всё работает
    пример - http://rapidshare.de/files/8201379/MemData.zip.html
    Спасибо, но у Вас несколько пример некорректен - у меня ВСЕГДА используются одни и те же мемдаты дляодних и тех же сетов. Мемдата просто опустошается и заполняется другими данными, результатами РАЗНЫХ т е запросов, соотвественно должны быть и поля другигими. Вот гриды видят что поля изменились а фрхсеты нет, вот в чем трабла ...
  • gpigpi
    отредактировано 22:01
    И так работает
    http://rapidshare.de/files/8225649/MemData.zip.html
    В примере оба отчёта строятся на основе frxDBDataset1, который подключён к dxMemReportData
  • отредактировано 22:01
    gpi написал:
    И так работает
    http://rapidshare.de/files/8225649/MemData.zip.html
    В примере оба отчёта строятся на основе frxDBDataset1, который подключён к dxMemReportData
    Наверно я косноязычен ;) (
    Итак попробую еще раз. есть 2 мемдаты. ОБЕ нужны для КАЖДОГО ОТЧЕТА. к каждой свой frxdbdataset.

    Т е конструкция 2 мемдаты->2frdbdataseta->отчет неизменна и звенья ее, меняется только отчет загружаемый из блоба

    При выборе другого отчета обе мемдаты опустошаются, делаются ДРУГИЕ запросы (и другие поля) которые вовзращаются в эти мемдаты. а вот frxdbdataset'ы судя по всему не сбрасывают эти поля и не переустонавливают.

    В вашем примере вы разные мемдаты подсовываете, но у меня-то мемдаты те же остаеются. Впрочем как вариант попробую в понедельник переключить на другую липовую мемдату и обратно и посмотреть что выйдет. переключение на нил и обратно не помоагет, а так может она прочухает что соурс реально меняется
  • gpigpi
    отредактировано 22:01
    Если в последнем примере поменять код на этот, т.е. используется конструкция 1 мемдата->1frxdbdataset->отчет, то в дизайнере первого отчёта показывается одно поле 'ProductName', а другого - 'Name'
    procedure TForm1.rep11Click(Sender: TObject);
    var Field: TStringField;
    begin
         dxMemReportData.Fields.Clear;
         Field:=TStringField.Create(nil);
         Field.Name:='ProductName';
         Field.FieldName:= 'ProductName';
         Field.Size:=50;
         dxMemReportData.Fields.Add(Field);
         frxReport1.LoadFromFile(ExtractFileDir(Application.ExeName) + '\11.fr3');
         frxReport1.DesignReport;
    end;
    
    procedure TForm1.rep21Click(Sender: TObject);
    var Field: TStringField;
    begin
         dxMemReportData.Fields.Clear;
         Field:=TStringField.Create(nil);
         Field.Name:='Name';
         Field.FieldName:= 'Name';
         Field.Size:=50;
         dxMemReportData.Fields.Add(Field);
         frxReport1.LoadFromFile(ExtractFileDir(Application.ExeName) + '\22.fr3');
         frxReport1.DesignReport;
    end;
    
  • отредактировано 22:01
    Спасибо, еще раз все аккуратно очистил и... и заработало ;) ))

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.