如何从HANA DB渲染Crystal Report?

2020-09-15 18:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个使用Microsoft SQL多年的例程,但是现在它需要使用HANA DB。 我已经用我能找到的任何示例重写了很多次代码,但是我仍然得到Engine.InternalException"无法打开连接"。 同一台机器上的Crystal报表设计器可以打开报表。 这是我的代码:

  PublicSub SaveCrystalReport(ByVal RptFilename AsString,ByVal ReportParameters As Hashtable,SaveAsPDFFileName AsString)
     Trace.TraceInformation(" PrintCrystalReport():"&RptFilename)

     使用cdoc AsNew CrystalDecisions.CrystalReports.Engine.ReportDocument
         Trace.TraceInformation("正在加载报告:"&RptFilename)
         cdoc.Load(RptFilename)ForEach paramKey作为cdoc.ParameterFields中的CrystalDecisions.Shared.ParameterField
             Trace.TraceInformation(" Report具有参数:"&paramKey.Name)如果ReportParameters.ContainsKey(paramKey.Name)则
                 Trace.TraceInformation("打印请求的参数为"&paramKey.Name&",对其进行设置。")TryDim rptparam为CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition = cdoc.DataDefinition.ParameterFields.Item(paramKey.Name)如果rptparam不为空并且也不能rptparam 然后链接
                         cdoc.SetParameterValue(paramKey.Name,ReportParameters.Item(paramKey.Name))EndIfCatch pex作为异常
                     Trace.TraceError("无法在水晶报表中设置参数:"&paramKey.Name&vbCrLf&pex.ToString)EndTryEndIfNextDim ci AsNew CrystalDecisions.Shared.ConnectionInfo

         ci.AllowCustomConnection =真

         ci.UserID = CompanySQLUser
         ci.Password = CompanySQLPass
         ci.ServerName = CompanySQLServer
         ci.DatabaseName = CompanyDatabase

         ci.LogonProperties.Clear()
         ci.LogonProperties.Add(新NameValuePair2(" ConnectionString",ci.ServerName))
         ci.LogonProperties.Add(New NameValuePair2(" UseDSNProperties",False))'cdoc.SetDatabaseLogon(CompanySQLUser,CompanySQLPass,CompanySQLServer,CompanyDatabase)
         cdoc.SetDatabaseLogon(CompanySQLUser,CompanySQLPass)ForEach tbl作为cdoc.Database.Tables中的CrystalDecisions.CrystalReports.Engine.Table

             Dim登录为CrystalDecisions.Shared.TableLogOnInfo = tbl.LogOnInfo
             logon.ConnectionInfo = ci
             tbl.ApplyLogOnInfo(logon)下一步

         cdoc.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,SaveAsPDFFileName)结束使用
 EndSub 

我正在传递DBName,用户名和密码,但是对于服务器,我正在传递形式为" DRIVER = {B1CRHPROXY}; SERVERNODE = ...; DATABASE = ..."的ODBC连接字符串以及我的数据库设置 匹配我的连接字符串中的一个。 在内部,该报告使用的是ConnectionInfoType CRQE,我认为这对于ODBC样式连接是正确的。

我还尝试了此操作,但未应用任何连接信息(用户名和密码除外),我认为这些信息会从封装在报告文件中的数据库中呈现报告,但这也不起作用。

