![]() |
Stack Überlauf bei QUick Report
Verwende den Quickreport um Datensätze aus einer Tabelle herauszunehmen und dann aufzulisten.
Nun sind das zum Teil einige Datensätze - sagen wir mal 400 á 10 Spalten. Da ist dann der Rechner irgendwie überlastet und geht in die Knie, nach so einer halben Minute kommt dann die Fehlermeldung von wegen Stack Überlauf... Wie kann ich das verhindern? |
Re: Stack Überlauf bei QUick Report
Also 400 Datensätze sollten eigentlich noch kein Problem darstellen. Vermutlich ist das Problem selbst gestrickt. Geh doch mal mit dem Debugger durchs Programm und schau, wo er so lange braucht.
|
Re: Stack Überlauf bei QUick Report
Wie heißt die Fehlermeldung genau(Nummer)?
Zum testen erhöhe mal unter Projektoptionen-Linker die Maximale Stackgröße. |
Re: Stack Überlauf bei QUick Report
die Fehlermeldung besitzt keine Nummer.
Heisst nur exception der Klasse EStackOverflow. Bis zu was für einem max. Wert soll/kann ich die Stackgröße erhöhen? Wüßte nun nicht wo der Fehler herrührt. Ausschnitt aus Quellcode:
Delphi-Quellcode:
Labelschreiben //beschreibt ein paar Labels im Kopf des QRs
Temp_bereich //in einem array[5] wird der größte/kleinste Wert der Datensätze festgehalten, so dass der kleinste/größte Wert aller Datensätze übrig bleibt - dieser wird dann in einem label am schluß ausgegeben QuickRepTab.Prepare; // Report wird initialisiert PageCount := QuickRepTab.QRPrinter.PageCount; // Pagecount ist eine private Variable im Formular QuickRepTab.Preview; |
Re: Stack Überlauf bei QUick Report
Moin moin
Ich hatte da mal ein ähnliches Problem. Ich hatte glaub ich ForceNewPage und ReprintOnNew beide auf true...irgend wie sowas (is schon was her) aber schau dich da doch mal um.. schönen Gruß Sam :wink: |
Re: Stack Überlauf bei QUick Report
Zitat:
Delphi-Quellcode:
Wann und wo gibst du das Printer-Object wieder frei?
Labelschreiben //beschreibt ein paar Labels im Kopf des QRs
Temp_bereich //in einem array[5] wird der größte/kleinste Wert der Datensätze festgehalten, so dass der kleinste/größte Wert aller Datensätze übrig bleibt - dieser wird dann in einem label am schluß ausgegeben QuickRepTab.Prepare; // Report wird initialisiert PageCount := QuickRepTab.QRPrinter.PageCount; // Pagecount ist eine private Variable im Formular QuickRepTab.Preview; Noch eine Möglichkeit wäre, dass du einen Endlosreport gebaut hast. Also der Stack, egal wie groß nie reichen wird. |
Re: Stack Überlauf bei QUick Report
es ist ja so dass der QR bei weniger Datenmengen funktioniert.
Und am freigeben kann's imo doch auch nicht liegen, da der QR zuerst angezeigt werden sollte bevor man's freigeben kann. :gruebel: Naja, schau mir mal die einzlnen Objects im QR an, aber das meiste ist auf false :| Update: Also, es hängt definitiv mit dem erzeugen einer weiteren Seite zusammen. Sobald der QR eine weitere Seite erzeugen muß gibt's einen Stack Überlauf. Aber schon komisch, es hatte damals, als ich testweise mit ein paar wenigen Werten und viel Lücke eine weitere Seite erzwungen habe funktioniert. Nun scheint es selbst da nicht mehr zu gehen :gruebel: Also das Übel ist das QRSubDetail, welches alle Datensätze der Tabelle beinhaltet. Das BrintBefore und if empty ist false - das onupdate oder was hier geschrieben wurde find ich nirgendwo. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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