Custom Report Explorer.
Hello,
I have created a custom report explorer which sets up the ppdesigner
component and uses the onCustomOpenDoc and OnCustomsaveDoc to load/save
the reports. This works well but I have a problem with importing saved
datamodules into reports. I have provided a custom
TppCustomTemplateDialog which allows me to choose the datamodule I
would like to use. But then I get an error because the underlying code
cannot find the chosen template (stack trace below).
I am trying to remove the requirement of the items pipeline. I find
it is too slow. I use reportbuilder on a three tier app (using
clientdatasets) and I can't seem to stop it from trying to download all
the report templates on the system just to open one.
Is there an event handler I can use to manually load/save data
modules and code templates? if you can think of another way around this
then i'm open to other ideas.
Regards,
Will.
[00BB44C0]ppTmplat.TppTemplate.LoadFromSource (Line 1083,
"ppTmplat.pas" + 15)
[00BB43A8]ppTmplat.TppTemplate.Load (Line 997, "ppTmplat.pas" + 0)
[00DBD64D]daDataManager.TdaDataManager.ImportDataModule (Line 1221,
"daDataManager.pas" + 14)
[00DBDBF8]daDataManager.TdaDataManager.FileMenuItemClickEvent (Line
1403, "daDataManager.pas" + 5)
[00DBE143]daDataManager.TdaDataFileMenu.ehItem_Click (Line 1678,
"daDataManager.pas" + 2)
[00AE21AE]ppTB2Item.TppTBCustomItem.Click (Line 1469, "ppTB2Item.pas" +
22)
[00AE209F]ppTB2Item.TppTBCustomItem.ClickWndProc (Line 1419,
"ppTB2Item.pas" + 27)
[0043A7F0]Classes.StdWndProc
[004CE25C]Forms.TApplication.ProcessMessage
[004CE296]Forms.TApplication.HandleMessage
[004CA73F]Forms.TCustomForm.ShowModal
[004C7958]Forms.TCustomForm.SetPopupParent
[00B3B9A3]ppDsIntf.TppComponentDesigner.ShowModal (Line 620,
"ppDsIntf.pas" + 10)
This discussion has been closed.
Comments
Nico,
I am aware of the feature, However I can't seem to get it to work
with clientdatasets. The master detail links will either fetch all the
possible detail records or will fetch the items each time the master
recordset is scrolled. The former is just as bad as using the original
method and the latter can be worse if a lot of scrolling is done. in
any case I am not using the built in report explorer as i needed to add
read only reports functionality.
Is there another way?
Regards,
Will.
For RB 10, we added a new feature to the ReportExplorer removing the need to
access the Template field of the Items dataset every time it needed to be
accessed. This drastically increased the speed and efficiency of the
ReportExplorer.
The Report Explorer demos were converted to use this new technique which
involves creating two separate item pipelines (ItemPipeline and
ItemTemplatePipeline). The old method was of course retained for backward
compatibility. Are you by chance using a single Items pipeline in your
application? If so, take a look at the current end-user demos on how you
can update to increase the speed.
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Are you using a method similar to the example located in the \Demos\4.
EndUser Databases\InterBase\2. dbExpress\.. directory? This shows how you
might set up a end-user solution using ClientDatasets. I believe we have
numerous other customers using this method without issue.
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
This demo displays exactly what I'm trying to avoid. To prove my
theory add a memo to the main form of the project and then add
BeforeOpen and BeforeClose event handlers to tblItemUpdate. For each of
these handlers add a line to the memo to indicate that the dataset is
being opened or closed.
When the explorer is started you will see the dataset opening and
closing unnecessarily, no report has been requested yet. When a new
report is saved there is excessive opening and closing, same when
opening reports.
This is a real pain for three tier apps because the network round
trips make the whole thing crawl.
They must be doing something different. Maybe they have the luxury of
a network with low latency.
Regards,
Will.