Actually I'm testing your Telerik Reporting Product (Telerik_Reporting_2008_3_1402_trial). I have designed a big report (>255 Textboxes ==> I know, that this are many textboxes, but this is real life), so I needed to part the whole report in one main report and in one subreport (don't missunderstand me ==> it is not designed as the master-detail-example yet).
I added a subreport control to the main report and set the reportsource-property to the subreport I created. Then I run my web application in VS 2008 SP1. Everything works fine.
After I close the running web application, Visual Studio tells me, that there are errors and the main report class could/should not be loaded into the designer to prevent data loss.
The two error messages in detail (translated from german VS with google language tools):
1)
german: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
2)
german: Die Variable reportZahlung1 wurde nicht deklariert oder nicht zugeordnet.
english: The variable reportZahlung1 has not been declared or not assigned.
So I can't go on with the designing of the report. Interesting is, that when I start the project again, everthing works still fine.
Any suggestions to solve the problem would be very nice.
By
Michael
M
5 Answers, 1 is accepted
Like you told me, I deleted all data for reportZahlung (incl. statements for control subreport1) and rebuild the projects.
It compiled successfully, but the designer still showed the warning message.
Then I closed VS and directly opened my project in a new instance of visual studio. After that both reports were shown
correctly in the designer. Then I added a subreport control to the main report. But when I want to set the reportsource
property, VS shows me a error message box: "Object reference not set to an instance of an object." ?!?
After that, I delete the hole subreport and added a new one to the project. Then I tried to reference this report with the
reportsource-property, but the same error message appeared.
What should I do?
Bye
Michael
Here are some infos I want to complement:
a) We can except that the problem is a problem with my computer respectively the installation. I tested my solution yesterday evening with another notebook. The problem stays the same.
b) A few minutes ago I build a small test project, where I use the same database (MySQL; MySQL Connector 5.2.5), but here I wanted to test, if the problem is a problem of to many textbox in main- and/or subreport in my real life application. So I used only <5 textboxes in main- and subreport. After first time building and debugging, I get the designer error message for the mainreport.
Michael
As we did not find any download history for your account, can you double check if you are using the latest version of Telerik Reporting - 2008.3 1402? Also what OS and Visual Studio version do you use? What .NET framework do you build against? Any additional information or a sample class library showing the problem at hand would be appreciated.
All the best,
Steve
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
Sadly I did not get any real answer to my problem, since I have send you my sample project on 06.03.2009 to support@telerik.com.
Any suggestions??
Michael
The email support@telerik.com is used for internal purposes only and for sending No-Reply email messages i.e. it is not checked. If you need to send an email with technical inquiry the proper address is clientservice@telerik.com. However we highly recommend using our support ticket system instead, which also allows you to attach your files. Or of course you can also upload them on a live server and post a link in this forum or a support ticket.
Thank you for the understanding.
Regards,
Steve
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
"I am using the Web Report Designer with a TableAdapter to load and display a large dataset (~200,000 rows). When I preview the report, it takes around 8 minutes to render, or sometimes does not render at all. I would like to understand if Telerik Reporting supports server-side or on-demand data paging during preview to improve performance, and what best practices you recommend for handling large datasets in the Web Report Designer environment."
Note: I'm currently using a DataSet with TableAdapter as the data source, and I’d like to know the recommended approach for implementing data during preview.
Hello Michael,
Telerik Reporting does not support server-side or on-demand data paging during report processing or preview. When you preview a report, the entire dataset required by the report (all 200,000 rows in your case) is loaded and processed before any pages are rendered. Paging in the report viewer only affects navigation of already processed pages and does not limit the volume of data retrieved or processed by the report engine.
To optimize performance, filter your data as much as possible before it reaches the report. Use report parameters to limit the dataset retrieved by your TableAdapter. This ensures only the necessary records for the current report context are processed. You can learn more about that from the below articles:
If you need more control over data retrieval, consider switching to the ObjectDataSource component. This allows you to implement custom methods that accept parameters and return only the required subset of data, supporting on-demand logic - ObjectDataSource Component at a Glance - Telerik Reporting
Limit the use of complex expressions, aggregates, and conditional formatting, as these can impact performance with large datasets - Performance Factors at a Glance - Telerik Reporting.
If the provided information doesn't help you could you please send me your project and report with sample data?
If you are hesitant to send your project and report here, you can open a ticket and provide the details there.I am currently working on a report using Telerik Reporting, and I have noticed a significant difference in rendering performance based on the number of records.
Issue Description:
When previewing the report with 100 rows, the report renders almost instantly (within a second).
However, when previewing the same report with 10,000 rows, it takes around 2 minutes to render.
Requirement:
For my use case, I only need to display high-level summary data immediately. I would like the report to load and render this summary data in a fraction of a second, even if the dataset is large in the background.
Questions:
What are the best practices for optimizing performance when rendering reports with large datasets?
Is there a way to load only summary or aggregated data quickly, and defer or lazily load the detailed records if needed?
- Are there any specific Telerik Reporting features or design patterns recommended for this type of scenario?
Additional Info:
Report Type: Table
Data Source: Object Data Source,SQL Data Source
- I would appreciate any guidance, recommendations, or sample implementations to help improve the performance in this case.
Thank you for your support.
Best regards,
Abdul Azeez
Hello Abdul,
Thank you for reaching out.
The most effective way to improve report performance is to limit the amount of data retrieved and processed. Apply server-side filtering or use report parameters to fetch only the necessary summary data before it reaches the report engine. This drastically reduces processing time and memory usage. For more information you can look at this articles:
- Filtering Data at a Glance - Telerik Reporting
- Best Practices for Data Retrieval in Telerik Reporting
Instead of retrieving all raw records, use SQL queries or stored procedures to return only aggregated/high-level summary data. For example, use GROUP BY and aggregate functions (SUM, COUNT, AVG) to produce summary tables for initial display.
Avoid heavy expressions, aggregates, and conditional formatting in the report design, especially when working with large datasets, as these can impact rendering speed.
Structure your report so the main Table displays only summary data. Provide drill-through actions or subreports to load detailed data only when the user requests it. This ensures a fast initial render. You can use a Table for summary rows, and add a subreport or toggleable detail section for additional data.
Implement custom methods in your data layer that accept parameters and return only summary data for the main report, and detailed data for subreports or drill-downs. This gives you control over what gets loaded and when.
- Example code:
var summaryODS = new ObjectDataSource() { DataSource = typeof(DataAccessLayer), DataMember = "GetSummaryData" }; summaryODS.Parameters.Add("param1", typeof(int), "=Parameters.Param1.Value"); table.DataSource = summaryODS;
You can use the drill-down functionality to hide detailed data initially and only render it on user interaction. This improves both performance and user experience. You can also load detailed records in a subreport that is processed only when displayed. This keeps the main report lightweight.
For very large datasets, consider using the Print Preview mode in the viewer, which paginates based on hard page settings and can improve performance for large reports - Interactive and Print Layouts Explained - Telerik Reporting
If you would like me to analyse the report as well, please send me a copy of the report definition plus a sample data source that I can use to preview it locally. This will allow me to investigate the report design to see if any improvements can be made, and also test if I have a similar rendering time locally.
Looking forward to updates from you.
Hi Support Team,
Thank you for your previous response and the resources you shared.
To provide more detailed context:
I’m using a SQL stored procedure that joins multiple tables and, before filtering, returns a large dataset (approximately 200,000+ rows). The report uses date range parameters (FromDate, ToDate) to apply filtering. After filtering, the stored procedure typically returns around 250 rows with 30+ columns.
The key point is:
The stored procedure is not called directly from the report. Instead, it’s accessed via a .NET backend TableAdapter (strongly typed DataSet), and exposed to the report through an ObjectDataSource.
Current Setup:
Data Access: SQL Stored Procedure (via backend .NET TableAdapter)
Filtering: Report parameters (FromDate, ToDate) passed to backend method
Data Binding: ObjectDataSource bound to the report
Report Viewer: Angular application using
<tr-viewer>Returned data after filtering: ~250 rows x 30+ columns
Total data before filtering: ~200,000+ rows
Performance Issue:Despite applying filtering via parameters, the report still renders slowly.
Looking forward to your insights.
Best regards,
Abdul Azeez A
Hi Michael,
Based on your setup, here are targeted recommendations to address performance and deferred loading concerns:
- Confirm that your TableAdapter method passes the report parameters (FromDate, ToDate) directly to the SQL stored procedure before any data is loaded into .NET.
- The stored procedure should use these parameters in its WHERE clause, so only the filtered records (~250 rows) are returned, not the full 200,000+ rows.
- If the TableAdapter fetches all data and then filters in .NET, this will cause slow rendering. Filtering must occur in SQL.
Example:
public DataTable GetFilteredData(DateTime fromDate, DateTime toDate)
{
// Call stored procedure with parameters
// Only filtered data is returned from SQL
}
Configure your ObjectDataSource to call this method and map report parameters accordingly.
In the report designer, ensure ObjectDataSource parameters are mapped to your report parameters:
objectDataSource1.Parameters.Add("fromDate", typeof(DateTime), "=Parameters.FromDate.Value");
objectDataSource1.Parameters.Add("toDate", typeof(DateTime), "=Parameters.ToDate.Value");
This guarantees that filtering is applied before the data reaches the report engine.
For large datasets, consider separating summary and detail data. Display only summary data in the main report, and use drill-through actions or subreports to load details on demand. You can use a Table for summary rows.
Add a subreport or toggleable detail section for additional data, loaded only when requested by the user. The subreport can have its own ObjectDataSource with parameters, so it fetches only the relevant detailed records when needed, minimizing initial load time.
Run the stored procedure in SQL Server Management Studio with the same parameters to verify its speed. If SQL returns 250 rows quickly, the bottleneck is likely in data transfer or report processing. Avoid complex expressions, aggregates, or conditional formatting in the report, especially for large datasets.
For more information you can check the following articles: