Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Quickreport Vorschau und Druck (https://www.delphipraxis.net/20739-quickreport-vorschau-und-druck.html)

af99 22. Apr 2004 11:59


Quickreport Vorschau und Druck
 
Hallo,

ich habe ein kleines Problem mit dem Quickreport (delphi 6).
Delphi-Quellcode:
procedure TForm8.ChildBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
...

if form1.radiogroup3.ItemIndex = 1 then
begin
form1.tb_rg_nr.Last;
rgnr := strtoint(copy(form1.tb_rg_nr.fieldbyname('rgnr').Asstring,6,4)) + 1;
dummy_rgnr := inttostr(rgnr);
dummy_rgnr2 := copy(form1.tb_rg_nr.fieldbyname('rgnr').Asstring,1,5);
laenge := 4;
laenge := laenge - length (dummy_rgnr);

for t := 1 to laenge do
begin
dummy_rgnr := '0' + dummy_rgnr;
end;

qrlabel54.Caption := copy(form1.tb_rg_nr.fieldbyname('rgnr').Asstring,1,5) + 
dummy_rgnr;
form1.tb_rg_nr.Edit;
form1.tb_rg_nr.Append;
form1.tb_rg_nr.fieldbyname('rgnr').Asstring := dummy_rgnr2 + dummy_rgnr;

end else
begin
qrlabel54.Caption := 'keine !!!';
end;
....
vergebe hiermit eine fortlaufende Rechnungsnummer auf jeder Seite der Reports.
Rufe den Report mit Preview auf. Rechnungsnummern sind auch alle korrekt.
Wenn ich nun den Report aus der Vorschau drucke werden die Rechnungsnummern nochmal vergeben. Also in Preview stehen die Nummern 1,2,3,4,5, auf dem Ausdruck aber die Nummern 6,7,8,9,10.
Verstehe ich nicht.

kann mir jemand helfen ?

Gruss
Andreas

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

Sharky 22. Apr 2004 12:07

Re: Quickreport Vorschau und Druck
 
Hai af99,

ersteinmal: "Herlich willkommen in der Delphi-PRAXIS".

wenn ich das richtig sehe speicherst Du ja die Rechnungsnummern. Da die ganze Prozedure bei drucken noch einmal durchlaufen wird werden jetzt natürlich die nächsten Rechnungsnummern verwendet.

af99 22. Apr 2004 12:19

Re: Quickreport Vorschau und Druck
 
hi Sharky,

jep das wusste ich auch !!! (habe ich ja an meinen ausdrucken gesehen).
Ich frage mich nur wieso die Prozedur nochmal durchlaufen wird. Ist doch schon alles beim Preview passiert. Es muss doch eigentlich nur Das Ergebnis als "screenshot" ausgedruckt werden.

Kann ich irgendwie den nochmaligen Durchlauf verhindern ?????

Gruss
Andreas

af99 26. Apr 2004 14:32

Re: Quickreport Vorschau und Druck
 
Hi,

hat keiner eine Idee.

Gruss
Andreas

alcaeus 26. Apr 2004 14:35

Re: Quickreport Vorschau und Druck
 
Setze eine Boolean-Variable am Ende der Schleife. Falls die Boolean-Variable schon gesetzt ist, darfst du die Schleife nicht mehr durchlaufen. Nach dem drucken muss die Boolean-Variable zurückgesetzt werden.

af99 26. Apr 2004 14:57

Re: Quickreport Vorschau und Druck
 
Hi,

habe ich gemacht (abwechselnd bei allen Ereignissen des QR). Entweder erhalte ich nur noch eine Nummer, Keine Nummer oder wie oben beschrieben 2 x fortlaufende Nummern.

Gruss
Andreas

LKutscher 27. Apr 2004 09:28

Re: Quickreport Vorschau und Druck
 
Da das BeforePrint von QR vor jedem Neuaufbau des Berichtes aufgerufen wird (also vor jedem Preview und jedem Print), solltest du das Füllen der Label-Felder an anderer Stelle durchführen - z.B. dort, wo du die Preview aufrufst:

Delphi-Quellcode:

var
  RgNrText: string

procedure TForm8.ShowReport;
begin
  [...]
  form1.tb_rg_nr.Last;
  rgnr := strtoint(copy(form1.tb_rg_nr.fieldbyname('rgnr').Asstring,6,4)) + 1;
  dummy_rgnr := formatFloat('0000', rgNr) //hat denselben Effekt, wie deine Schleife
  dummy_rgnr2 := copy(form1.tb_rg_nr.fieldbyname('rgnr').Asstring,1,5);
  RgNrText := dummy_rgnr2 + dummy_rgnr;
//form1.tb_rg_nr.Edit; (vor dem Append überflüssig)
  form1.tb_rg_nr.Append;
  form1.tb_rg_nr.fieldbyname('rgnr').Asstring := RgNrText;

  QuickReport1.Preview;
end;

procedure TForm8.ChildBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  if form1.radiogroup3.ItemIndex = 1 then
  begin
   qrlabel54.Caption := RgNrText;
   [...] (eventuell zuweisung von RgNrText zu weitern Labels ...)
  end else
    qrlabel54.Caption := 'keine !!!';
RgNrText kann entweder ein Formularfeld, eine Unit-Variable (Deklaration im Implementation-Abschnitt) oder eine Globale Variable (Deklaration im Interfaces-Abschnitt) sein - je nachdem, von wo aus du darauf zugreifst.
Die Methode ShowReport kannst du auf dem QR-Formular als public Methode deklarieren und dann (statt Form8.QuickReport.Preview)
als Form8.ShowReport aufrufen.

af99 27. Apr 2004 10:33

Re: Quickreport Vorschau und Druck
 
Hi,

ersteimal vielen Dank.

habe ich umgesetzt und dann leider festellen müssen das ich immer nur eine RGNR habe(ist ja auch logisch da Sie auch nur einmal erzeugt wird).

Mein Report besteht aber aus 1-n Rechnungen, also auch aus 1-n Seiten. D.H. ich brauche natürlich auch n Rechnungsnummern.

Gruss
Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 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