0

Crystal レポートはすべてビジネス オブジェクト サーバーに公開されます。

それらはすべて Business Views オブジェクトに接続されています。

これらのビジネス ビューはすべて、同じ動的データ接続を使用します。

これにより、レポートにこの動的データ接続パラメーターが含まれるようになります。

このパラメータは、セントラル管理コンソールから変更できます。

しかし今は、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();
    }


}

何か案が ?ありがとう、

4

1 に答える 1

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();
}
于 2013-12-18T19:00:45.123 に答える