Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   FastReport - mehrere DS in einer PDF-Datei- (https://www.delphipraxis.net/188010-fastreport-mehrere-ds-einer-pdf-datei.html)

HPB 25. Jan 2016 07:25

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von Lemmy (Beitrag 1328040)
Zitat:

Zitat von haentschman (Beitrag 1328037)
Viele Wege führen nach Rom. Friede sei mit uns... :thumb:

siehste - 2 unterschiedliche Meinungen und doch denken wir das selbe ;-)

Vielen Dank für Eure Anregungen.
Noch eine Frage an Lemmy.
So wie ich diesen Teil verstehe:

Delphi-Quellcode:
  frPart.LoadFromFile(<>);
  frPart.PrepareReport(true);
  frMain.Pages.AddPrepared(frPart.Page)

Werden zuerst alle zu erzeugenden Reports in eine Datei gespeichert und dann wieder eingelesen
und zu dem Report addiert? Werde ich nachher mal testen.

Mit Gruß
HPB

Lemmy 25. Jan 2016 07:33

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von HPB (Beitrag 1328063)
Werden zuerst alle zu erzeugenden Reports in eine Datei gespeichert und dann wieder eingelesen
und zu dem Report addiert? Werde ich nachher mal testen.

Nein.. du machst einen Schleife um deine Datensätze (Hauptdatensätze). Für jeden Datensatz erzeugst Du nun die eine Seite und speicherst diese dann in einer anderen frxReport Komponente "zwischen":



Delphi-Quellcode:
   
  while NOT qry.EOF do
  begin
    frPart.LoadFromFile('meinReport.fr3');
    frPart.PrepareReport(true);
    frMain.Pages.AddPrepared(frPart.Page);
    qry.Next;
  end;
  ExportToPDF(frMain);

HPB 25. Jan 2016 07:56

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von Lemmy (Beitrag 1328064)
Zitat:

Zitat von HPB (Beitrag 1328063)
Werden zuerst alle zu erzeugenden Reports in eine Datei gespeichert und dann wieder eingelesen
und zu dem Report addiert? Werde ich nachher mal testen.

Nein.. du machst einen Schleife um deine Datensätze (Hauptdatensätze). Für jeden Datensatz erzeugst Du nun die eine Seite und speicherst diese dann in einer anderen frxReport Komponente "zwischen":



Delphi-Quellcode:
   
  while NOT qry.EOF do
  begin
    frPart.LoadFromFile('meinReport.fr3');
    frPart.PrepareReport(true);
    frMain.Pages.AddPrepared(frPart.Page);
    qry.Next;
  end;
  ExportToPDF(frMain);

Meine Version von Fastreport kennt diesen Teil nicht:
Delphi-Quellcode:
    frMain.Pages.AddPrepared(frPart.Page);
