参数值在Crystal Reports中不起作用

2020-09-10 16:52发布

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

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


我有一份报告,希望显示1位客户的详细信息。 我创建了一个参数Name = CustomerNumber,Type = Number,值列表= Static。 然后,我使用Select Expert创建以下公式:{CustomerMaster.CUST_NUM} = {?CustomerNumber}

我正在使用 VB.Net (VS2017),这是我正在使用的代码:

将CrxReport用作新的CrystalDecisions.CrystalReports.Engine.ReportDocument

Dim strReportName作为字符串Dim crParameterValues作为CrystalDecisions.Shared.ParameterValues

将crParameterDiscreteValue设置为CrystalDecisions.Shared.ParameterDiscreteValue

将crParameterFieldDefinitions设置为ParameterFieldDefinitions

将crParameterFieldDefinition设置为ParameterFieldDefinition strReportName =" rptTest.rpt"

CrxReport.Load(strReportName,CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)

crParameterDiscreteValue =新的CrystalDecisions.Shared.ParameterDiscreteValue

crParameterValues =新的CrystalDecisions.Shared.ParameterValues

crParameterDiscreteValue.Value = 1008

crParameterFieldDefinitions = CrxReport.DataDefinition.ParameterFields

crParameterFieldDefinition = crParameterFieldDefinitions.Item(" CustomerNumber")

crParameterValues = crParameterFieldDefinition.CurrentValues

crParameterValues.Clear()

crParameterValues.Add(crParameterDiscreteValue)crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)CrxReport.ParameterFields.Item(" CustomerNumber")。DefaultValues = crParameterValues

然后我有一个例程,该例程仅用查看者来调用表单:

私人子DisplayReport(ByVal CrxReport为CrystalDecisions.CrystalReports.Engine.ReportDocument,ByVal reportDesc为字符串)

将objfrmRptViewer变暗为新的frmRptViewer

CrxReport.Refresh()

objfrmRptViewer.CRViewer.ReportSource = CrxReport

objfrmRptViewer.CRViewer.RefreshReport()

objfrmRptViewer.CRViewer.ShowExportButton = True

objfrmRptViewer.CRViewer.ShowPrintButton = True

objfrmRptViewer.CRViewer.ShowGroupTreeButton = True

objfrmRptViewer.Text = reportDesc

objfrmRptViewer.Show()

objfrmRptViewer.WindowState = FormWindowState.Maximized

objfrmRptViewer.CRViewer.Zoom(100)

objfrmRptViewer =否

结束子

该报告会运行,但会显示所有客户,而不是我选择的那个客户。

预先感谢您的帮助。

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

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


我有一份报告,希望显示1位客户的详细信息。 我创建了一个参数Name = CustomerNumber,Type = Number,值列表= Static。 然后,我使用Select Expert创建以下公式:{CustomerMaster.CUST_NUM} = {?CustomerNumber}

我正在使用 VB.Net (VS2017),这是我正在使用的代码:

将CrxReport用作新的CrystalDecisions.CrystalReports.Engine.ReportDocument

Dim strReportName作为字符串Dim crParameterValues作为CrystalDecisions.Shared.ParameterValues

将crParameterDiscreteValue设置为CrystalDecisions.Shared.ParameterDiscreteValue

将crParameterFieldDefinitions设置为ParameterFieldDefinitions

将crParameterFieldDefinition设置为ParameterFieldDefinition strReportName =" rptTest.rpt"

CrxReport.Load(strReportName,CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)

crParameterDiscreteValue =新的CrystalDecisions.Shared.ParameterDiscreteValue

crParameterValues =新的CrystalDecisions.Shared.ParameterValues

crParameterDiscreteValue.Value = 1008

crParameterFieldDefinitions = CrxReport.DataDefinition.ParameterFields

crParameterFieldDefinition = crParameterFieldDefinitions.Item(" CustomerNumber")

crParameterValues = crParameterFieldDefinition.CurrentValues

crParameterValues.Clear()

crParameterValues.Add(crParameterDiscreteValue)crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)CrxReport.ParameterFields.Item(" CustomerNumber")。DefaultValues = crParameterValues

然后我有一个例程,该例程仅用查看者来调用表单:

私人子DisplayReport(ByVal CrxReport为CrystalDecisions.CrystalReports.Engine.ReportDocument,ByVal reportDesc为字符串)

将objfrmRptViewer变暗为新的frmRptViewer

CrxReport.Refresh()

objfrmRptViewer.CRViewer.ReportSource = CrxReport

objfrmRptViewer.CRViewer.RefreshReport()

objfrmRptViewer.CRViewer.ShowExportButton = True

objfrmRptViewer.CRViewer.ShowPrintButton = True

objfrmRptViewer.CRViewer.ShowGroupTreeButton = True

objfrmRptViewer.Text = reportDesc

objfrmRptViewer.Show()

objfrmRptViewer.WindowState = FormWindowState.Maximized

objfrmRptViewer.CRViewer.Zoom(100)

objfrmRptViewer =否

结束子

该报告会运行,但会显示所有客户,而不是我选择的那个客户。

预先感谢您的帮助。

付费偷看设置
发送
4条回答
代楠1984
1楼 · 2020-09-10 17:46.采纳回答

你好Eddie,

我将VS的主要标签更改为CR。

CR不再安装.NET运行时。

转到此处获取最新信息并阅读所有内容:

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

在该页面上是我编写的用于处理参数的测试应用,它是C#,但工作方式相同:

how-to- 视觉工作室的晶体报告中的参数

Don

d56caomao
2楼-- · 2020-09-10 17:28

Hi Don,

感谢您的回答,但是您发送给我的示例与我所做的完全不同吗? 我的代码不再使用了吗? 您有简单传递参数的示例吗?

谢谢

天桥码农
3楼-- · 2020-09-10 17:28

我的示例在C#中,尽管工作流程相同,但是您将在调试模式下运行以查看发生了什么。

Don 不会在查看器中刷新报表,您将使之前设置的所有值都为空。

然后设置值,然后将其清除:

crParameterDiscreteValue.Value = 1008

crParameterValues.Clear()

wang628962
4楼-- · 2020-09-10 17:39

Hi Don,

再次感谢您的回答,我会尝试看看是否是这样。

我想逐步执行您的程序,但是我无法运行它,好像我缺少资源吗? 尝试运行(VS2017)时出现以下错误。

错误CS0234类型或名称空间名称'ObjectFactory'在名称空间中不存在。

在下一行(25)

使用CrystalDecisions.ReportAppServer.ObjectFactory;

与下一行(26)相同

使用CrystalDecisions.ReportAppServer.Prompting;

一周热门 更多>