1
我开发了一种设置Crystal Reports连接的方法。设置连接信息时的性能问题Crystal Reports
此方法首先从配置文件抓取连接字符串,创建一个Crystal Reports ConnectionInfo对象。然后
以下代码接管5秒运行:
Dim myTables As Tables = report.Database.Tables
Dim myTableLogonInfo As TableLogOnInfo = New TableLogOnInfo()
myTableLogonInfo.ConnectionInfo = myConnectionInfo
然后,代码接管6秒运行:
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
myTable.ApplyLogOnInfo(myTableLogonInfo)
myTable.LogOnInfo.ConnectionInfo.DatabaseName = myTableLogonInfo.ConnectionInfo.DatabaseName
myTable.LogOnInfo.ConnectionInfo.ServerName = myTableLogonInfo.ConnectionInfo.ServerName
myTable.LogOnInfo.ConnectionInfo.UserID = myTableLogonInfo.ConnectionInfo.UserID
myTable.LogOnInfo.ConnectionInfo.Password = myTableLogonInfo.ConnectionInfo.Password
Next
这只发生第一次的形式被加载,其后的时间是
335ms(与5349ms相比) 和 52ms(与6228ms相比)
但是,当应用程序重新加载时,会再次发生相同的慢速时间。
我的报告中一般不超过3张。在这种情况下只有一张桌子。
这是目前正在测试中,VS2008和SQLServer2005都在本地运行。在质量保证环境中也会出现同样的问题,即应用程序在客户端上运行,数据库位于同一局域网上的服务器上。
所以我的问题是,我可以提高这部分代码的速度吗?为什么设置报告连接信息需要很长时间?我是否错误地连接到报告?
任何想法?
谢谢,
这需要一段时间来加载大量的晶体库。你确定它不是'report.Load()',这需要很长时间。 – dotjoe 2009-11-10 21:07:12
我有一个StopWatch开始和停止这些代码块,所以我不认为这是Load()方法。我实际上并没有在任何地方调用Load方法,但是我做myReport.ExportToDisk(),然后我也在新的报表窗口中显示报表。 – 2009-11-11 04:46:18
你是否已经在调试模式中检查代码,看看你是否可以缩小到特定的代码行? – Dusty 2009-11-11 15:34:09