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

DataPipeLine Adding Fields

edited September 2002 in General
Hello All:

The primary support function our software does is to supply custom
ReportBuilder reports to our customers. So, report maintenance is important.
We use Delphi 5 and RB 6.02.

Our database is still evolving and we are adding fields ( especially
calculated fields ) on a regular basis.

Typically we have 2 or 3 DatapipeLines on each report. 2 of the
DataPipelines are experiencing field growth.

We will clone a new report off of an existing report. If new fields have
been added to the database, they do not show up in the cloned reports
datapipeline.

We use persistent fields in the datapipeline. We end up having to
manually add these fields into the dataPipeLine. This is very awkward and
takes time. Our people who build these reports are not always that
technical.

If we delete the pipeline and then replace it, the DBText components in the
report get their datapipeline properties cleared. Since an average report
has 90 DBText components, this becomes a major chore.

Any suggestions on how we can address this issue ???

Thank you.


Neil Huhta
Profit Monster Data Systems LLC

Comments

  • edited September 2002
    AutoCreateFields should recognize new fields present in a TTable or TQuery
    component, so we'll need to check into that.

    In the interim, I would copy the CreateDefaultFields method in ppDBPipe.pas
    and create a new function which automatically adds new fields to the pipe...

    --
    Cheers,

    Tom Ollar
    Digital Metaphors Corporation
  • edited September 2002
    Tom:

    Thank you for your quick reply. You guys are rock solid.

    The Pipeline is a TBDEPipeline attached to a DBISAM table. Should we be
    using a plain DBPipeline ??? The fields in question are calculated fields -
    would that make a difference. Also, at design time we have a non-existent
    path in our TDatabase component so DM doesnt leave tables open at design
    time ( we use DBISAM ).

    When you say create a new function which adds fields to the pipeline,
    specifically how am I doing this ???

    Am I creating some kind of design time add-on to the BDEPipeline ???

    Am I subclassing the BDEPipeline ???

    Am I modifying the source for the TBDEPipeline ???

    I have written plenty of components including a subclass of the
    TppDBText, but have no experience extending the Delphi IDE.

    Any further guidance would be greatly appreciated. Thank you for your
    help.

    Neil Huhta
    Profit Monster Data Systems
  • edited September 2002
    I assume you would be creating a new global function in your app that you
    could call from the FormCreate for forms containing the data pipelines:

    procedure TForm1.FormCreate(Sender: TObject);
    begin

    gAddNewFields(ppBDEPipeline1);
    gAddNewFields(ppBDEPipeline2);
    ...

    end;

    gAddNewFields would be based on the CreateDefaultFields method in
    ppDBPipe.pas and would compare the fields in:

    aDataPipeline.DataSource.DataSet.Fields

    with the fields in the data pipeline:

    aDataPipeline.Fields

    and would add any new fields, using the same field creation technique in
    CreateDefaultFields...

    Also, doesn't matter if you use TppDBPipeline or TppBDEPipeline - for Delphi
    5 and later they are the same thing...

    --
    Cheers,

    Tom Ollar
    Digital Metaphors Corporation
  • edited September 2002
    Tom:

    I have failed to communicate in a major way. I'm talking about working
    in the Delphi IDE. We create/modify the reports for our customers and then
    send these reports out.

    How can we address this within the IDE ???

    Thank you.


    Neil Huhta
This discussion has been closed.