无论出于何种原因,SAP网站上列出了许多不同的SDK。我已经尝试了所有看起来合适的,但无论我安装哪个,我最终都错过了连接到Crystal Server CMS和访问该数据库中的报告所需的程序集。
我正在尝试做的是重写一个旧的VB ASP.NET应用程序,该应用程序查询我们的Crystal Server 11 CMS,它是托管在Windows Server 2003计算机上的。我现在已经在Windows Server 2008 R2计算机上安装了Crystal Server 2011,并且希望将其切换到C#和.NET 4.0,但由于缺少程序集而在该环境中使用代码时遇到问题。
这是原始文件中的包含列表,因此您可以看到我在寻找的内容:
Imports CrystalDecisions.Enterprise
Imports CrystalDecisions.ReportSource
Imports CrystalDecisions.Enterprise.Viewing
Imports CrystalDecisions.Enterprise.Dest
Imports CrystalDecisions.Enterprise.Desktop
Imports CrystalDecisions.ReportAppServer.Controllers
Imports CrystalDecisions.ReportAppServer.ClientDoc
Imports CrystalDecisions.ReportAppServer
Imports CrystalDecisions.Web
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
这是原始代码用于从CMS获取报告的方法:
Dim mySessionMgr As SessionMgr = New SessionMgr
Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon("XX", "XX",
"XX", "secEnterprise")
Dim myEnterpriseService As EnterpriseService =
myEnterpriseSession.GetService("InfoStore")
Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)
myEnterpriseService = myEnterpriseSession.GetService("RASReportFactory")
Dim rrfObject As Object = myEnterpriseService.Interface
Dim myReportAppFactory As ReportAppFactory = CType(rrfObject, ReportAppFactory)
Dim queryString As String = "Select SI_ID From CI_INFOOBJECTS " _
& "Where SI_PROGID='CrystalEnterprise.Report' " _
& "And SI_NAME Like '" & ReportID & "'"
Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)
Dim myInfoObject As InfoObject = myInfoObjects(1)
myReportClientDocument = New ReportClientDocumentClass
myReportClientDocument = myReportAppFactory.OpenDocument(myInfoObject.ID, 0)
我不确定这种方法是否最适合所涉及的软件的当前版本,或者是否有更好的方法来实现相同的效果。如果这种方法仍然正确,是否有人建议我需要安装哪些SDK文件才能访问这些程序集?
答案 0 :(得分:0)
上面的代码工作正常,但为了使引用能够正确解析,我必须首先安装Crystal Reports 2011 for VS(13_0_5),然后按顺序安装32位的Business Intelligence 14 SP04。 64位版本的任何一个都没有做到这一点。只安装一个或另一个也不起作用,也没有按相反的顺序安装它们。