Я использую построитель отчетов и пытаюсь динамически создать отчет с помощью построителя отчетов, поскольку в нем много полей, поэтому я не хочу делать это вручную.Верхняя часть кода работает и обрабатывает имена полей в верхней части без проблем, но она не заполняет данные в отчете.Я не могу понять, в чем проблема.
Редактировать: если я добавляю 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;