有人知道我在做什么错吗-naaybody在由HANA数据库支持时是否能够通过API渲染Crystal?

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个使用Microsoft SQL多年的例程,但是现在它需要使用HANA DB。 我已经用我能找到的任何示例重写了很多次代码,但是我仍然得到Engine.InternalException"无法打开连接"。 同一台机器上的Crystal报表设计器可以打开报表。 这是我的代码:

  PublicSub SaveCrystalReport(ByVal RptFilename AsString,ByVal ReportParameters As Hashtable,SaveAsPDFFileName AsString)
     Trace.TraceInformation(" PrintCrystalReport():"&RptFilename)

     使用cdoc AsNew CrystalDecisions.CrystalReports.Engine.ReportDocument
         Trace.TraceInformation("正在加载报告:"&RptFilename)
         cdoc.Load(RptFilename)ForEach paramKey作为cdoc.ParameterFields中的CrystalDecisions.Shared.ParameterField
             Trace.TraceInformation(" Report具有参数:"&paramKey.Name)如果ReportParameters.ContainsKey(paramKey.Name)则
                 Trace.TraceInformation("打印请求的参数为"&paramKey.Name&",对其进行设置。")TryDim rptparam为CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition = cdoc.DataDefinition.ParameterFields.Item(paramKey.Name)如果rptparam不为空并且也不能rptparam 然后链接
                         cdoc.SetParameterValue(paramKey.Name,ReportParameters.Item(paramKey.Name))EndIfCatch pex作为异常
                     Trace.TraceError("无法在水晶报表中设置参数:"&paramKey.Name&vbCrLf&pex.ToString)EndTryEndIfNextDim ci AsNew CrystalDecisions.Shared.ConnectionInfo

         ci.AllowCustomConnection =真

         ci.UserID = CompanySQLUser
         ci.Password = CompanySQLPass
         ci.ServerName = CompanySQLServer
         ci.DatabaseName = CompanyDatabase

         ci.LogonProperties.Clear()
         ci.LogonProperties.Add(新NameValuePair2(" ConnectionString",ci.ServerName))
         ci.LogonProperties.Add(New NameValuePair2(" UseDSNProperties",False))'cdoc.SetDatabaseLogon(CompanySQLUser,CompanySQLPass,CompanySQLServer,CompanyDatabase)
         cdoc.SetDatabaseLogon(CompanySQLUser,CompanySQLPass)ForEach tbl作为cdoc.Database.Tables中的CrystalDecisions.CrystalReports.Engine.Table

             Dim登录为CrystalDecisions.Shared.TableLogOnInfo = tbl.LogOnInfo
             logon.ConnectionInfo = ci
             tbl.ApplyLogOnInfo(logon)下一步

         cdoc.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,SaveAsPDFFileName)结束使用
 EndSub 

我正在传递DBName,用户名和密码,但是对于服务器,我正在传递形式为" DRIVER = {B1CRHPROXY}; SERVERNODE = ...; DATABASE = ..."的ODBC连接字符串以及我的数据库设置 匹配我的连接字符串中的一个。 在内部,该报告使用的是ConnectionInfoType CRQE,我认为这对于ODBC样式连接是正确的。

我还尝试了此操作,但未应用任何连接信息(用户名和密码除外),我认为这些信息会从封装在报告文件中的数据库中呈现报告,但这也不起作用。

有人知道我在做什么错吗-naaybody在由HANA数据库支持时是否能够通过API渲染Crystal?

谢谢

付费偷看设置
发送
3条回答
Bunny_CDM
1楼 · 2020-09-15 19:13.采纳回答

Visual Studio的Crystal Reports没有Hana客户端,因此需要将其安装在应用程序PC上。

它可以在CR Designer中使用吗?

您正在使用哪个版本的CR运行时?

是32位还是64位平台?

Don

能不能别闹
2楼-- · 2020-09-15 18:54

Hi Don,

该报表是在SAP Business One随附的Crystal Report Designer中创建的,我的VS2017中没有任何Crystal Reports集成。 我已经安装了nuget程序包" CrystalReports",该程序包将安装版本为13.0.5.891的DLL-从我一直在阅读的内容来看,它们应该是有目的的。

我已阅读到当期望使用Crystal Reports Runtime时无法安装BOEIntegration和BOE BI。 我从SP22下载安装了运行时。 通过进一步阅读,我怀疑我需要V13.0.22上的客户端DLL-当前我遇到了另一个错误"文档尚未打开"。

我正在构建64位和32位版本,它们都具有相同的错误。

Mark

huskylover
3楼-- · 2020-09-15 19:00

VS的CR没有Hana ODBC drvier,因此我注意到确实需要将其安装在DEV PC上。

据我了解,最新的BI确实将最新的CR用于VS运行时,因此更新为SP 22或23。

在WIKI上,SP 5不支持VS 2017:

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

但是请注意,此版本是公开的,并且不了解B1,因此您可能还需要在DEV PC上为B1安装CR。

一周热门 更多>