ReportBuilder 7 with dbExpress causes interface to freeze on big queries
Hi,
We are using report builder 7 with dephi 2006. We recently moved from a
custom odbc dade plugin to the dbExpress plugin with an odbc driver (Dbx
Open ODBC).
The problem we are experiencing is that with our previous plug-in we used
SQLExecDirect for every request so we were able to use a query timeout to
prevent a query from runing to long. Since the move to the dbExpress we are
having an issue with simple queries that return a lot of data. The query
executes quickly but then all of the data is downloaded which freezes the
interface for a really long time.
I'm wondering if there is a way to set the report (or the designer) to
download the dataset in a second thread and still allow the user to
manipulate the interface and cancel the request if it takes to long? If not,
is there a way to set a maximum delay for this download after which it would
be cancelled and an event would be raised?
The idea is that when one of our user designs and tests a report, if the
report takes to long he should be warned instead of having to wait for the
transfer to finish.
Thank you in advance for your help.
We are using report builder 7 with dephi 2006. We recently moved from a
custom odbc dade plugin to the dbExpress plugin with an odbc driver (Dbx
Open ODBC).
The problem we are experiencing is that with our previous plug-in we used
SQLExecDirect for every request so we were able to use a query timeout to
prevent a query from runing to long. Since the move to the dbExpress we are
having an issue with simple queries that return a lot of data. The query
executes quickly but then all of the data is downloaded which freezes the
interface for a really long time.
I'm wondering if there is a way to set the report (or the designer) to
download the dataset in a second thread and still allow the user to
manipulate the interface and cancel the request if it takes to long? If not,
is there a way to set a maximum delay for this download after which it would
be cancelled and an event would be raised?
The idea is that when one of our user designs and tests a report, if the
report takes to long he should be warned instead of having to wait for the
transfer to finish.
Thank you in advance for your help.
This discussion has been closed.
Comments
- one option would to be to look for a driver that supports the timeout
feature that you were using before. You do not specify what database product
you are using. ((The ADO components support TimeOut I'm do not know why the
dbExpress components do not, but I am assuming to keep things simple, they
left that to the drivers).
- ReportBuilder includes built-in support for ask at runtime serch
criteria. Adding search criteria to queries to limit the data is always a
good idea - not sure if you can enforce that somehow.
- ReportBuilder includes built-in support for generating a report in a
background, but does not contain any support for threaded data access. You
could try implementing that in the DADE plug-in for dbExpress,
daDBEXpress.pas, probably not a simple thing to do though.
--
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com