C# 我正试图找出一种方法来简化将数据从access数据库导入.Net应用程序的过程
我正在编写一个相当轻量级的.Net应用程序,它查询Access数据库并根据结果集生成Crystal报表 数据集填充方法有点慢,但易于管理 问题是当我加载crystal报告时。如果传递给Crystal的数据集是相当大的,那么加载需要花费很长时间,用户会放弃 这是设置报表数据集的代码:C# 我正试图找出一种方法来简化将数据从access数据库导入.Net应用程序的过程,c#,.net,crystal-reports,C#,.net,Crystal Reports,我正在编写一个相当轻量级的.Net应用程序,它查询Access数据库并根据结果集生成Crystal报表 数据集填充方法有点慢,但易于管理 问题是当我加载crystal报告时。如果传递给Crystal的数据集是相当大的,那么加载需要花费很长时间,用户会放弃 这是设置报表数据集的代码: report.SetDataSource(largeDataSet); largeDataSet有两个表。我已将它们配对到绝对重要的专栏 最终发生的是 reportViewer.Show(); 命令激发,但Rep
report.SetDataSource(largeDataSet);
largeDataSet有两个表。我已将它们配对到绝对重要的专栏
最终发生的是
reportViewer.Show();
命令激发,但ReportViewer实际显示报告需要几分钟
我不知所措
我感谢您的帮助和反馈。我建议您尝试一款性能分析器应用程序。 ANTS性能分析器是一个很好的工具
最后,我使用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;
}
私有数据集过滤器数据()
{
数据集Filteredata=新数据集(“Filteredata”);
DataView viewAccount=新的DataView(global65DataSet.SET_ACCOUNT_表);
viewcount.Sort=“编号ASC”;
viewcount.RowFilter=“Number>=”“+beginingacct+””和Number=”“+beginningDate.ToShortDateString()+””和DateTime有许多可能影响性能的因素。您可能需要在问题中更具体一些。谢谢,这个建议帮助我缩小了问题的范围。