Некорректно отображается итог

a-werta-wert Россия
отредактировано 19:44 Раздел: FastReport 4.0
Есть отчет со следующей структурой:
ReportTitle - заголовок отчета
ColumnHeader - шапка таблицы
MasterData - данные
ColumnFooter - итог по странице
ReportSummary - общий итог
При формировании таблицы, когда мало записей, итог по странице выводится 2 раза, а на следующей странице выводится шапка таблицы и общий итог. Как можно эту ошибку исправить? Пример в файле.

Комментарии

  • FokewolfFokewolf Киев
    отредактировано 19:44
    a написал: »
    Есть отчет со следующей структурой:
    ReportTitle - заголовок отчета
    ColumnHeader - шапка таблицы
    MasterData - данные
    ColumnFooter - итог по странице
    ReportSummary - общий итог
    При формировании таблицы, когда мало записей, итог по странице выводится 2 раза, а на следующей странице выводится шапка таблицы и общий итог. Как можно эту ошибку исправить? Пример в файле.



    Попробуйте PageFooter.
  • a-werta-wert Россия
    отредактировано 19:44
    Мне нельзя использовать бэнд PageFooter, так как итог по странице будет отображатся в самом конце страницы и будет оторван от таблицы. Получится, что итог по всей таблице (бэнд ReportSummary) отображается вверху страницы, а итог по странице - внизу.
  • a-werta-wert Россия
    отредактировано 19:44
    написал:

    Спасибо за ссылку, но все равно помогает. Лишний итог перепрыгивает на новую страницу и показывает сумму предыдущей страницы. Получается на новой странице отображается шапка таблицы (ColumnHeader), итог по странице (PageFooter), и общий итог (ReportSummary), a MasterData отсутствует. А с меня требуют, чтобы в такой ситуации в MasterData присутствовала одна запись.
  • gpigpi
    отредактировано 19:44
    Попробуйте так:
    procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
        if (MasterData1.Dataset.RecNo+1=MasterData1.Dataset.RecordCount) and  (Engine.FreeSpace<PageFooter1.Height+MasterData1.Height+ReportSummary1.Height) then 
          Engine.NewPage;
    end;
    
  • FokewolfFokewolf Киев
    отредактировано 19:44
    a написал: »
    Есть отчет со следующей структурой:
    ReportTitle - заголовок отчета
    ColumnHeader - шапка таблицы
    MasterData - данные
    ColumnFooter - итог по странице
    ReportSummary - общий итог
    При формировании таблицы, когда мало записей, итог по странице выводится 2 раза, а на следующей странице выводится шапка таблицы и общий итог. Как можно эту ошибку исправить? Пример в файле.

    Что-то вы темните. Создал отчет с такой же структурой бэндов. Все нормально у меня. Ничего два раза не выводится. Вы часом в скрипте ничего не делаете ?
  • gpigpi
    отредактировано 19:44
    Покажите шаблон отчёта
  • FokewolfFokewolf Киев
    отредактировано 19:44
    gpi написал: »
    Покажите шаблон отчёта

    Тут только шаблон. Источник данных сами настройте.
  • a-werta-wert Россия
    отредактировано 19:44
    Fokewolf написал: »
    Что-то вы темните. Создал отчет с такой же структурой бэндов. Все нормально у меня. Ничего два раза не выводится. Вы часом в скрипте ничего не делаете ?

    В скрипте я ничего не делал. Вот мой первоначальный шаблон.

  • a-werta-wert Россия
    отредактировано October 2007
    gpi написал: »
    Попробуйте так:
    procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
        if (MasterData1.Dataset.RecNo+1=MasterData1.Dataset.RecordCount) and  (Engine.FreeSpace<PageFooter1.Height+MasterData1.Height+ReportSummary1.Height) then 
          Engine.NewPage;
    end;
    

    Ничего не изменилось. Стало только хуже. В центр добавился новый лист, содержащий только шапку таблицы и итог по странице в конце листа. Могу скинуть исходники программы на Delphi 2006, вот только как их отправить, у меня лимит загрузки исчерпан.
  • gpigpi
    отредактировано 19:44
    У меня отчёт формируется нормально, без двойных итогов по странице. Какую версию FR используете? Случайно не 4.4 - 4.4.4?
  • a-werta-wert Россия
    отредактировано 19:44
    gpi написал: »
    У меня отчёт формируется нормально, без двойных итогов по странице. Какую версию FR используете? Случайно не 4.4 - 4.4.4?
    Именно эту!!! Ограниченная версия!
  • a-werta-wert Россия
    отредактировано 19:44
    Установил версию 3.24, и лишний итог убрался.
    А после доработки скрипта отчет формируется как надо!
    procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
      if (MasterData1.DataSet.RecordCount>3) and
         (MasterData1.Dataset.RecNo+1=MasterData1.Dataset.RecordCount) and
         (Engine.FreeSpace<PageHeader1.Height+ColumnHeader1.Height+MasterData1.Height+ColumnFooter1.Height+ReportSummary1.Height) then
        Engine.NewPage;
    end;
    
    gpi и Fokewolf, спасибо за помощь!

    На последней версии 4.4.32 глюк тот же самый! Уважаемые разработчики, исправьте ошибку!
  • отредактировано 19:44
    a написал: »
    На последней версии 4.4.32 глюк тот же самый!
    Глюк мог присутствовать в 4.4 - 4.4.4, перед установкой новой версии старую удалили полностью(3-ю тоже , все dcu и bpl) ?
    a написал: »
    Уважаемые разработчики, исправьте ошибку!
    Какую ?
    У меня ошибка не воспроизводится.
    Пример на котором она воспроизводится есть(не шаблон отчета , а рабочий пример) ?
  • a-werta-wert Россия
    отредактировано 19:44
    Перед установкой удалял предыдущие версии с помощью "Установка и удаление программ", и удалял папку в Program Files.
    Выкладываю рабочий пример.
  • отредактировано October 2007
    a написал: »
    Перед установкой удалял предыдущие версии с помощью "Установка и удаление программ", и удалял папку в Program Files.
    Выкладываю рабочий пример.
    Повторную печать ColomnFooter поправил.
    Все равно вам нужно использовать скрипт
    procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
      if (MasterData1.DataSet.RecordCount>3) and
         (MasterData1.Dataset.RecNo+1=MasterData1.Dataset.RecordCount) and
         (Engine.FreeSpace<PageHeader1.Height+ColumnHeader1.Height+MasterData1.Height+ColumnFooter1.Hei
    ght+ReportSummary1.Height) then
        Engine.NewPage;
    end;
    

    Ваш скрипт работает совершенно одинаково что в 3-й , что в 4-ой версии, поэтому толку от этого фикса почти нет :)

    P.S.
    еще добавъте в procedure TDM.SetHead проверку ,а то AV кидает :) :
    Memo := Report.FindObject(Rec.Name) as TfrxMemoView;
    	  if Memo <. nil then
    		Memo.Text:=Rec.Value;
    
  • a-werta-wert Россия
    отредактировано 19:44
    написал: »
    Повторную печать ColomnFooter поправил.

    Спасибо! На новой версии опробуем!
  • a-werta-wert Россия
    отредактировано 19:44
    Поставил версию 4.4.33 и всё заработало! Спасибо!

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

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