Печать header-а и footer-а при отсутствии данных

отредактировано 22:28 Раздел: FastReport 3.0
Здравствуйте!

Вот такой вопрос не могу решить с репортом - таблица данных из sql-запроса с header-ом и footer-ом.
Хочу, чтобы header и footer печатались даже тогда, когда данных нет!
Как это сделать?

Комментарии

  • отредактировано August 2006
    В скрипте (где MasterData1 находится между Header1 и Footer1 и привязан к датасету).
    procedure Page1OnAfterPrint(Sender: TfrxComponent);
    begin
    if TfrxDBDataSet(MasterData1.DataSet).IsEmpty then
    begin
      Engine.ShowBand(Header1);
     Engine.ShowBand(Footer1);
    end;
    end;
    
  • отредактировано 22:28
    Попробовал код - вылетает ошибка:
    "Неопределенный идентификатор: TfrxDBDataSet"

    Менял условие на
    if MasterData1.DataSet.IsEmpty then
    в этом случае ошибка:
    "Неопределенный идентификатор: IsEmpty"

    Как победить?
  • отредактировано 22:28
    В uses программы добавить frxCustomDBRTTI.
  • отредактировано 22:28
    Извините за назойливость ;)
    Но все равно не получается ..

    Теперь получаю:
    "Variant array index out og bounds"

    А без этого кода отрабатывает без ошибок все.
  • отредактировано 22:28
    В MasterData (там, где задается DataSet - двойной щелчек мышкой на MasterData) надо поставить количество записей 1 (Number of records).
  • отредактировано 22:28
    В MasterData по двойному клику у меня только (выбран frxDBDataSet1):
    [не назначен]
    Одна строка
    frxDBDataSet1

    Не вижу, где бы я мог указать кол-во записей ;)

    А в свойствах у DataSet-а также не нашел (см.аттач)
  • отредактировано August 2006
    Тогда так(в OnBrforePrintPage):
    if TfrxDBDataSet(MasterData1.DataSet).IsEmpty then
    MasterData1.RowCount := 1;
    
    или
    if MasterData1.DataSet.RecordCount = 0 then
    MasterData1.RowCount := 1;
    
  • отредактировано 22:28
    написал:
    В MasterData по двойному клику у меня только (выбран frxDBDataSet1)
    Окно "Select DataSet" открывается по двойному клику мышки по синему полю бенда MasterData. В нижней части этого окна находится поле для ввода количества записей ("Number of records").

    У меня FR 3.21.
  • отредактировано 22:28
    Ошибка "Variant array index out of bounds" не исчезла.
    Код:
    procedure Page1OnBeforePrint(Sender: TfrxComponent);
    begin
     if TfrxDBDataSet(MasterData1.DataSet).IsEmpty then
     begin
      MasterData1.RowCount := 1;
      Engine.ShowBand(Header1);
      Engine.ShowBand(Footer1);
     end;
    end;
    

    Ошибка возникает в fs_iinterpreter на строке 1622:
    for j := 0 to Item.Count - 1 do

    Версия FR 3.10
  • отредактировано 22:28
    Уберите Engine.ShowBand(Header1); Engine.ShowBand(Footer1); .
  • отредактировано 22:28
    Та же ошибка и с этим кодом:
    procedure Page1OnBeforePrint(Sender: TfrxComponent);
    begin
     if TfrxDBDataSet(MasterData1.DataSet).IsEmpty then
     begin
      MasterData1.RowCount := 1;
     end;
    end;
    
  • отредактировано 22:28
    Такой код пробовали ?
    procedure Page1OnBeforePrint(Sender: TfrxComponent);
    begin
    if MasterData1.DataSet.RecordCount = 0 then
    MasterData1.RowCount := 1;
    end;
    
  • отредактировано 22:28
    Попробовал - та же ошибка.
    Может дело в версии FR ?
  • отредактировано 22:28
    Оказалось - дело действительно в версии FR.
    В 3.23 работает первоначальный код:
    procedure Page1OnAfterPrint(Sender: TfrxComponent);
    begin
     if TfrxDBDataSet(MasterData1.DataSet).IsEmpty then
     begin
      Engine.ShowBand(Header1);
      Engine.ShowBand(Footer1);
     end;
    end;
    

    Спасибо за помощь! ;)

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

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