Динамически создаваемый отчет delphi - PullRequest
0 голосов
/ 12 сентября 2018

Я использую построитель отчетов и пытаюсь динамически создать отчет с помощью построителя отчетов, поскольку в нем много полей, поэтому я не хочу делать это вручную.Верхняя часть кода работает и обрабатывает имена полей в верхней части без проблем, но она не заполняет данные в отчете.Я не могу понять, в чем проблема.

Редактировать: если я добавляю dbtext к фактическому компоненту отчета, назначаю его полю данных, которое заполняется, и когда я вхожу в отладку, переходите к этой функции, я вижу, что она получает данные, но просто не добавляетэто к отчету.

procedure TfrmMainMkt.makeReport;
const
  TmpEspacamento = 0.7;
  StartTop = 0.1875;
  AutoSize = True;
  TmpWidth = 0.5;
var
  I: Integer;
  Txt: TppLabel;
  DBTxt : TppDBText;
  StartLeft: Double;
  sFILENAME : string;

  begin
  StartLeft := 0;
  sFILENAME := SetDirectoryForTSUser();
  ppDBPipeline1.DataSource := DataSource1;
  ppReport1.DataPipeline := ppDBPipeline1;
  with DataSource1.DataSet do

begin
for i := 0 to DataSource1.DataSet.FieldCount - 1 do
  begin
        Txt                 := TppLabel.Create(ppReport1);
        Txt.Caption         := DataSource1.DataSet.Fields[i].FieldName ;
        Txt.Left            := StartLeft;
        Txt.Top             := StartTop;
        Txt.Band            := ppHeaderBand11;
        Txt.AutoSize        := AutoSize;
        Txt.Width           := TmpWidth;
        Txt.Font            := Font;
        //Txt.TextAlignment   := TextAlignment;
        //Txt.Border          := Border;
        Txt.Transparent     := true;
        Txt.Tag             := -50000;
        StartLeft           := TmpEspacamento + StartLeft;
  end;
StartLeft := 0;

for i := 0 to DataSource1.DataSet.FieldCount - 1 do
  begin
        DBTxt                 := TppDBText.Create(self);
        DBTxt.Parent          := ppReport1;
        DBTxt.DataField       := DataSource1.DataSet.Fields[i].AsString;
        DBTxt.DataPipeline    := ppDBPipeline1;
        DBTxt.ParentDataPipeline := true;
        DBTxt.Left            := StartLeft;
        DBTxt.Top             := StartTop;
        DBTxt.DesignLayer     := ppDesignLayer13;
        DBTxt.Band            := ppDetailBand12;
        DBTxt.AutoSize        := AutoSize;
        DBTxt.Width           := TmpWidth;
        DBTxt.Font            := Font;
        //Txt.TextAlignment   := TextAlignment;
        //Txt.Border          := Border;
        DBTxt.Transparent     := true;
        DBTxt.Tag             := -50000;
        StartLeft             := TmpEspacamento + StartLeft;
  end;
end;

  sFILENAME := sFILENAME + 'Report.xlsx';
//  ppReport1.DeviceType := 'XLSXReport';
//  ppReport1.TextFileName := sFILENAME;
//  ppReport1.AllowPrintToFile := True;
  ppReport1.Print
  end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...