0

ビジネス オブジェクト サーバーからスケジュールされたレポートのみをダウンロードする必要がある Java アプリケーションを実行しています。レポートをスケジュールするために、次の方法で情報ビューを使用しています

1) レポートをクリックします 2) アクション --> スケジュール 3) 繰り返し、形式、送信先を設定します

レポートには、インスタンスがゼロのスケジュールされていないレポートとは対照的に、多数のインスタンスがあります。

コードでは、私が使用しているスケジュールされたレポートを個別に

com.crystaldecisions.sdk.occa.infostore.ISchedulingInfo

IInfoObject ifo = ((IInfoObject) result.get( i ))
ISchedulingInfo sche = ifo.getSchedulingInfo();

これは、スケジューリングに関する情報を提供するはずですか?しかし、何らかの理由で、これはスケジュールされていないレポートに対してオブジェクトを返しています( nullではなく、どのように返すべきだと思いますか) 。また、そのメソッド (getBeginDate、getEndDate など) によって返される情報は、両方の種類で似ています。

SI_CHILDREN > 0クエリを使用してレポートをフィルタリングしようとしました

SELECT * FROM CI_INFOOBJECTS WHERE SI_PROGID = 'CrystalEnterprise.Webi' "
+ AND SI_CHILDREN > 0  AND SI_PARENTID = " + String.valueOf( privateFolderId )
+ " ORDER BY SI_NAME ASC "

これはスケジュールされたレポートをフィルタリングする正しい方法ですか?

4

2 に答える 2

1

スケジュールされたレポートには、スケジュール情報を保持し、スケジュールされたレポートを親として持つ子インスタンスがあります。(このインスタンスは、BI 起動パッドの履歴リストで確認できます。)

次のように、CMS から定期的にスケジュールされた子インスタンスを取得できます。

SELECT * FROM CI_INFOOBJECTS WHERE SI_PROGID = 'CrystalEnterprise.Webi' 
and si_recurring = 1 

これにより、実行がスケジュールされているレポート (より正確には、上記の子の「スケジュール」インスタンス) が分離されます。次に、子インスタンスで getSchedulingInfo() を呼び出して、このスケジューリングに関する詳細情報を取得できます。

上記のクエリによって返される SI_ID フィールドではなく、SI_PARENTID フィールドが最初の WebI レポートの ID を提供することに注意してください。

于 2014-05-20T08:04:47.830 に答える