按代码设置报告的默认参数值

时间:2013-12-17 20:09:24

标签: java crystal-reports business-objects business-objects-sdk

我的所有水晶报告都在我的业务对象服务器上发布。

所有这些都连接到业务视图对象。

所有这些业务视图都使用相同的动态数据连接。

这使我的报告具有此动态数据连接参数。

我可以通过中央管理控制台更改此参数。

但现在我希望能够通过BO的SDK代码更改它。

我有这种方法,我认为接近实现我想要的,我只能保存更改。

        public static void updateParameter(IInfoObject report){

    // get all parameters
    try {
        IReport rpt = (IReport) report;
        int i = 0;
        IReportParameter params;
        for(i=0;i<rpt.getReportParameters().size();i++){
            params = (IReportParameter) rpt.getReportParameters().get(i);
            int y = 0;
            for(y=0;y<params.getCurrentValues().getValues(IReportParameter.ReportVariableValueType.STRING).size();y++){
                IParameterFieldDiscreteValue val = (IParameterFieldDiscreteValue) params.getCurrentValues().getValues(IReportParameter.ReportVariableValueType.STRING).getValue(y);
                if(val.getDescription().contains("Data Connection")){
                    val.setValue(boConstance.conn_EXAMPLE1);
                    val.setDescription(boConstance.desc_EXAMPLE1);
                    //save the new parameter ?????
                    System.out.println("report parameters modified");
                }
            }
        }

    } catch (SDKException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

任何想法?谢谢,

1 个答案:

答案 0 :(得分:0)

由于您已经设置了参数,因此您只需要在IReport本身上调用save方法即可。您不会直接保存参数,因为它们是属于报告的数据。

所以在for循环之后完成你的例子

try {
    IReport rpt = (IReport) report;
    int i = 0;
    IReportParameter params;
    for(i=0;i<rpt.getReportParameters().size();i++){
        // do for loop here setting the parameters
    }

    rpt.save();
} catch (SDKException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}