无法将int参数传递给Crystal Report

时间:2012-09-27 16:28:27

标签: c# visual-studio-2010 crystal-reports-xi

我有一个带有单个参数的简单Crystal Report,它应该在报表上生成一个项目。我列出了下面的代码,以及报告中的参数设置。当我尝试将报告打印到打印机时(代码片段中的最后一行),我收到以下异常;

CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException未处理   消息=缺少参数值。

我还使用ParameterFieldDefinitions和ParameterFieldDefinition对象尝试了报告,但最终得到了相同的结果。

非常感谢任何帮助。

        ReportDocument loReport = new ReportDocument();

        loReport.Load(path+"InventoryItemsBarCodeLabel.rpt");

        SqlConnectionStringBuilder loConnectionString = new SqlConnectionStringBuilder(ConnectionUtilities.getConnectionString());

        ParameterValues currentParameterValues = new ParameterValues();
        ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
        parameterDiscreteValue.Value = Convert.ToInt32(psMasterId);

        loReport.SetParameterValue("pnMasterId", parameterDiscreteValue.Value);
        loReport.SetDatabaseLogon(loConnectionString.UserID,
            loConnectionString.Password,
            loConnectionString.DataSource,
            loConnectionString.InitialCatalog);
        loReport.Refresh();
        loReport.PrintToPrinter(1, false, 1, 1);

报告参数:名称:pmMasterId,类型:数字,值列表:动态,值= MasterId,描述= MasterId,参数=?pnMasterId

报告选择记录:{Inventory_Items.MasterId} = {?pnMasterId}

2 个答案:

答案 0 :(得分:2)

尝试在设置参数之前移动SetDatabaseLogon()方法;我相信它会重置报告文件和以前通过的任何参数。

答案 1 :(得分:1)

您是否尝试过直接设置参数而不是使用Parameter对象?

loReport.SetParameterValue("pnMasterId", Convert.ToInt32(psMasterId));