Очистка отчета при формировании нового

отредактировано 17:56 Раздел: FastReport 3.0
Есть программа, формирующая отчеты их базы MSAccess, в зависимости от выбранных чекбоксов/радиобатонов формируется отчет через PrepareReport с последующим ShowPreparedReport

Так вот если сделать сначала один проход по условиям и получить отчет вышеописанным способом, а после этого изменить условия отбора и сформировать снова отчет, то в результате мы получим и старый отчет и новый.
Ясное дело, скажете Вы - очистить нужно компонент от "старого" отчета....
вот тут собсно и начинается, пробовал делать так:
а)frxReport1.Report.Clear
б)frxReport1.Clear;frxReport1.Report.Clear;

ни то ни другое не помогает, хотя в On-line справочнике для программистов написано:
"Компонент имеет все необходимые свойства и методы для загрузки и сохранения, дизайна и просмотра отчета. Рассмотрим основные методы TfrxReport:
procedure Clear
Очищает отчет ."

Выход я нашел только такой, несколько извращенный на мой взгляд:
1.frxReport1.Clear;
2.frxReport1.PrepareReport;

раз в п.1. мы убрали связь с отчетом, то при попытке подготовить отчет - произошла очистка.

Хочется еще попросить не отправлять меня для более внимательного изучения справки, к параметру процедуры PrepareReport(ClearLastReport:Boolean),потому как подготовка отчета происходит в цикле и если поставить True, то на экран пользователю попадет только последний отчет, либо в цикле нужна будет проверка на кол-во проходов по циклу, чтобы True поставить только на первом проходе

Наверняка кто-нибудь встречался с подобным, подскажите пожалуйста как правильно очистить отчет?
А может быть я не верно трактую справку или дело все-таки в особенностях фаст-репорта?

Пишу на D7+FR3.16

Заранее благодарен всем хотя бы за то, что смогли прочесть эту "телегу" ;)

Комментарии

  • gpigpi
    отредактировано 17:56
    написал:
    Хочется еще попросить не отправлять меня для более внимательного изучения справки, к параметру процедуры PrepareReport(ClearLastReport:Boolean),потому как подготовка отчета происходит в цикле и если поставить True, то на экран пользователю попадет только последний отчет, либо в цикле нужна будет проверка на кол-во проходов по циклу, чтобы True поставить только на первом проходе
    А если в цикле написать PrepareReport(i=0), где i-переменная для цикла, цикл начинается с 0. Первый отчёт будет выполнять очистку.
  • отредактировано 17:56
    gpi написал:
    gpi написал:
    Хочется еще попросить не отправлять меня для более внимательного изучения справки, к параметру процедуры PrepareReport(ClearLastReport:Boolean),потому как подготовка отчета происходит в цикле и если поставить True, то на экран пользователю попадет только последний отчет, либо в цикле нужна будет проверка на кол-во проходов по циклу, чтобы True поставить только на первом проходе
    А если в цикле написать PrepareReport(i=0), где i-переменная для цикла, цикл начинается с 0. Первый отчёт будет выполнять очистку.
    если честно, то до такого не додумался ;)
    спасибо,попробую

    а по поводу того, что написано в документации - верно ли там написано или все же я не правильно трактую мануал?
  • отредактировано 17:56
    cybermanager написал:
    cybermanager написал:
    cybermanager написал:
    Хочется еще попросить не отправлять меня для более внимательного изучения справки, к параметру процедуры PrepareReport(ClearLastReport:Boolean),потому как подготовка отчета происходит в цикле и если поставить True, то на экран пользователю попадет только последний отчет, либо в цикле нужна будет проверка на кол-во проходов по циклу, чтобы True поставить только на первом проходе
    А если в цикле написать PrepareReport(i=0), где i-переменная для цикла, цикл начинается с 0. Первый отчёт будет выполнять очистку.
    если честно, то до такого не додумался ;)
    спасибо,попробую

    а по поводу того, что написано в документации - верно ли там написано или все же я не правильно трактую мануал?
    попробовал, мне такой вариант не совсем подходит...
    в цикле по которому выполняются проходы стоит условие типа
    if List.Checked then....
    так вот вероятность того, что условие сработает при i=0 достаточно мала, а посему очистка в 99% случаев не происходит

    может быть есть еще варианты?
  • отредактировано 17:56
    А я формирую отчёт из базы ACCESS так:
    ...
    frxReport1.LoadFromFile(pathRep +'\'+ namerep +'.fr3', FALSE);
    ...
    frxReport1.PrepareReport(TRUE);
    frxReport1.ShowPreparedReport;

    И не замечал старых отчётов.
    ;)
  • отредактировано 17:56
    GekFinn написал:
    А я формирую отчёт из базы ACCESS так:
    ...
    frxReport1.LoadFromFile(pathRep +'\'+ namerep +'.fr3', FALSE);
    ...
    frxReport1.PrepareReport(TRUE);
    frxReport1.ShowPreparedReport;

    И не замечал старых отчётов.
    ;)
    Ясное дело что у тебя ничего "старого" не будет:
    GekFinn написал:
    frxReport1.PrepareReport(TRUE);

    а у меня малость другая ситуация:
    мне нужно чтобы при ПЕРВОМ проходе по циклу отчет был очищен и сформирован новый, а при последующим очистка не нужна.
    Это пакетная печать по своей сути.
  • gpigpi
    отредактировано 17:56
    Попробуйте frxReport1.PreviewPages.Clear;
  • отредактировано 17:56
    gpi написал:
    Попробуйте frxReport1.PreviewPages.Clear;
    это то, что я так и не смог самостоятельно найти... спасибо ;)

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

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