Dafür aber diese:
Delphi-Quellcode:
      frxrprtPart.LoadFromFile(PfadReport + '\' + 'bruder-daten.fr3');
      frxrprtPart.PrepareReport(True);
      frxReport1.Page.AssignAll(frxrprtPart.Page);
Ob dies das Richtige ist, werde ich nachher test.
Gruß und eine nette Woche
HPB

HPB 25. Jan 2016 11:33

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von HPB (Beitrag 1328066)
Zitat:

Zitat von Lemmy (Beitrag 1328064)
Zitat:

Zitat von HPB (Beitrag 1328063)
Werden zuerst alle zu erzeugenden Reports in eine Datei gespeichert und dann wieder eingelesen
und zu dem Report addiert? Werde ich nachher mal testen.

Nein.. du machst einen Schleife um deine Datensätze (Hauptdatensätze). Für jeden Datensatz erzeugst Du nun die eine Seite und speicherst diese dann in einer anderen frxReport Komponente "zwischen":



Delphi-Quellcode:
   
  while NOT qry.EOF do
  begin
    frPart.LoadFromFile('meinReport.fr3');
    frPart.PrepareReport(true);
    frMain.Pages.AddPrepared(frPart.Page);
    qry.Next;
  end;
  ExportToPDF(frMain);

Meine Version von Fastreport kennt diesen Teil nicht:
Delphi-Quellcode:
    frMain.Pages.AddPrepared(frPart.Page);
Dafür aber diese:
Delphi-Quellcode:
      frxrprtPart.LoadFromFile(PfadReport + '\' + 'bruder-daten.fr3');
      frxrprtPart.PrepareReport(True);
      frxReport1.Page.AssignAll(frxrprtPart.Page);
Ob dies das Richtige ist, werde ich nachher test.
Gruß und eine nette Woche
HPB

Ich habe nun getestet.
Ich finde einfach keinen Weg.
Delphi-Quellcode:
 frxReport1.Page.AssignAll(frxrprtPart.Page)
und dies
Delphi-Quellcode:
frMain.Pages.AddPrepared(frPart.Page);
geht mit meinem FastReport 4.0 nicht. FastReport bietet auch keine andere Optionen
wie z. B. "Page.Add" an.
Wie kann man das bloß lösen?
So langsam verzweifle ich.
Mit gruß HPB

EarlyBird 25. Jan 2016 12:02

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Kannst Du nicht einfach einen Master-Detail Report daraus machen?
Du übergibst dem Report die 32 Masterdaten und die entsprechenden Detaildaten.
Dann kann der Report automatisch pro Datensatz eine Seite erstellen.
Der PDF Export ist dann ganz einfach.
(oder habe ich da was wichtiges überlesen)

HPB 25. Jan 2016 13:45

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von EarlyBird (Beitrag 1328098)
Kannst Du nicht einfach einen Master-Detail Report daraus machen?
Du übergibst dem Report die 32 Masterdaten und die entsprechenden Detaildaten.
Dann kann der Report automatisch pro Datensatz eine Seite erstellen.
Der PDF Export ist dann ganz einfach.
(oder habe ich da was wichtiges überlesen)

Guten EarlyBird,
es sollen alle n-Datensätze in einer PDF-Datei zusammengefast werden.
Also nicht n-Einzelseiten sondern eine eizige Seite.
Mit Gruß
HPB

Sir Rufo 25. Jan 2016 13:54

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von HPB (Beitrag 1328115)
es sollen alle n-Datensätze in einer PDF-Datei zusammengefast werden.
Also nicht n-Einzelseiten sondern eine eizige Seite.

Du willst die Quadratur des Kreises, oder diese Anforderung passt nicht mehr zur Ausgangsfrage:
Zitat:

Zitat von HPB (Beitrag 1327942)
Pro Datensatz wird eine Seite gedruckt.
Bei 32 Datensätzen eben 32 einzelne Seiten.
So weit so gut.
Jetzt sollen aber die 32 Seiten in einem
einzigen Rutsch in einer PDF-Datei erzeugt werden.


EarlyBird 25. Jan 2016 14:12

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Für jeden Datensatz im frxBruderDaten DataSet möchtest Du eine Seite erzeugen?
Alle Seiten sollen zusammenhängend in einem PDF Dokument exportiert werden?

Oder sind Daten der frxBruderDaten Tabelle nicht eindeutig!? Dann gruppiere die Daten in einer SQL abfrage.

Dann kann man es mit dem Master-Detail Report machen.
frxBruderDaten als Dataset in einem Masterband einfügen.
Eigenschaft "StartNewPage" des Maserbandes auf true.

Was in die Detaildaten kommt kann ich Deinem Report nicht entnehmen.

HPB 25. Jan 2016 14:42

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Zitat:

Zitat von EarlyBird (Beitrag 1328125)
Für jeden Datensatz im frxBruderDaten DataSet möchtest Du eine Seite erzeugen?
Alle Seiten sollen zusammenhängend in einem PDF Dokument exportiert werden?

Oder sind Daten der frxBruderDaten Tabelle nicht eindeutig!? Dann gruppiere die Daten in einer SQL abfrage.

Dann kann man es mit dem Master-Detail Report machen.
frxBruderDaten als Dataset in einem Masterband einfügen.
Eigenschaft "StartNewPage" des Maserbandes auf true.

Was in die Detaildaten kommt kann ich Deinem Report nicht entnehmen.

Es ist schon richtig. Jeder Datensatz benötigt eine oder zwei A4 Seite/n.
Alle erzeugten Datensätze sollen zusammenhängend in ein PDF-Dokument ausgegeben werden.

Die Daten werden jetzt so selektiert:
Delphi-Quellcode:
  pNode := VstAdressen.GetFirstVisible;
  while Assigned(pNode) do
  begin
    if VstAdressen.CheckState[pNode] = csCheckedNormal then
    begin
      Inc(i);
      pDaten := TOAdressVSTDaten(VstAdressen.GetNodeData(pNode)^);
      pAdressID := pDaten.FAdressID;

      ibqryBruderDaten.close;
      ibqryBruderDaten.SQL.Clear;
      ibqryBruderDaten.SQL.Add('select * from ADRESSEN, logenaemter ');
      ibqryBruderDaten.SQL.Add('where adressen.ADRESSID = :pAdressID ');
      ibqryBruderDaten.SQL.Add('and logenaemter.FKADRESSID = ' +
        'adressen.Adressid ');

      ibqryBruderDaten.Prepare;
      ibqryBruderDaten.ParamByName('pAdressID').Value := pAdressID;

      ibqryRepEhrungen.Close;
      ibqryRepEhrungen.Prepare;
      ibqryRepEhrungen.ParamByName('pAdressid').Value := pAdressID;
//      frxrprtPart.LoadFromFile(PfadReport + '\' + 'bruder-daten.fr3');
//      frxrprtPart.SaveToFile('D:\report' + '-'+ IntToStr(i) + '.fr3');
      frxrprtPart.PrepareReport(True);
//      frxReport1.Page.AssignAll(frxrprtPart.Page, True);
      frxReport1.LoadFromFile(PfadReport + '\' + 'bruder-daten.fr3');

      if pSofortDrucken then
      begin
        frxReport1.PrintOptions.ShowDialog := False;
        frxReport1.PrintOptions.Printer := Drucker;
        if frxReport1.PrepareReport then
          frxReport1.Print;
      end
      else
      begin
        if frxReport1.PrepareReport then
          frxReport1.ShowReport;
      end;
      VstAdressen.CheckState[pNode] := csUncheckedNormal;
    end;
    pNode := VstAdressen.GetNextVisible(pNode);
  end;

-----------------------

Zu SirRufo,
vielleicht habe ich mich nicht konkret genug geäußert.

Mit Gruß
HPB

HPB

Sir Rufo 25. Jan 2016 14:49

AW: FastReport - mehrere DS in einer PDF-Datei-
 
Ah, jetzt kommt doch etwas Licht ins Dunkle :)

Du gehst durch eine Liste und für jeden selektierten Eintrag lässt du einen Bericht erzeugen. Dadurch bekommst du natürlich auch n einzelne Berichte und somit erst einmal auch n einzelne PDF-Dokumente.

Es wäre besser, wenn du die selektierten Einträge sammeln und dann in einem Rutsch an den Bericht übergeben würdest, dann hättest du ein Problem weniger.

Wohin du sammelst ist egal, denn der FR kann mit einem DataSet oder auch einer schnöde Liste (
Delphi-Quellcode:
TfrxUserDataSet
) gleichermassen umgehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz