Hi
We need to source data from a web service for both designing and running reports in the standalone Telerik Report Designer.
We have the web service written and published which exposes all the available methods and their parameters to the user. When called from the web browser it works fine, returning the requested data in a DataTable in XML format (it is a standard .NET web service).
What we need is for the Report Designer to act in a similar way to the web browser, in that it should dynamically display the web service methods that are available - along with their parameters, and once filled in by the user, they should be invoked and the data made available. This is needed when designing the report, and should be transparent when running the report.
Given that our end users are not programmers, the selection of the above needs to be simple.
We are often updating the web service and thus need the Report Designer to pick changes up dynamically without the need to distribute anything to the client.
I have created a custom reports datasource (inherits from ObjectDataSource), with config set up and referenced as follows in the Telerik.ReportDesigner.exe.config (per http://www.telerik.com/help/reporting/standalone-report-designer-extending-configuration.html)
:
The above assembly is only a stub but references the webservice, which I take it allows access to the webservice in the Report Designer due to the Report Designer's use of reflection.
I was hopeful the following config would enable direct access to the webservice, but it is used only by the CustomReportsDataSource. This unfortunately means our webservices are not dynamic and have to be stubbed in statically in the CustomReportsDataSource.dll, thus necessitating the distribution of this dll whenever there's a change to the web service.
To create a report in the Report Designer, I have to do the following (which is also required of a non developer):
Is there a way to simplify this for the end user? i.e. include our object data source in 'Current Data Sources' and suppress all extraneous methods, displaying only those from the web service? Ideally, the end user should not have to deal with steps 3-6 above.
Initially, I had an error in the config and at this point would always get the following (very vague and thus difficult and hugely time wasting to resolve) message:
"An error occurred while invoking data retrieval method"
There were no details pertaining to this message in the Telerik.ReportDesigner.log file (log enabled by adding the system.diagnostics section in the config file, per http://www.telerik.com/community/forums/reporting/telerik-report-designer/standalone-report-designer-exe-requirements.aspx). Further, the webservice was not being called as evidenced by debugging messages not appearing in the server log.
It would've saved me hours and would be appreciated if you could provide more details for this type of error (simply displaying the exception generated would've made the world of difference!).
So my questions are:
Thanks
We need to source data from a web service for both designing and running reports in the standalone Telerik Report Designer.
We have the web service written and published which exposes all the available methods and their parameters to the user. When called from the web browser it works fine, returning the requested data in a DataTable in XML format (it is a standard .NET web service).
What we need is for the Report Designer to act in a similar way to the web browser, in that it should dynamically display the web service methods that are available - along with their parameters, and once filled in by the user, they should be invoked and the data made available. This is needed when designing the report, and should be transparent when running the report.
Given that our end users are not programmers, the selection of the above needs to be simple.
We are often updating the web service and thus need the Report Designer to pick changes up dynamically without the need to distribute anything to the client.
I have created a custom reports datasource (inherits from ObjectDataSource), with config set up and referenced as follows in the Telerik.ReportDesigner.exe.config (per http://www.telerik.com/help/reporting/standalone-report-designer-extending-configuration.html)
:
<
Telerik.Reporting
>
<
AssemblyReferences
>
<
add
name
=
"CustomReportsDataSource"
version
=
"1.0.0.0"
culture
=
"neutral"
publicKeyToken
=
"null"
/>
</
AssemblyReferences
>
</
Telerik.Reporting
>
The above assembly is only a stub but references the webservice, which I take it allows access to the webservice in the Report Designer due to the Report Designer's use of reflection.
I was hopeful the following config would enable direct access to the webservice, but it is used only by the CustomReportsDataSource. This unfortunately means our webservices are not dynamic and have to be stubbed in statically in the CustomReportsDataSource.dll, thus necessitating the distribution of this dll whenever there's a change to the web service.
<
system.serviceModel
>
<
bindings
>
<
basicHttpBinding
>
<
binding
name
=
"ReportsWebServiceSoap"
/>
</
basicHttpBinding
>
</
bindings
>
<
client
>
<
endpoint
address
=
"http://localhost:82/Webservices/ReportsWebService.asmx"
binding
=
"basicHttpBinding"
bindingConfiguration
=
"ReportsWebServiceSoap"
contract
=
"ReportsServiceReference.ReportsWebServiceSoap"
name
=
"ReportsWebServiceSoap"
/>
</
client
>
</
system.serviceModel
>
To create a report in the Report Designer, I have to do the following (which is also required of a non developer):
- Click 'New Report'
- Use the Report Designer Wizard and select the Object Data Source.
- Click 'Add New Data Source'
- Select the 2nd available data source type (appended with 'ReportsServiceReference')
- Select 'ReportsWebServiceSoapClient'
- Click 'Next' and select 'Choose a data source member'
- Select the method required, click 'Next'
- Enter the parameters
- Select the fields, report type, etc.
Is there a way to simplify this for the end user? i.e. include our object data source in 'Current Data Sources' and suppress all extraneous methods, displaying only those from the web service? Ideally, the end user should not have to deal with steps 3-6 above.
Initially, I had an error in the config and at this point would always get the following (very vague and thus difficult and hugely time wasting to resolve) message:
"An error occurred while invoking data retrieval method"
There were no details pertaining to this message in the Telerik.ReportDesigner.log file (log enabled by adding the system.diagnostics section in the config file, per http://www.telerik.com/community/forums/reporting/telerik-report-designer/standalone-report-designer-exe-requirements.aspx). Further, the webservice was not being called as evidenced by debugging messages not appearing in the server log.
It would've saved me hours and would be appreciated if you could provide more details for this type of error (simply displaying the exception generated would've made the world of difference!).
So my questions are:
- As above, is there any way to simplify the report creation process for the end user?
- Is there a way to invoke the webservice dynamically?
- There was talk of providing an OData data source, any progress/timeframe on that?
Thanks