我对这个问题感到头疼,我有一个 web 应用程序,它有一个使用水晶报告的报告,在开发电脑上它工作正常,但是当我将同一个项目复制到另一台电脑时,当我加载项目时(VS 2003)出现以下味精:
One or more projects in solution need to be updated to use Crystal Reports XI Release 2. If you choose "Yes", the update will be applied permanently...
我选择“是”,然后我可以看到 CrystalDecisions.Web 引用具有正确的版本,并且根据开发机器的位置,在本例中为:11.5.3300.0。
但是在运行webapp时,我可以看到版本和路径突然变为:11.0.3300.0。
并且在尝试查看报告时出现以下错误:
解析器错误消息:基类包含字段“CrystalReportViewer1”,但其类型 (CrystalDecisions.Web.CrystalReportViewer) 与控件类型 (CrystalDecisions.Web.CrystalReportViewer) 不兼容。
asp.net 有以下内容:
<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
这怎么可能?这里发生了什么事?
编辑 这就是我所做的:
错误的版本 (11.0.3300.0) 位于:
C:\Program Files\Common Files\Business Objects\3.0\managed
正确的版本(11.5.3300.0)位于:
C:\Program Files\Business Objects\Common\3.5\managed
所以我只是删除了错误解决方案的文件,并使其在我的新计算机上运行,运行 webapp 时不再出现错误,报告显示正常。
但是当尝试在生产服务器中做同样的事情时,出现了一个不同的错误,现在是一个异常:
This report could not be loaded due to the following issue: The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.
知道现在可能导致此错误的原因是什么吗?
这是代码:
Try
Dim cr As New ReportDocument
cr.Load(strpath)
cr.SetDatabaseLogon("user", "pwd")
Select Case rt
Case 1
cr.SummaryInfo.ReportTitle = "RMA Ticket"
Case 2
cr.SummaryInfo.ReportTitle = "Service Ticket"
End Select
'cr.SummaryInfo.ReportTitle = tt
cr.SetParameterValue("TicketNo", tn)
'cr.SummaryInfo.ReportComments = comment
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX
CrystalReportViewer1.ReportSource = cr
CrystalReportViewer1.ShowFirstPage()
'cr.Close()
'cr.Dispose()
Catch ex As Exception
MsgBox1.alert("This report could not be loaded due to the following issue: " & ex.Message)
End Try