Я использую FastReport 4.7.31 в Турбо Delphi Pro.
Следующая процедура обрабатывает данные, хранившие в нескольких датированных файлах в зависимости от ввода данных пользователем.
procedure TfrmMain.MyReportPrint;
var MDate : Tdate;
S, myfile : string;
firstone: boolean;
// Date1, Date2 & ShowPreview are global variables set via a dialog box
begin
firstone := true;
MDate := Date1;
while MDate < IncDay(Date2, 1) do
begin
DateTimeToString(S,'yyyymmdd',MDate);
myfile := 'm' + S + '.dbf';
if FileExists(DataPath + '\' + myfile) then
begin
tblPS.Close;
tblPS.TableName := myfile;
frxMyReport.PrepareReport(firstone);
firstone := false;
end;
MDate := IncDay(MDate, 1);
end;
if ShowPreview then frxMyReport.ShowReport else frxMyReport.Print;
end;
frxMyReport. Печать печатает все страницы.
frxMyReport. ShowReport показывает только последнюю подготовленную страницу.
Метод ShowReport
принимает необязательный параметр ClearLastReport
, а его значение по умолчанию - true ]. Независимо от того, правда это или ложь, ShowReport
подготавливает отчет перед его отображением, поэтому в вашем коде вы отбрасываете все, что вы уже подготовили, а затем повторно готовите отчет с использованием последних назначенных параметров таблицы. Если бы единственное изменение, которое вы должны были внести в свой код, - это передать False
в ShowReport
, то вы бы обнаружили, что предварительный просмотр показывает все ваши страницы, но повторяет последнюю страницу.
В отличие от ShowReport
, метод Print
не подготавливает отчет. Он печатает только то, что уже было подготовлено. Для предварительного просмотра требуется ShowPreparedReport
, а не ShowReport
. См. Раздел 1.9 Руководства программиста FastReport .