FastReport - mehrere DS in einer PDF-Datei-
Guten Tag Delphianer,
ich möchte mit Fastreport folgendes lösen, weiß aber nicht wie. 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. Wie kann man das im FastReport realisieren?? Hat dazu vielleicht jemand ein Workaround? Ich habe den FastReport 4 und zwar die kommerzielle Version. MfG HPB |
AW: FastReport - mehrere DS in einer PDF-Datei-
Moin...:P
Zitat:
Zitat:
|
AW: FastReport - mehrere DS in einer PDF-Datei-
Vielen Dank für Deine Antwort haentschman,
es kann kein Seitenvorschub erfolgen, da es eben auch 32 Datensätze gibt. Oder übersehe ich da etwas?? Wenn ja was?? Vielleicht sollte ich erwähnen, das es um eine Mitgliederverwaltung geht. Für jedes Mitglied gibt es ja einen Datensatz. Die Daten für eine Seite im Report benötigt auch eine Seite. Wie sollen nun z. B. die 32 Datensätze mit einem Seitenvorschub gedruckt werden?? Der Einzeldruck ist auf jeden Fall erfolgreich und wenn ohne Vorschau gedruckt wird, werden die einzelnen Seiten ja auch zügig gedruckt. Das Problem ist doch folgendes: Die 32 Seiten sollen in einer Datei als PDF ausgegeben werden. Das ist was ich wissen möchte. Mit Gruß HPB |
AW: FastReport - mehrere DS in einer PDF-Datei-
:P
Mir ging es bei der Frage um die Tatsache ob die 32 Datensätze in EINEM Report gedruckt werden oder der Report 32x NEU mit einem Datensatz generiert wird. Ich vermute das der Report jedesmal neu generiert wird. :wink: Wenn die 32 Datensätze, incl. Detaildaten, EINEM Report übergeben würden, könntest du im Report beim Wechsel des Masterdatensatzes ein "Neue Seite" einfügen. Damit würde immer eine neue Seite angefangen... auch wenn die Daten mal über eine Seite lang sein sollten. :thumb: Zu deiner Frage: Wenn du 32x generierst mußt du deinen Report ändern da es so nie direkt in ein PDF gedruckt wird. |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
Wenn Code benötigt wird, der sollte hier im Forum schon existieren, wenn nicht, dann kann ich den geren nochmal zusammen suchen. Einfacher geht es auf jeden Fall mit einem MasterBand |
AW: FastReport - mehrere DS in einer PDF-Datei-
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag Lemmy,
Dein Vorschlag scheint der richtige Weg zu sein. Ich möchte Dich bitten den Code zusammen zu suchen, damit ich nachvollziehen kann, wie es gemacht werden muss. Ich kann nicht beurteilen ob das mit dem Masterband erschlagen werden kann. Der Seitenaufbau ist folgender: a) GroupHeader (Daten aus der Haupt-Tabelle, füllt fast die ganze Seite aus) b) MasterData1 (Daten aus einer zweiten Tabelle) c) MasterData2 (Daten aus einer dritten Tabelle) Ich habe mal den Report als Anlage beigefügt. Eigentlich sollen die erzeugten Drucke in einer einzigen PDF-Datei zusammengefügt werden. Mit Gruß HPB |
AW: FastReport - mehrere DS in einer PDF-Datei-
Moin...:P
Zitat:
|
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
Der Code dafür ist einfach (Stammt noch aus der Zeit von FR3):
Delphi-Quellcode:
So weit klar? und frMain dann eben in ein PDF ausgeben....
frPart.LoadFromFile(<>);
frPart.PrepareReport(true); frMain.Pages.AddPrepared(frPart.Page) Weiterhin bin ich deiner Meinung (habe es ja oben geschrieben): Es geht hier um ein Template, das n mal mit Master-Detail Daten gefüllt werden muss, da FR 6 Detailstufen direkt und noch weitere Ebenen über Subreports unterstützt, kann ich aktuell nicht nachvollziehen, warum dieses Design damit nicht möglich sein soll... |
AW: FastReport - mehrere DS in einer PDF-Datei-
:P
Zitat:
Zitat:
Zitat:
Viele Wege führen nach Rom. Friede sei mit uns... :thumb: |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
|
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
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 |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
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); |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
Delphi-Quellcode:
Dafür aber diese:
frMain.Pages.AddPrepared(frPart.Page);
Delphi-Quellcode:
Ob dies das Richtige ist, werde ich nachher test.
frxrprtPart.LoadFromFile(PfadReport + '\' + 'bruder-daten.fr3');
frxrprtPart.PrepareReport(True); frxReport1.Page.AssignAll(frxrprtPart.Page); Gruß und eine nette Woche HPB |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
Ich finde einfach keinen Weg.
Delphi-Quellcode:
und dies
frxReport1.Page.AssignAll(frxrprtPart.Page)
Delphi-Quellcode:
geht mit meinem FastReport 4.0 nicht. FastReport bietet auch keine andere Optionen
frMain.Pages.AddPrepared(frPart.Page);
wie z. B. "Page.Add" an. Wie kann man das bloß lösen? So langsam verzweifle ich. Mit gruß HPB |
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) |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
es sollen alle n-Datensätze in einer PDF-Datei zusammengefast werden. Also nicht n-Einzelseiten sondern eine eizige Seite. Mit Gruß HPB |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
Zitat:
|
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. |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
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 |
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:
) gleichermassen umgehen.
TfrxUserDataSet
|
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
Hast Du nicht mal ein WorkAround?? Mit Gruß HPB |
AW: FastReport - mehrere DS in einer PDF-Datei-
wie wäre es z.B. so:
Delphi-Quellcode:
Und die adridliste bastelst Du Dir hier zusammen:
ibqryBruderDaten.SQL.Text=
'select * '+ 'from ADRESSEN join logenaemter on (logenaemter.FKADRESSID = adressen.Adressid) '+ 'where adressen.ADRESSID in ('+ ADRIDliste + ')';
Delphi-Quellcode:
Gut schön (und gut) ist anders, aber nur mal so als Idee.
if VstAdressen.CheckState[pNode] = csCheckedNormal then
begin Inc(i); pDaten := TOAdressVSTDaten(VstAdressen.GetNodeData(pNode)^); pAdressID := pDaten.FAdressID; adridliste:=adridlist+','''+pAdressID+'''' Gruß K-H |
AW: FastReport - mehrere DS in einer PDF-Datei-
erstelle Dir zwei Datasets (Master und Detail) mit allen Daten die gedruckt werden sollen:
z.B
Code:
Stelle eine Master-Detail Beziehung zwischen den beiden Datasets her
Master:
select * from ADRESSEN where (adressen.ADRESSID in (1, 2, 4, 5, 9, 17)) order by adressen.Adressid) Detail: select * from Ehrungen where (Ehrungen.ADRESSID in (1, 2, 4, 5, 9, 17)) order by Ehrungen.Adressid) Dann in deinem Report ein MasterBand mit dem Masterdataset verbinden und ein DetailBand mit dem Detaildataset verbinden. Eigenschaft "StartNewPage" des Maserbandes auf true. So sollte es funktionieren |
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
|
AW: FastReport - mehrere DS in einer PDF-Datei-
Zitat:
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 Это все. |
AW: FastReport - mehrere DS in einer PDF-Datei-
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,
Mea Culpa.... das Hinzufügen ging über die PreviewPages:
Delphi-Quellcode:
Beispiel anbei (Delphi 7 + FR5)
frxReport2.PreviewPages.LoadFromFile('2.fp3');
frxReport2.PrepareReport(true); frxReport1.PreviewPages.AddFrom(frxReport2); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr. |
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