如何在Crystal Decisions中使用Powershell

2020-09-10 00:13发布

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

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


嗨,

我想将Powershell与Crystal Decisions一起用于导出Crystal报表。 不幸的是,我遇到了一个问题。
如果我在保存报表时未保存数据以强制使用新参数更新报表,则会出现以下错误:

我猜想这与连接sybase数据库有关,因为当我用包含已保存数据的报告运行脚本时,它会起作用。

有人知道这种行为吗?

谢谢!

CRRuntime_64bit_13_0_12

2008年晶体报告

我的代码:

Param(

[string] $ FirstName1

[reflection.assembly] :: LoadWithPartialName('CrystalDecisions.Shared')

[reflection.assembly] :: LoadWithPartialName('CrystalDecisions.CrystalReports.Engine')

$ report =新对象CrystalDecisions.CrystalReports.Engine.ReportDocument

$ report.Load(" C:\ Users \ geservice \ Desktop \ shell \ Textbefund.rpt")


foreach($ report.Database.Tables中的$ Table)

{

$ table

$ tli = $ Table.LogonInfo

$ li = $ tli.ConnectionInfo

写主机"位置:$($ table.location)"

$ li.ServerName =" myserver"

$ li.DatabaseName =" mydb"

$ li.UserID ="用户"

$ li.Password ="密码"

$ Table.ApplyLogOnInfo($ tli)

$ table.location

}

$ report.SetParameterValue(" FirstName",$ FirstName1)

$ report.ExportToDisk("文本"," C:\ Users \ geservice \ Desktop \ shell \ Textbefund.txt")

$ report.close()

error.jpg (57.8 kB)

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

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


嗨,

我想将Powershell与Crystal Decisions一起用于导出Crystal报表。 不幸的是,我遇到了一个问题。
如果我在保存报表时未保存数据以强制使用新参数更新报表,则会出现以下错误:

我猜想这与连接sybase数据库有关,因为当我用包含已保存数据的报告运行脚本时,它会起作用。

有人知道这种行为吗?

谢谢!

CRRuntime_64bit_13_0_12

2008年晶体报告

我的代码:

Param(

[string] $ FirstName1

[reflection.assembly] :: LoadWithPartialName('CrystalDecisions.Shared')

[reflection.assembly] :: LoadWithPartialName('CrystalDecisions.CrystalReports.Engine')

$ report =新对象CrystalDecisions.CrystalReports.Engine.ReportDocument

$ report.Load(" C:\ Users \ geservice \ Desktop \ shell \ Textbefund.rpt")


foreach($ report.Database.Tables中的$ Table)

{

$ table

$ tli = $ Table.LogonInfo

$ li = $ tli.ConnectionInfo

写主机"位置:$($ table.location)"

$ li.ServerName =" myserver"

$ li.DatabaseName =" mydb"

$ li.UserID ="用户"

$ li.Password ="密码"

$ Table.ApplyLogOnInfo($ tli)

$ table.location

}

$ report.SetParameterValue(" FirstName",$ FirstName1)

$ report.ExportToDisk("文本"," C:\ Users \ geservice \ Desktop \ shell \ Textbefund.txt")

$ report.close()

error.jpg (57.8 kB)
付费偷看设置
发送
8条回答
SAP浪
1楼 · 2020-09-10 00:42.采纳回答

看看Don在此主题中提出的建议是否会有所帮助:

-Ludek

加拿大全球支持中心AGS产品支持高级支持工程师

Twitter

亦是此间程序员
2楼-- · 2020-09-10 00:33
< p> Hi Eric,

Subreport要求定义其自己的LogonInfo对象。 看看我所做的更新脚本对我有用。

谢谢

布莱恩

能不能别闹
3楼-- · 2020-09-10 00:38

嗨,

谢谢你们。

我已经测试了以下内容:

-没有参数且没有保存数据的运行=>发生相同的异常

-在运行脚本之前删除文本文件=>发生相同的异常

-不建议:我使用了以下代码:

IF($ report.verifyDatabase()){$ report.ExportToDisk(" Text"," C:\ Users \ geservice \ Desktop \ shell \ Textbefund.txt")}

ELSE {写主机"登录失败"}

=>引发verifyDatabase方法行的登录异常

-然后我已经安装了SP8 Runtime,并在没有新的if-statemnt的情况下再次尝试

=>带有if语句:登录失败(我的翻译)

=>不带if语句:加载数据库信息时出错。 textbefunt.rpt文件错误(我的翻译)

所以我会说这是一个连接问题,还有其他建议吗?

这是通过CR的Sybase服务器插件连接的Sybase DB。

nice_wp
4楼-- · 2020-09-10 00:35

Brian,

我已经完全解决了这个问题。 我保存报告的方式导致了问题。 当我取消选中"用报表保存数据"时,一切都解决了。

不过,谢谢您的询问。

暮风yp
5楼-- · 2020-09-10 00:56

嗨,埃里克,

您收到的错误与您已经分析的错误不符。 如果ExportToDisk中的路径不正确,则将无法首先找到报告,因为它们位于同一文件夹中。 如果路径错误,则在尝试打开报告时会出错。

如果报表使用已保存的数据但在您尝试刷新数据时失败,那么我认为这是参数传递而不是登录问题,这是问题所在。 我们可以通过运行不带参数的报告并查看它是否登录并导出报告来进行测试。

您的LogonInfo看起来正确,并且您正在为每个表调用ApplyLogonInfo。 因此,我将查看SetParameterValue是否正常工作。 您的通话顺序正确。


如果文本文件已经存在,并且无法覆盖旧文件,导出是否会失败? 如果已经保存了导出文本文件的副本,是否可以将其锁定,并且在尝试替换它时失败?


祝你好运

Brian

能不能别闹
6楼-- · 2020-09-10 00:59

嗨Zach,

除了使用ADO连接外,我的代码与您的代码非常相似。 调用ExportToDisk方法以输出PDF或其他任何格式的文件时,我遇到了问题。 您能否让我知道您为减轻这种情况做了什么?

使用" 2"参数调用" ExportToDisk"的异常:"缺少参数值"。 在\\ vch.ca \ home $ \ HomeDir02 \ WHu \ Profile \ Desktop \ iSchedulerAutomation \ PScall \ ps_crystal_to_pdf.ps1:18 char:1 + $ report.ExportToDisk(" PortableDocFormat"," C:\ CR_test \ no parem .pdf ")

 
 [reflection.assembly] :: LoadWithPartialName('CrystalDecisions.Shared')
 [reflection.assembly] :: LoadWithPartialName('CrystalDecisions.CrystalReports.Engine')


 $ report =新对象CrystalDecisions.CrystalReports.Engine.ReportDocument
 $ report.Load(" C:\ CR_test \ CVC-Report-Monthly_whu4.rpt")
 #$ report.Load(" C:\ CR_test \ iScheduler Endpoints.rpt")
 $ report.SetDatabaseLogon('dbuser','dbpswd')

 $ fromDate = Get-Date -format" dd/MM/yyyy"
 $ toDate =(获取日期).addDays(-365).ToString(" dd/MM/yyyy")

 $ report.SetParameterValue(" FromDate",$ fromDate)
 $ report.SetParameterValue(" ToDate",$ toDate)

 $ report.ExportToDisk(" PortableDocFormat"," C:\ CR_test \ no parem.pdf")

 $ report.close()

 

谢谢

Bill

闻人可可
7楼-- · 2020-09-10 00:46

Eric,

我正在处理的问题与您的问题有些不同。 仍尝试使用PowerShell导出报告,但我尝试更新报告并保存。 最近2星期我一直在尝试,但无法解决问题。 也许你可以帮我。 希望您阅读此消息。

谢谢。

一周热门 更多>