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

Pipeline is null at run time

edited May 2010 in Server
Thank you for your guidance on my previous question. I know have a working
Web Tier.

I have a partially working rbServer file. Using the ThinClient or the
WebTier I can see my report on the explorer. When I preview it, it shows
the header text l but no data on the detail band. Its pipeline is set to
nil. The query has a top 10 from a table and I am able to preview the report
fine at design-time.

I have 3 forms as:

rbMain - has: the TrsServe

the rsServer1.Active := True; on its create



fRpt1 - has: the ppReport

the TrsReportCatalog.RegisterReport on initialization.

The ppReport.Datapipeline is DM->ppDBPipeline1.

uses rsReportCatalog, dmMain;



dmMain - has: ADOConnection1, ADOQuery1, DataSource1, ppDBPipeline1 and
TrsReportTemplateVolume

uses daADO;

On TrsReportTemplateVolume the Name has been change to
match the report registration. Also its databaseSettings is set to
ppDBPipeline1.

Any idea of what I am doing wrong? Also which Volume should I be using?

Thanks in advance

Comments

  • edited May 2010

    I recommend reading the RB Server Developers Guide and working thru the
    tutorials - there is one for form based reports. Special considerations must
    be made to accommodate a multi-threaded server environment. Demos and
    completed tutorials are installed with the product.

    You cannot use a global datamodule for a server. That is not thread-safe.

    Create a separate datamodule or form (you can use either) for each report.
    Each datamodule/form should contain the Report and a complete set of data
    access components including the connection component: ADOConnection,
    ADOQuery, DataSource, DBPipeline.

    With the above setup, each datamodule/form is now a stand alone thread-safe
    container for the report. A separate instance can be created for each report
    request. Multiple reports can run at the same time, each with their
    ADOConnection and query, etc.

    From your description you do not need daAO or ReportTemplateVolume. You only
    need to include daADO when you using the report designer's Data Workspace to
    build queries. You only use ReportTemplateVolume when storing reports to an
    .rtm file or database blob.

    All of the above is convered in the RB Server Developers Guide.


    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com



    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited May 2010
    Thanks for you help, the report worked after removing the daAO and the
    ReportTemplateVolume.



    To summarize: Every report included in the rbServer will need a datamodule
    and a form. The datamodule is created by the Application.CreateForm() on
    source file while the form that contains the report is not.



    It would be nice if the tutorial would include an ADO multi-report inFile
    example. Right now the information is spread over a few examples. It is hard
    to determined which pieces go together even though the actual method is so
    simple.
  • edited May 2010

    No that is not correct. I never said to create a form AND a datamodule for
    each report. None of the demos show that, because that is not valid.

    You need a single container. The container can be a form OR a datamodule.

    Each container should contain the Report and a complete set of data
    access components including the connection component: ADOConnection,
    ADOQuery, DataSource, DBPipeline.




    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com



    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
This discussion has been closed.