Создаю компоненты в Run-time и экспортирую отчет в Pdf

отредактировано 09:12 Раздел: FastReport 4.0
Привет дорогие спецы, уже голову себе сломал и гугл отгуглил.
Вот код
var
  MyQ:TMyQuery;
  MyCon:TMyConnection;
  MySource:TMyDataSource;
  RepPDF: TfrxReport;
  PDF: TfrxPDFExport;
  DataSetFrx:TfrxDBDataset;

begin
    MyQ:=TMyQuery.Create(nil);
    MyCon:=TMyConnection.Create(nil);
    MyCon.Connected:=False;
    MyCon.LoginPrompt:=False;
    MyCon.Database:=ConDB;
    MyCon.Username:=ConUser;
    MyCon.Server:=ConServer;
    MyCon.Port:=ConPort;
    MyCon.Password:=ConPass;
    MyQ.Connection:=MyCon;
    MyQ.SQL.Text:='SELECT * FROM table;';

    MyQ.Open;

    RepPDF := TfrxReport.Create(nil);
    RepPDF.EngineOptions.SilentMode := True;
    RepPDF.EngineOptions.UseFileCache := False;
    RepPDF.PrintOptions.ShowDialog := False;
    RepPDF.ShowProgress := False;
    RepPDF.EngineOptions.UseGlobalDataSetList:=False;

    DataSetFrx:=TfrxDBDataset.Create(nil);
    DataSetFrx.Name:='DataSetFrx1';
    DataSetFrx.UserName := 'DataSetFrx1';
    DataSetFrx.DataSet:=MyQ;

    RepPDF.DataSets.Add(DataSetFrx);
    RepPDF.EnabledDataSets.Add(DataSetFrx);

    PDF := TfrxPDFExport.Create(nil);
    PDF.ShowDialog := False;
    PDF.ShowProgress := False;

    if (RepPDF.LoadFromFile(GetCurrentDir+'\Rep.fr3')) then
    begin
      if RepPDF.PrepareReport then
      begin
        NameFile:='report_' + FormatDateTime('YYYYYMMDDHHMMSS', Now) + '.pdf';
        PDF.FileName := GetTempDir + NameFile;
        RepPDF.Export(PDF);
      end;
    end;
end;

так вот на строке RepPDF.PrepareReport он в False и никакой ошибки не генерит! В чем может быть проблема?

Комментарии

  • отредактировано 09:12
    lab0art написал: »
    Привет дорогие спецы, уже голову себе сломал и гугл отгуглил.
    Вот код
    var
      MyQ:TMyQuery;
      MyCon:TMyConnection;
      MySource:TMyDataSource;
      RepPDF: TfrxReport;
      PDF: TfrxPDFExport;
      DataSetFrx:TfrxDBDataset;
    
    begin
        MyQ:=TMyQuery.Create(nil);
        MyCon:=TMyConnection.Create(nil);
        MyCon.Connected:=False;
        MyCon.LoginPrompt:=False;
        MyCon.Database:=ConDB;
        MyCon.Username:=ConUser;
        MyCon.Server:=ConServer;
        MyCon.Port:=ConPort;
        MyCon.Password:=ConPass;
        MyQ.Connection:=MyCon;
        MyQ.SQL.Text:='SELECT * FROM table;';
    
        MyQ.Open;
    
        RepPDF := TfrxReport.Create(nil);
        RepPDF.EngineOptions.SilentMode := True;
        RepPDF.EngineOptions.UseFileCache := False;
        RepPDF.PrintOptions.ShowDialog := False;
        RepPDF.ShowProgress := False;
        RepPDF.EngineOptions.UseGlobalDataSetList:=False;
    
        DataSetFrx:=TfrxDBDataset.Create(nil);
        DataSetFrx.Name:='DataSetFrx1';
        DataSetFrx.UserName := 'DataSetFrx1';
        DataSetFrx.DataSet:=MyQ;
    
        RepPDF.DataSets.Add(DataSetFrx);
        RepPDF.EnabledDataSets.Add(DataSetFrx);
    
        PDF := TfrxPDFExport.Create(nil);
        PDF.ShowDialog := False;
        PDF.ShowProgress := False;
    
        if (RepPDF.LoadFromFile(GetCurrentDir+'\Rep.fr3')) then
        begin
          if RepPDF.PrepareReport then
          begin
            NameFile:='report_' + FormatDateTime('YYYYYMMDDHHMMSS', Now) + '.pdf';
            PDF.FileName := GetTempDir + NameFile;
            RepPDF.Export(PDF);
          end;
        end;
    end;
    

    так вот на строке RepPDF.PrepareReport он в False и никакой ошибки не генерит! В чем может быть проблема?

    Разобрался.
    В шаблоне, во всех полях обращение шло к имени frxDBDataset1, а не к DataSetFrx1.

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

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