Баг или фича?

отредактировано 03:36 Раздел: FastReport 4.0
Версия: Fast Report 4.2.43 ...
Что делаю:
1) Програмно заполняю свойство EnabledDataSets.
2) Открываю дизайнер. Создаю новый отчет и наследую его от др., который содержит на закладке Data некоторые данные.
3) Отсоединяю отчет от базового.(Хотя можно это и не делать)

Что получаю:
1. Наблюдаю, что среди данных отчета отнаследованных наборов данных нет(только те, что из EnabledDataSets) и добавить (кроме как их же собственным копированием) нет возможности.
2. Откопировал, удалил исходные и вернул новым идентичным прежние имена. (Согласитесь - нелогичные действия).
3. Удаляю один из наборов данных - получаю AV (стр. 479 в frxXMLSerializer.pas )при любой попытке сохранения или щелчке мышью по рабочей области закладки Data.
4. Вдовесок : Меняю у наборов данных св-во SQL (меняю список полей), в дереве данных новый список полей не обновляется. Убираю его из доступных и добавляю снова - теперь все ОК, хотя тоже неудобно.
Вроде бы все....

Комментарии

  • отредактировано 03:36
    Скорее, непредусмотренное кодом FR использование фичи EnabledDatasets. Она была изначально придумана для того, чтобы отфильтровать список датасетов, имеющихся в приложении. Использовать ее совместно с встроенными в отчет датасетами и тем более с наследованием отчетов не стоит.
  • отредактировано 03:36
    AlexTZ написал: »
    Скорее, непредусмотренное кодом FR использование фичи EnabledDatasets.
    Виноват - исправлюсь ... :)
    По пунктам 1-3 : полностью моя "несознательность". Для добавления данных в моем случае следовало использовать свойство frxReport.DataSets вместо frxReport.EnabledDataSets.
    Возможно, кто-нибудь, прочитав пост, минует эти грабли. Хотя RTFM...

    Тем не менее пунк 4 с AV в дизайнере имеет место быть.
    Ошибка не регулярная. Возникает в строке 479 в frxXMLSerializer.pas - при сериализации объекта, ссылка на который равна Nil.
    ...
    else if FObj is TWideStrings then
          begin
            // skip, handle separately
          end
          else
            {added here - begin}
            if FObj = nil
              then begin
                s := 'nil';
                Exit;
              end else
            {added here - end}
            s := ObjToXML(FObj, Add + PropList[i].Name + '.', FAncObj);
          Flag := := True;
       end;
    ...
    

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

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