2

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

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}

4

2 回答 2

2

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

于 2012-09-27T16:46:51.413 回答
1

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

loReport.SetParameterValue("pnMasterId", Convert.ToInt32(psMasterId));
于 2012-09-27T17:00:51.827 回答