点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我创建了一个包含一个子报告的报告。 当我在Crystal Reports中预览报表时,一切运行正常。
当我从VB代码中触发报表以在CRViewer中预览报表时,我收到一条消息"参数不正确"。 我的子报表链接到主报表,并且如果我在Crystal中预览一切都很好,请包括数据。 子报表仅链接到主报表的一个字段上。
glbReport = App_Path()&" Reports \ Pick.rpt" glbFmlaText =" {picklist.cpnyid} ='"&glbCpnyId&"'和{picklist.pastelref} ='"&sKey&"'" report.Load(glbReport,CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault) frmReport.ViewReport(glbReport,glbFmlaText,"") frmReport.ShowDialog()
好友函数ViewReport(ByVal sReportName作为字符串,可选的ByVal sSelectionFormula作为String ="",可选的ByVal param作为String ="")作为布尔值 Dim intCounter为整数 Dim intCounter1为整数 将objReport变暗为新的CrystalDecisions.CrystalReports.Engine.ReportDocument 将Dim paraValue作为新的CrystalDecisions.Shared.ParameterDiscreteValue Dim currValue作为CrystalDecisions.Shared.ParameterValues 将mySubReportObject调暗为CrystalDecisions.CrystalReports.Engine.SubreportObject 将mySubRepDoc设为新的CrystalDecisions.CrystalReports.Engine.ReportDocument 昏暗的strParValPair()作为字符串 Dim strVal()作为字符串 昏暗索引为整数 CrConn =新的CrystalDecisions.Shared.ConnectionInfo CrConn.ServerName = sServer CrConn.DatabaseName = sDatabase CrConn.IntegratedSecurity = True ConInfo =新的CrystalDecisions.Shared.TableLogOnInfo ConInfo.ConnectionInfo = CrConn 尝试 '加载报告 objReport.Load(sReportName,CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault) 'objReport.DataSourceConnections intCounter = objReport.DataDefinition.ParameterFields.Count 如果intCounter> 0,则 '以查看ID日期选择 将Dipar parFields设置为新的CrystalDecisions.Shared.ParameterFields 将Dim parField设置为新的CrystalDecisions.Shared.ParameterField Dim parRange作为新的CrystalDecisions.Shared.ParameterDiscreteValue parField.ParameterFieldName =" ReportDates"'Crystal报表中的参数名称 parRange.Value = glbFormula'参数字段的值 parField.CurrentValues.Add(parRange) parFields.Add(parField)'在parameterlist中添加参数 crViewer.ParameterFieldInfo = parFields 万一 如果intCounter = 1然后 如果InStr(objReport.DataDefinition.ParameterFields(0).ParameterFieldName,"。",CompareMethod.Text)> 0然后 intCounter = 0 万一 万一 '参数 如果intCounter> 0和Trim(param)<>""然后 strParValPair = param.Split("&") 对于索引= 0到UBound(strParValPair) 如果InStr(strParValPair(index)," =")> 0 strVal = strParValPair(index).Split(" =") paraValue.Value = strVal(1) currValue = objReport.DataDefinition.ParameterFields(strVal(0))。CurrentValues currValue.Add(paraValue) objReport.DataDefinition.ParameterFields(strVal(0))。ApplyCurrentValues(currValue) 万一 下一个 万一 对于intCounter = 0到objReport.Database.Tables.Count-1 objReport.Database.Tables(intCounter).ApplyLogOnInfo(ConInfo) 下一个 对于index = 0到objReport.ReportDefinition.Sections.Count-1 对于intCounter = 0到objReport.ReportDefinition.Sections(index).ReportObjects.Count-1 使用objReport.ReportDefinition.Sections(index) 如果.ReportObjects(intCounter).Kind = CrystalDecisions.Shared.ReportObjectKind.SubreportObject然后 mySubReportObject = CType(.ReportObjects(intCounter),CrystalDecisions.CrystalReports.Engine.SubreportObject) mySubRepDoc = mySubReportObject.OpenSubreport(mySubReportObject.SubreportName) 对于intCounter1 = 0到mySubRepDoc.Database.Tables.Count-1 mySubRepDoc.Database.Tables(intCounter1).ApplyLogOnInfo(ConInfo) 下一个 万一 结束于 下一个 下一个 如果sSelectionFormula.Length> 0,则 objReport.RecordSelectionFormula = sSelectionFormula 万一 crViewer.ReportSource =什么都没有 '将当前报告对象设置为要报告。 crViewer.ReportSource = objReport crViewer.Refresh() '显示报告 crViewer.Show() 返回真 捕获为System.Exception MsgBox(例如消息) 结束尝试 结束功能
现在战斗了几天。
(29.3 kB)
任何建议。 我有点被这个困扰。 谢谢
一周热门 更多>