Наследование

отредактировано 16:26 Раздел: FastReport 4.0
Создал базовый отчет header.fr3, хочу его наследовать открываю
"Файл|Новый..." иду на страницу "Шаблоны" и ничего не вижу.
В Doc "Задать папку для шаблонов можно в компоненте TfrxDesigner, указав свойство TemplateDir" но мне не нужен TfrxDesigner на форме.
Как мне быть, как показать пути к шаблону?

Комментарии

  • отредактировано 16:26
    Необходимо использовать TfrxDesigner, других способов нет.
  • отредактировано 16:26
    А как тогда там использовать относительный путь?
  • отредактировано 16:26
    Если работаете в среде Delphi - только абсолютный путь, т.к. .exe проекта не существует в design-time.
  • отредактировано November 2006
    если в *.fr3 меняю <inherited ParentReport="FR3\Header.fr3" путь на относительный
    Ошибка приложения
    Исключительная ситуация Exception в модуле BuhKsr_Fr.exe по адресу 0019C8B0.

    Повторяющееся имя.


    ОК
    адрес на
    procedure TfrxComponent.SetName(const AName: TComponentName);

    Вопрос в следующем, как же мне отдавать клиенту задачу если он может поставить у её себя по любому пути?
  • отредактировано 16:26
    В FR3 файле всегда хранится относительный путь. Ничего там менять не надо.
  • отредактировано 16:26
    <?xml version="1.0" encoding="utf-8"?>
    <inherited ParentReport="D:\WinDP\V8_0\BuhKsr_FR\FR3\Header.fr3" ReportOptions.CreateDate="38589,7132770718" ReportOptions.LastChange="39035,6706366435" 
    
    в файле так, и путь там абсолютный
    и что же делать в этом случае?
  • отредактировано 16:26
    Конечно, если базовый файл на C:\, а наследованный на D:\, то иного способа записать путь нет. Если файлы на одном диске, будет записан относительный путь.
  • отредактировано 16:26
    Эти файлы не просто на одном диске они в одном каталоге FR3.
    Соответственно при переносе на другую машину отчет не запускается причем ошибок не выдает.
    И как быть?
  • отредактировано 16:26
    В завтрашней сборке должно работать более-менее нормально.
  • отредактировано November 2006
    Установил fr4_0_17_d6p.exe Да теперь в файле inherited ParentReport
    пишется относительный путь. Все кажется замечательно, но при запуска отчета он не показывается. Далаю отсоеденить отчет, и после этого он показывается.
    Наверно все таки путь к parentreport не находится. Хочу подчеркнуть что оба файла с отчетми лежат и будут лежать у клиента в одном каталоге. Может еще что-то мне нужно сделать? В TfrxDesigner прописан абсолютный путь, относительный там не воспринимается.
    Upd
    если в inherited ParentReport ставлю абсолютный путь работает нормально.
  • отредактировано November 2006
    В базовом файле сделано подключение к базе данных FIB и есть несколько Query. В самом файле, при проверке из дизайнера и при запуске из программы все нормально. Когда я наследую от этого файла при проверке
    Ошибка
    Были обнаружены следующие ошибки:

    Memo2: Ошибка в выражении 'Q_FulNameOrg."PARAMVALUE"': Identifier expected


    ОК
    хотя еще раз повторюсь в базовом файле все нормально. Все компоненты подключения к базе наследовались нормально, но в настройках используемых данных у них нет галочек. Причем что странно на странице "Данные" все компоненты присутствуют в одном экземпляре, в настройке используемых данных "Данные отчета" в двух.
    Зачем они в двух экземплярах? И можно ли чтоб они автоматически ставились как используемые?
    И еще.
                  db := TfrxFIBDatabase(frxReport1.FindObject('DB'));
                  db.DatabaseName := BUSTER;
                  db.Params.Clear;
                  db.Params.Add('user_name='+sParamUser);
                  db.Params.Add('password='+sParamPass);
                  db.Connected :=true;
    
    в отчете базовом все проходит на ура. В наследованом db = nil. И как быть в этой ситуации? Причем на странице "Данные" этот объект присутствует.
  • отредактировано 16:26
    а можно навесить своство чтобы переопределить открывание базовового отчета?

    т.е если отчеты лежат в базе. я переопределяю данный метод открытия отчета
    открываю нужный отчет из базы.
    соответственно нужно и переопределить записи имени базового отчета в наследуемом. чтобы прописать какой отчет брать базовый из базы.
  • отредактировано 16:26
    Про базовые отчеты из базы подробно написано в programmer's manual.
  • отредактировано 16:26
    установил FR4_0_18 к сожалению fibdatabase и fibquery наследуются как и раньше с ошибками.
  • отредактировано 16:26
    установил FR4_0_19 к сожалению fibdatabase и fibquery наследуются как и раньше с ошибками.
  • отредактировано 16:26
    Проверял на ADO, у меня из ошибок только дублирование в окне Report|Data. Отчет работает нормально.
  • отредактировано 16:26
    Я ADO не использую. Я использую FIB и с ними наследование не работает. Дублирование тоже не есть хорошо. И то что автоматически галочки не ставятся при наследовании то же плохо, мне так кажется.
  • отредактировано 16:26
    Дублирование исправил. Галочки у меня присутствуют, все работает. Какой вариант FIB используется - тот, что идет в поставке FR (Source\FIB) или посторонний?
  • отредактировано 16:26
    FIB доставляю из каталога FastReport 4\Source\FIB\ без каких либо модификаций.
  • отредактировано 16:26
    Проверить на FIB в данный момент нет возможности (отсутствует Interbase). Сможете повторить то же самое на ADO и базе из демки? У меня все работает.
  • отредактировано 16:26
    Хорошо. Попробую.
  • отредактировано November 2006
    Да с ADO действительно все работает правильно.
     frxReport1.LoadFromFile('2.fr3');
     ad := TfrxADODatabase(frxReport1.FindObject('ADODatabase1'));
    
     ad.DatabaseName := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Delmy\demo.mdb;Persist Security Info=False;User ID=ADMIN;Password=';
    
     ad.Connected := true;
     frxReport1.ShowReport(true);
    
    тоже работает.
    В списке данных вижу дублирование и отсутствие галочек однако это не мешает правильно показывать необходимую информацию.
    Видно дело именно в компанентах FIB.

    Может поможет
    Имя ОС	Microsoft Windows XP Professional
    Версия	5.1.2600 Service Pack 1 Сборка 2600
    FIBPlus 6.45
    FireBird 1.5
    Delphi 6 update 2
    
  • отредактировано 16:26
    Хорошо, попробую проверить на FIB.
  • отредактировано 16:26
    Проверил, на FIB работает тоже.
  • отредактировано November 2006
    установил fr4_0_22 при наследовании в данных больше нет дублирования но
                 db := TfrxFIBDatabase(frxReportBuhKsr.FindObject('DB'));
                  if db <> nil then
                   begin
                    db.DatabaseName := BUSTER;
                    db.Params.Clear;
                    db.Params.Add('user_name='+sParamUser);
                    db.Params.Add('password='+sParamPass);
                    db.Connected :=true;
                   end;
    
    не работае, db = nil. Как быть?
    При отсоединении отчета от базового все работает прекрасно

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

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