【发布时间】:2015-11-29 09:50:24
【问题描述】:
我有一个 .rpt,它是从 Crystal Reports XI 中的空白报表创建的。 主报表只是一个简单的选择查询,可以提示1个参数,子报表是查询列之一的成员(在这种情况下,我想为每个部门的员工详细信息创建一个子报表)。
问题是,子报表必须接收另一个根本不链接到主报表的 2 参数。 我尝试了一种正常的方式来一个一个地接收参数,但是我得到一个错误:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
我知道这是因为报表 (.rpt) 只想从主报表中接收 1 个参数,因为它在主报表查询中只需要 1 个参数。
这是我分配参数的方法(我在 jsp 脚本中使用它):
/**
* 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);
}
将多个值传递给主报表查询一切正常,但是当我想将它传递给子报表查询时,它不起作用并显示数组索引超出范围(因为它没有识别出子报表也需要一些值)
有人可以帮助我做我想做的最佳实践吗?我可以通过使用 group by 而不使用子报表以简单的方式做到这一点,但我想先尝试子报表。抱歉我的提问方式不好,我只是一个代码新手。谢谢。
【问题讨论】:
-
你找到解决办法了吗?
标签: java jsp crystal-reports struts crystal-reports-xi