Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Fastreport 4 Beispiel für eine Rechnung das Prinzip n. v

  Alt 18. Jun 2008, 09:28
Ich habe die Funktion mal umgeschrieben, so dass sie mit nur einem Open auskommt (durch ersetzen der where-Klausel):
Delphi-Quellcode:
procedure TfrmBelegKopf.PrintSelectedBeleg;
var
   i : integer;
   BelegId : extended;
   BelegIds : array of extended;
   BelegIDString : string;
begin
   for i := 0 to cxGridBelegeDBTableView1.Controller.SelectedRowCount -1 do
   begin
      if cxGridBelegeDBTableView1.Controller.SelectedRows[i] is TcxGridDataRow then
      begin
         BelegId := cxGridBelegeDBTableView1.Controller.SelectedRows[i].Values[0];
         SetLength(BelegIds, Length(BelegIds)+1);
         BelegIds[High(BelegIds)] := BelegId;
      end;
   end;
   if Length(BelegIds) > 0 then
   begin
      // IN(...) String zusammensetzen
      for i := 0 to High(BelegIds) do
      begin
         BelegIDString := BelegIDString+IntToStr(trunc(BelegIDs[i]))+',';
      end;
      // letztes Komma abschneiden
      BelegIDString := copy(BelegIDString,1,length(BelegIDString)-1);

      with TPrintModule.Create(Application) do
      begin
         // Where ersetzen
         qryBKopf.SQL.Strings[qryBKopf.SQL.Count-1] := 'where bkopf.id in ('+BelegIDString+')';
         qryBKopf.Open;
         qryBPos.Open;
         qrySummen.Open;
         if Length(BelegIds) > 1 then
            frxReport1.ReportOptions.Name :=
               Format('%s - %s',['Sammeldruck', qryBelegart.FieldByName('Beleg_text').AsString])
         else
            frxReport1.ReportOptions.Name :=
               Format('%1:s %0:s',[qryBKopf.FieldByName('Bnr').AsString, qryBelegart.FieldByName('Beleg_text').AsString]);

         frxReport1.PrepareReport(False);
         qryBKopf.Close;
         frxReport1.ShowPreparedReport;
         Free;
      end;
   end;
end;
Die Rechnungen werden alle gedruckt wie im Einzeldruck. Nur die #Page Variablen stimmen natürlich nicht mehr, deshalb drucke ich die ja (wie im letzen Psoting) normalerweise einzen. Dann brauche ich mir die Seiten nicht selber zu numerieren.
Kopf und Fussdaten sind die richtigen, da wird nichts vermischt. Wie hast Du denn Deine Datasets verbunden? Ich habe eine ganz normale Verbindung über DataSource der Kopfdaten in die DataSourcen der Positions- und Summendaten gemacht. Ich verwende hier keine speziellen TFrx...DataSet Komponenten. Vielleicht steckt ja auch da der Fehler drin.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat