There were no major printing issues in the transistions from RB 4 to RB6. As a test try commenting out your event handlers and see if that makes a difference. Are you able to tell the difference in printing speeds when printing a very simple report (i.e. a report on a form with maybe a lable in it). The current version of ReportBuilder is 7.03. My suggestion would be to upgrade to RB 7.03 and see if that helps the printing speed.
I have 2 programs, one compiled with the version 4.05 and another with the version 6.2. With the version 4.05 if I change the number of copies is very fast, but with the 6.2 the velocity is more slowsly. I continue working with the 4.05, thanks.
I have enormous problems with slow loading/running reports. I have a report (a single-page invoice) that has five pipelines. (Delphi 6 SP2, RB Ent 7.03, IBO, Firebird). The five pipelines each have a single (integer value) autosearch field. When I run the five queries one at a time in another utility (IB_SQL), the longest one takes about 3 seconds to return the three records (invoice items). The shortest one takes about a second. This suggests that [missing] indexes are not the problem, and of course I have created indexes as appropriate.
But when I run the report, it takes 27 seconds for the single page to appear in the preview screen. It is 27 seconds even if I immediately re-click the Preview button (so it shouldn't be a metadata-search issue, which is another matter which is also a real time problem).
Is there any way to profile the process to see where the big delay is coming from?
I am concerned about memory leaking every time I run a report (End User environment):
I have set showMessage dialogs immediately before and after the "Print_Invoice" procedure, as an example. It happens with every report I run:
procedure Print_Invoice(TransactionID:integer; begin with rpReport do begin Template.DatabaseSettings.Name := 'Invoice_1'; Template.LoadFromDatabase;
for i:= 0 to AutoSearchFieldCount - 1 do begin if AutoSearchFields[i].FieldName = 'TRANSACTION_ID' then AutoSearchFields[i].SearchExpression:=IntToStr(TransactionID) end;
Immediately before the procedure is called, the MemUsage is shown as 14480 KB. Immediately after I close the Preview window and the procedure has ended, the MemUsage is shown as 17372.
MemUsage goes goes, and stays higher, every time I run a report. Soon I have to restart the app to release the memory.
Is there a way to figure out where the memory is going, inside Print_Invoice?
I have a simlar problem as Dennis..., except mine takes about 30secs and I have several more pipelines. The queries take 1 - 2 secs run.... any ideas why it could be happening?
By default, the report is not freed when the preview form is closed. If you would like to do so, you will first need to create the report dynamically. Then freeing the report object from the preview can be done using a TTimer (to allow enough time for the preview methods to execute before letting the report go. Below is a quick example of how this could be done.
Comments
There were no major printing issues in the transistions from RB 4 to RB6.
As a test try commenting out your event handlers and see if that makes a
difference. Are you able to tell the difference in printing speeds when
printing a very simple report (i.e. a report on a form with maybe a lable in
it). The current version of ReportBuilder is 7.03. My suggestion would be
to upgrade to RB 7.03 and see if that helps the printing speed.
--
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
version 6.2. With the version 4.05 if I change the number of copies is very
fast, but with the 6.2 the velocity is more slowsly. I continue working with
the 4.05, thanks.
Sorry, I not speak english very good.
As a test, try setting the Report.PrinterSetup.DelegateCopies to True in RB
6.02 and see if that helps.
--
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Thanks.
I have enormous problems with slow loading/running reports. I have a
report (a single-page invoice) that has five pipelines. (Delphi 6 SP2,
RB Ent 7.03, IBO, Firebird). The five pipelines each have a single
(integer value) autosearch field. When I run the five queries one at a
time in another utility (IB_SQL), the longest one takes about 3 seconds
to return the three records (invoice items). The shortest one takes
about a second. This suggests that [missing] indexes are not the
problem, and of course I have created indexes as appropriate.
But when I run the report, it takes 27 seconds for the single page to
appear in the preview screen. It is 27 seconds even if I immediately
re-click the Preview button (so it shouldn't be a metadata-search issue,
which is another matter which is also a real time problem).
Is there any way to profile the process to see where the big delay is
coming from?
Dennis McFall
environment):
I have set showMessage dialogs immediately before and after the
"Print_Invoice" procedure, as an example. It happens with every report I
run:
procedure Print_Invoice(TransactionID:integer;
begin
with rpReport do begin
Template.DatabaseSettings.Name := 'Invoice_1';
Template.LoadFromDatabase;
for i:= 0 to AutoSearchFieldCount - 1 do begin
if AutoSearchFields[i].FieldName = 'TRANSACTION_ID'
then
AutoSearchFields[i].SearchExpression:=IntToStr(TransactionID)
end;
DeviceType:=dtScreen;
ShowAutoSearchDialog:=false;
ShowPrintDialog:=true;
Print;
end;
Immediately before the procedure is called, the MemUsage is shown as
14480 KB. Immediately after I close the Preview window and the
procedure has ended, the MemUsage is shown as 17372.
MemUsage goes goes, and stays higher, every time I run a report. Soon I
have to restart the app to release the memory.
Is there a way to figure out where the memory is going, inside
Print_Invoice?
dm
Thanks for the feedback. I will research this and get back to you as soon
as possible.
--
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
have several more pipelines. The queries take 1 - 2 secs run....
any ideas why it could be happening?
By default, the report is not freed when the preview form is closed. If you
would like to do so, you will first need to create the report dynamically.
Then freeing the report object from the preview can be done using a TTimer
(to allow enough time for the preview methods to execute before letting the
report go. Below is a quick example of how this could be done.
http://www.digital-metaphors.com/tips/FreeReport.zip
As far as time of execution, the addition of AutoSearch values did not
affect the processing time or memory usage significantly in my tests.
--
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com