![](/img/trans.png)
[英]Trying to figure out an elegant way to persist data between objects in ASP.NET MVC Request Pipeline
[英]I am trying to figure out a way to streamline importing data from an access database into a .Net application
我正在编写一个重量轻的.Net应用程序,该应用程序查询Access数据库并根据结果集生成Crystal Report。
数据集填充方法有点慢,但是可以管理。
问题是当我加载水晶报表时。 如果被传递到水晶数据集是相当大的, 在所有的 ,它需要永远载入,并且用户放弃。
这是设置报告数据集的代码:
report.SetDataSource(largeDataSet);
largeDataSet有两个表。 我已经将它们配对到绝对必不可少的列。
最终发生的是
reportViewer.Show();
命令会触发,但是ReportViewer需要几分钟才能真正显示报告。
我很茫然。
感谢您的帮助和反馈。
我建议您尝试使用性能分析器应用程序。 ANTS Performance Profiler是一个很好的工具。
http://www.red-gate.com/products/ants_performance_profiler/index.htm
我最终使用DataView首先进行排序(有效地设置了一个非聚集索引),然后仅过滤出我需要的每个表中的行,然后设置了一个新的数据集并使用dataView.ToTable()方法填充新的数据集。
这为Crystal Reports设置了成本较低的交易。 以前需要6到10分钟的报告现在要在一分钟内加载。
private DataSet FilterData()
{
DataSet filteredData = new DataSet("FilteredData");
DataView viewAccount = new DataView(global65DataSet.SET_ACCOUNT_TABLE);
viewAccount.Sort = "Number ASC";
viewAccount.RowFilter = " Number >= '" + beginningAcct+"' AND Number <= '" + endAcct + "' ";
DataView viewTrans = new DataView(global65DataSet.SET_TRANSACTION_TABLE);
viewTrans.Sort = "Transaction_ID ASC, DateTime ASC";
viewTrans.RowFilter = " DateTime >= '" + beginningDate.ToShortDateString() + "' AND DateTime <= '" +
endDate.ToShortDateString() + "'";
filteredData.Tables.Add(viewAccount.ToTable());
filteredData.Tables.Add(viewTrans.ToTable());
filteredData.Tables[0].TableName = "SET_ACCOUNT_TABLE";
filteredData.Tables[1].TableName = "SET_TRANSACTION_TABLE";
return filteredData;
}
可能有一种更好的,更多的面向对象的方法,但这可行:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.