AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge FastReport - mehrere DS in einer PDF-Datei-
Thema durchsuchen
Ansicht
Themen-Optionen

FastReport - mehrere DS in einer PDF-Datei-

Ein Thema von HPB · begonnen am 23. Jan 2016 · letzter Beitrag vom 26. Jan 2016
Antwort Antwort
Seite 1 von 2  1 2      
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#1

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

  Alt 25. Jan 2016, 07:56
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:
    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
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#2

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

  Alt 25. Jan 2016, 11:33
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:
    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.
 frxReport1.Page.AssignAll(frxrprtPart.Page) und dies 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
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#3

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

  Alt 25. Jan 2016, 12:02
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)

Geändert von EarlyBird (25. Jan 2016 um 12:09 Uhr)
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#4

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

  Alt 25. Jan 2016, 13:45
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

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

  Alt 25. Jan 2016, 13:54
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:
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#6

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

  Alt 25. Jan 2016, 14:12
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.
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#7

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

  Alt 25. Jan 2016, 14:42
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

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

  Alt 25. Jan 2016, 14:49
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 (TfrxUserDataSet ) gleichermassen umgehen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 25. Jan 2016, 18:10

Ich habe nun getestet.
Ich finde einfach keinen Weg.
sorry, ich habe den COde aus einem alten Post von mir geklaut, ich war der Meinung dass der passt. Ich habe jetzt ne Stunde lang mein altes Repository durchsucht bis ich bemerkt habe, dass ich den Stand in dem ich das implementiert hatte, gar nicht mehr habe (nicht haben darf). Ich habe jetzt ein Ticket bei Fast-Report gemacht, weil es mich selbst interessieren würde wie das ging....
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#10

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

  Alt 25. Jan 2016, 21:56
Ich habe jetzt ein Ticket bei Fast-Report gemacht, weil es mich selbst interessieren würde wie das ging....
Warum denn nun dies? Alles was Du zur Lösung des Problems brauchst, wurde Dir hier doch mehr als einmal dargelegt.
Verstehe nun wirklich nicht was daran so schwer sein soll. Mal als Schnellschuss:

- frxReport-Komponente auf die Form gelegt
- frxPDF-Export-Komponente auf die Form gelegt und mit dem Report verknüpfen
- UIB Dataset für Masterdaten und UIB Dataset für Detaildaten auf die Form gelegt und mit den entsprechenden Query versehen; beim Masterdataset als Parameter die Liste mit den AdressIDs vorsehen und beim Detaildataset nur einen Parameter für die jeweils aktuelle AdressID vom MasterDataset
- für jedes UIB Dataset noch ein frxDataSet auf die Form gelegt und mit den UIB-Dataset verknüpfen
- beim UIB-Masterdataset noch den AfterScroll-Event abgreifen und dort das UIB-DetailDataset schließen, vom MasterDataset die aktuelle AdressID auslesen und dem vorher in der Detail-Query erstelltem Parameter zuweisen. DetailDataset wieder öffnen
- Im Report selber dann ein MasterDataBand auf den Report legen und das frxMasterDataset zuweisen; ein DetailBand darunter legen und ihm das frxDetailDataset
- beim MasterDataband die Eigenschaft für "StartNewPage" auf true setzen

Это все.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz