1

レポートで適切な列とデータを取得するために照会する必要があるファイルの名前であるパラメーターをレポートに渡すことで、オンデマンドでデータセットを作成したいと思います。 this.queryText 属性を編集するようなものを考えていました。 「this」は、その時点ではまだ作成されていないデータセットを表します。

それは可能ですか?

どうもありがとう。

4

1 に答える 1

1

これは、スクリプト化されたデータ セット イベント アダプタを使用していつでも記述できます。唯一の問題は、レポートの内容がこれらの名前を認識しないことです。その状況を処理するには、さらにコードを記述する必要があります。空のレポートを作成し、スクリプト化されたデータ ソースと列のないスクリプト化されたデータセットを追加すると、次のようなクラスにイベント ハンドラーを設定できます。

package my.event.handlers;

import org.eclipse.birt.report.engine.api.script.IScriptedDataSetMetaData;
import org.eclipse.birt.report.engine.api.script.IUpdatableDataSetRow;
import org.eclipse.birt.report.engine.api.script.eventadapter.ScriptedDataSetEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;

public class MyScriptedDataSetMeta extends ScriptedDataSetEventAdapter {

private Integer cnt=0;
private Integer cntT=3;

@Override
public boolean fetch(IDataSetInstance dataSet, IUpdatableDataSetRow row) {

    if( cnt < cntT){
        try{
            row.setColumnValue("col1", cnt);
            row.setColumnValue("col2", "hello");
            row.setColumnValue("A_Column", "jjj");

            cnt++;
            return true;
        }catch (Exception e){

        }
    }
    return false;
}

@Override
public boolean describe(IDataSetInstance dataSet,
        IScriptedDataSetMetaData metaData) {
    // TODO Auto-generated method stub
    metaData.addColumn("col1", Integer.class);
    metaData.addColumn("col2", String.class);
    metaData.addColumn("A_Column", String.class);

    return true;
}

}
于 2012-10-09T23:29:44.170 に答える