0

无论出于何种原因,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 文件才能访问这些程序集提出建议?

4

1 回答 1

0

上面的代码有效,但为了正确解析引用,我必须先安装适用于 VS 的 Crystal Reports 2011 (13_0_5),然后按顺序安装适用于 32 位的 Business Intelligence 14 SP04。两者的 64 位版本都没有成功。只安装一个或另一个也不起作用,也没有以相反的顺序安装它们。

于 2013-03-07T15:10:36.783 回答