Home Datapipelines
New Blog Post: Email: Multi-Service

TdaQueryDataView.GetDataPipeline returns TppDBPipeline but TppJITPipeline descends from TppDatapipel

edited August 2016 in Datapipelines

We have had an intermittent issue in Reportbuilder 15, that has
worsened in Reportbuilder 17.02.

We are getting the error raised "TdaQueryDataView.GetDataPipeline:
DataPipelines[0] must be of type TppDBPipeline." in
TdaQueryDataView.GetDataPipeline, because we have a

It has worsened because of the line added to procedure
TdaQueryDataView.CreateAutoSearchFields(aReport: TppReport) (not
tthere in 15):

We thus can no longer load or create any reports using our JITs that
have Autosearch criteria, ie have something like this in creating
their Query SQL:

HOWEVER as noted above the problem defibnitely pre-existed and would
come up relatively frequently previously when editing reports... no
call stack now to say whhat caused it, but the same error from
TdaQueryDataView.GetDataPipeline was th culprit and it seems that
maybe it should return a TppDataPipeline instead of a TppDBpipeline?
Or is our use of a TppJitPipeline descendant all wrong?

This code used to work without issue back inthe RB10 days... I
think!...Trawling back through our SVN code I see that the
GetDataPipeline call didn't used to exist and instead to get a
datapipeline's name it would call
Looking for this function it used to return TppDataPipeline (NOT

I've patched daQueryDataView.pas, to make it retuen a tppFataPipeline
again, and one other change was needed in
TdaQueryDataView.SetMasterDataView to get it to compile:
... seems to work, but not confident in my tinkering here!!!!

Thanks, Chris

RB Enterprize 17.02


  • edited August 2016
    Hi Chris,

    I recommend descending from TdaCustomDataView, the anscestor of
    TdaQueryDataView. TdaCustomDataView has no concept of TdaSQL, TppDBPipeline,
    or TDataSet.

    TdaQueryDataView is an abstract ancestor class for SQL based TDataSet
    descendants. DADE Plug-ins descend from TdaQueryDataView and add
    functionality to manage specific data access component sets such as FireDAC,
    ADO, IBExpress, dbExpress, etc. An example of a descendant is
    TdaADOQueryDataView which manages a TADOQuery component. (See the RBuilder
    Help topic for TdaQueryDataView).

    TppDBPipeline -> TDataSet (such as TFDQuery, TADOQuery, etc)

    Best regards,

    Nard Moseley
    Digital Metaphors

    Best regards,

    Nard Moseley
    Digital Metaphors
  • edited August 2016
    Thanks, but unfortunately we would need effectively reimplement a lot
    or just about all of whats in TdaQuerydataview, as we use a lot of it
    SQL functionality, but we augment extra columns in the tables with
    calculated fields we extract from xml BLOBs.

    I guess I could just create a class and unit copy of TdaQueryDataView,
    say TKineticQuerydataview, and modify its getpipeline method to return
    a TppDataPipeline where needed. At least this would be better moving
    forward with reportbuilder versions to ensure we don't forget to patch
    the TdaQueryDataview...


    On Wed, 3 Aug 2016 14:55:30 -0500, "Nard Moseley \(Digital
  • edited August 2016
    Hi Chris,

    Thanks for providing the details about what you are trying to accomplish.

    Once solution might be to use the DBPipeline and implement the
    DataSet.OnCalcFields event to extract the XML Blobs and populate the calc
    field values.

    For a future release we're considering adding a DBPipeline.OnGetFieldValue

    Best regards,

    Nard Moseley
    Digital Metaphors

    Best regards,

    Nard Moseley
    Digital Metaphors
  • edited August 2016
    Thanks Nard

    Yes that might have been a much simpler and more robust approach for
    us!!! I might give it a try when i get a window.


    On Fri, 5 Aug 2016 12:02:40 -0500, "Nard Moseley \(Digital
This discussion has been closed.