繁体   English   中英

我试图找出一种方法来简化从访问数据库到.Net应用程序的数据导入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM