Home Datapipelines
New Blog Post: Email: Multi-Service

Parameter object is improperly defined

edited July 2017 in Datapipelines
I'm running Delphi XE, RB 18.0 build 369, MySQL 5.7, and the
Connector.ODBC 5.3.

I have a template with a lot of views over in the data tab. There are
13 links to other tables. With those links in place, I get the message
that the "Parameter object is improperly defined. Inconsistent or
incomplete information was provided" when I go to preview. Apparently,
some of these links are causing problems, as when I start removing those
links, I can eventually get it to where I stop getting that error.
Although it's distressingly inconsistent how many links I need to remove
after reloading the template before it will 'successfully' run.

So, is there some issue with too many linked tables? I apologize for
the nebulous nature of the issue - it's been a pain trying to track down
as well, and I haven't been able to rebuild the program in a way I can
intercept the queries, due to not having the ra*.pas units to rebuild
the RB units in debug.


  • edited July 2017
    Hi Steve,

    Which Delphi library are you using to connect to your MySQL database?
    In our quick research, this error appears to show itself when others use
    ADO to connect to MySQL. Are you using ADO?

    Are you using parameterized linking when connecting your datasets in DADE?

    Are you manually editing the SQL in any way?

    The ra* files are for RAP only, you do not need these files to debug
    ReportBuilder. Simply set your library path to point to
    \RBuilder\Source\ and rebuild your application. Then you can trace into
    any other portion of the product.

    Best Regards,

    Nico Cizik
    Digital Metaphors
  • edited July 2017
    Yes, I'm connecting via ADO.

    Looking at the SQL tab for the link, it gets created with parameterized
    linking, yes. The magic SQL option is disabled, and I'm not doing
    manual SQL for it.

    I'm using a custom da* unit, which uses TADOQuery.

    I'll need to pull some stuff out of our program - we use some
    Passthrough functions and it gets upset that we use the ra* units but
    can't rebuild them. I imagine if I temporarily get rid of those
    passthrough units it will be happy.

  • edited July 2017
    Hi Steve,

    1. If Magic SQL linking is not available, the SQL is manually edited (or
    has been in the past) for one of the linked datasets. This is the only
    reason this option would be greyed out.

    2. When you say you are using a "custom da* unit to connect via DADE, is
    this something you created manually? Why are you not using the daADO
    plugin included with ReportBuilder?

    3. Searching the internet, this is a common error when using
    parameterized linking and an ADO/MySQL combination.

    One option to try is in your da* plugin, try setting the
    TADOQuery.ParamCheck property to False after it has been created.

    If the above does not help, we will need an example we can run here that
    demonstrates the issue using the daADO plugin (unfortunately we are
    unable to support custom DADE plugins).

    Have you considered using a different connection suite rather than ADO
    to connect to MySQL? While ADO is great for Microsoft DB's such as
    Access and SQL Server, it does not appear to play well with others. We
    use FireDAC extensively with MySQL with great success.

    Best Regards,

    Nico Cizik
    Digital Metaphors
  • edited July 2017
    Sorry my delayed response - life came up.

    1) The two datasets involved are both built using the query builder.
    And I don't believe there's a way back from having edited the SQL to
    using the query builder, so I have to assume the SQL was never edited
    directly. Deleting the link and recreating it, without editing it,
    still has the Magic SQL option as unavailable.

    2) I'll have to see what it would take to use the default daADO unit.

    3) Setting the ParamCheck to false results in an error that the SQL
    syntax is bad. It can't parse a ":param" element, since it's not doing
    the parameter check.

    Unfortunately, back in Delphi XE, there's no FireDAC.

This discussion has been closed.