Einzelnen Beitrag anzeigen

HPB

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

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