Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Custom Report Explorer.

edited November 2010 in General

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)

Comments

  • edited November 2010
    Nico Cizik (Digital Metaphors) wrote:


    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.
  • edited November 2010
    Hi 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
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited November 2010
    Hi Will,

    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
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited November 2010
    Nico Cizik (Digital Metaphors) wrote:



    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.
This discussion has been closed.