AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quickreport -> NeedData Problem

Ein Thema von Christian_1980 · begonnen am 23. Okt 2003 · letzter Beitrag vom 23. Okt 2003
Antwort Antwort
Christian_1980

Registriert seit: 15. Aug 2003
50 Beiträge
 
Delphi 7 Professional
 
#1

Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 09:49
Huhu @ all


Ich weiss: ihr seid alle clevere Jungs und könnt mir bestimmt helfen

Folgendes Problem: Ich habe einen Quickreport, der aus einer Liste von Objekten bestimmte Objekteigenschaften ausgeben soll. Dazu bediene ich mich im NeedData-Aufruf des Quickreports folgenden Codes:

Delphi-Quellcode:
procedure TqrBeipiel.qrBeispielNeedData(Sender: TObject;
  var MoreData: Boolean);

var JumpNextDataSet: Boolean;

begin

JumpNextDataSet := TRUE;

if (Counter < ObjektListe.Count) then
 begin
   While JumpNextDataSet do
     begin
         if (ObjektListe[Counter].gueltig)
         begin
           JumpNextDataSet := FALSE;
           MoreData := TRUE
         end else begin
             Counter := Counter + 1;
             JumpNextDataSet := TRUE;
         end
     end;
  end;
end;
sowie:

Delphi-Quellcode:
procedure TqrBeipiel.QRDesignSummaryBandAfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin

  Counter := Counter + 1;

end;
so *hüstel*, jetzt zum eigentlichen Probelem: Ist das letzte Objekt in der Liste nicht gültig, so überschreitet der Index der Liste das Maximum (... mit anderen worten: der letzte Datensatz wird, sofern er nicht gültig ist ebenfalls übersprungen). Weiss jemand von euch wie ich das ausbügeln kann?

Vielen Dank schonmal,

Christian
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 10:42
Hi,

ich verstehe nicht warum du in SummaryAfterPrint den Counter hochzählst (würde ich nebenbei mit
Inc(nCounter) machen). Needdata wird danach doch nicht wieder aufgerufen. Hast du daran gedacht den Counter im BeforePrint wieder auf 0 zu setzen ?
Wo genau kommt der Abbruch ?

Mfg.

Frank
Frank
  Mit Zitat antworten Zitat
Christian_1980

Registriert seit: 15. Aug 2003
50 Beiträge
 
Delphi 7 Professional
 
#3

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 11:07
Hi Sourcemember !

folgendes: wenn MoreData auf True steht und das DetailBand geschrieben wurde, dann wird der Counter incrementiert. Und: Es wird der nächste Datensatz aus NeedData ermittelt. (Der aktuelle Datensatz besteht im Wert von Counter - wird in BeforePrint mit Ausgabe(Counter) gemacht - das ist auch der Grund, warum Counter nicht wieder auf 0 gesetzt wird).

Ich habe aber bereits eine Möglichkeit gefunden, das ganze zu lösen. Die Lösung empfinde ich jedoch als ziemlich unschön. Der ganze Lösungsweg ist nicht toll. Aber mir fällt keine andere Möglichkeit ein die einzelnen Datensätze zu ermitteln und nicht gültige auszuschließen. Prinzipiell möchte ich also einfach jedes gültige objekt der liste in mein detailband schreiben. Falls jemandem noch eine intelligentere Lösung einfällt wäre ich sehr dankbar, wenn er sie hier posten würde.

Meine Lösung:

Delphi-Quellcode:
if (Counter < ObjektListe.Count) then
 begin
   While JumpNextDataSet do
     begin
         if (ObjektListe[Counter].gueltig) then
         begin
           JumpNextDataSet := FALSE;
           MoreData := True;
         end else begin
           if (Counter = ObjektListe.Count-1) then
             begin
              JumpNextDataSet := FALSE;
              MoreData := False;
              Last := FALSE
             end else begin
              Counter := Counter + 1;
              JumpNextDataSet := TRUE;
             end;
         end
     end;
Danke für Deine Hilfe Sourcemember!
  Mit Zitat antworten Zitat
Christian_1980

Registriert seit: 15. Aug 2003
50 Beiträge
 
Delphi 7 Professional
 
#4

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 11:16
Der Abbruch erfolgt durch MoreData := False
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 12:08
Hi Cristian,

was hältst du davon:

Delphi-Quellcode:
MoreData := Counter < ObjektListe.Count; //sicher stellen das MoreData richtig ist
if MoreData then
begin
   While True do
   begin
      if (ObjektListe[Counter].gueltig) then
         break
      else begin
         if (Counter = ObjektListe.Count) then //sonst kommt der letzte Satz nicht
         begin
            MoreData := False;
            Last := False;
            break; //Edit: hatte ich vergessen
         end else inc(Counter);
      end;
   end;
end;
Mfg.

Frank

P.S. Mit "wo der Abbruch ist ?" meinte ich den Fehler.
Frank
  Mit Zitat antworten Zitat
Christian_1980

Registriert seit: 15. Aug 2003
50 Beiträge
 
Delphi 7 Professional
 
#6

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 12:50
Hi Frank !

Ich danke Dir für Deine Hilfe. Leider gibt es bei Deiner Variante wieder exakt denselben Fehler. Wenn das letzte Objekt ungültig ist, überschreitet der Index der Liste das Maximum.



Sorry,

Christian
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 14:10
Hi Cristian,

hatte noch ein break vergessen (ist jetzt nachgetragen) aber sag mir doch bitte in welcher Quelltextzeile der Fehler kommt. Im NeedData oder später ? Zeig doch mal den gesamten Code.

Mfg.

Frank
Frank
  Mit Zitat antworten Zitat
Christian_1980

Registriert seit: 15. Aug 2003
50 Beiträge
 
Delphi 7 Professional
 
#8

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 15:12
Das Break hat leider auch nix am Fehler geändert.

Er crasht in der Zeile:

      if (ObjektListe[Counter].gueltig) then // <-- index der liste überschreitet max.
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Quickreport -> NeedData Problem

  Alt 23. Okt 2003, 17:30
Verstehe ich nicht !
Welchen Wert hat Counter und ObjectList.Count wenn es crasht ?

Gruß

Frank
Frank
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:43 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