我正在解决这个问题,我有一个webapp,它有一个使用水晶报告的报告,在开发pc中工作正常,但是当我将同一个项目复制到另一台PC时,我加载项目时(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
答案 0 :(得分:0)
.dll可能存在一些问题。 尝试更新甚至从解决方案中删除.dll并再次链接。
答案 1 :(得分:0)
我认为每个人都有关于此事的噩梦:\
在我的情况下,Bussiness View Manager未完全安装。成功安装后,报告显示完美。