繁体   English   中英

如何在Crystal Reports XI中将参数传递给子报表

[英]How To Passing Parameter to Subreport in Crystal Reports XI

我有一个.rpt,它是从Crystal Reports XI中的空白报告创建的。 主报表只是一个简单的选择查询,可以提示1个参数,子报表是查询列之一的成员(在这种情况下,我想为每个部门的员工详细信息创建一个子报表)。

问题是,子报表必须接收另外两个完全不链接到主报表的参数。 我尝试了一种正常的方式来一个接一个地接收参数,但出现错误:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

我知道这是因为报表(.rpt)只想从主报表中只接收1个参数,因为它在主报表查询中只需要1个参数。

这是我分配参数的方法(我在jsp scriplet中使用它):

/**
 * Modify the crystal report document current value parameters.
 *
 * @param paramIndex the index position of the parameter.
 * @param valContent the value content for the parameter.
 * @param clientDoc the ReportClientDocument object.
 */
public void setDocParameter(int paramIndex, String valContent, ReportClientDocument clientDoc)
   throws ReportSDKException {
ParameterField newParameterField = null;
ParameterFieldDiscreteValue newDiscreteValue = null;

// Get the copy of the param object.
newParameterField = new ParameterField();
((ParameterField)clientDoc.getDataDefinition().getParameterFields().getField(paramIndex)).copyTo(
    newParameterField, true);

System.out.println(paramIndex);
// Set Discrete value.
newDiscreteValue = new ParameterFieldDiscreteValue();
newDiscreteValue.setValue(valContent);

// Set ParameterField with the Discrete value.
newParameterField.getCurrentValues().add(newDiscreteValue);

    // Modify with the new ParameterField
clientDoc.getDataDefController().getParameterFieldController().modify(
        (IParameterField)      clientDoc.getDataDefinition().getParameterFields().getField(paramIndex)
        , newParameterField);
}

将多个值传递给主报表查询都很好,但是当我想将其传递给子报表查询时,它不起作用并显示数组索引超出范围(因为它无法识别出子报表需要也有一些价值)

有人可以以什么方式帮助我做我想做的最佳实践? 我可以通过使用分组方式而不是使用子报表以一种简单的方式来完成此操作,但是我想先尝试使用子报表。 对不起,我的提问方式不好,我只是一个代码新手。 谢谢。

我建议仍然从主报表中传递参数,即使它不是真的来自那里。 只需在主报表上创建2个新参数,然后将参数从主报表传递到子报表即可。 并以相同的方式使用代码将c#中的值获取到水晶对象中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM