我有一个带有单个参数的简单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}
答案 0 :(得分:2)
尝试在设置参数之前移动SetDatabaseLogon()方法;我相信它会重置报告文件和以前通过的任何参数。
答案 1 :(得分:1)
您是否尝试过直接设置参数而不是使用Parameter对象?
loReport.SetParameterValue("pnMasterId", Convert.ToInt32(psMasterId));