WebIntelligenceレポートのクエリーの生成したSQLの取得、設定の際に使用するAPIの使用方法についてご教示いただけませんでしょうか。
SQLの取得に「SQLSelectStatement」インタフェースの「getSQL」メソッド、設定に「setSQL」メソッドを使用したいと考えております。
BOXIR2のWebサイト「Developer Library」と下記のスレッドを参考にソースを作成しましたが正しく動作しません。
スレッド:How to purge report data before deployment on target server
-
作成したソースです----
package test;
import="com.crystaldecisions.sdk.framework.*;
import="com.crystaldecisions.sdk.exception.SDKException;
import="com.crystaldecisions.sdk.occa.infostore.*;
import="com.businessobjects.rebean.wi.*;
class test {
public static void main(String[] args) {
test t = new test();
t.execute();
}
public void execute() {
try {
//logon
ISessionMgr mySessionMgr = CrystalEnterprise.getSessionMgr().logon( XXXX, XXXX, XXXX, XXXX);
System.out.println("Logon");
//ReportEngineの取得
ReportEngines repEngines = (ReportEngines)enterpriseSession.getService("ReportEngines");
ReportEngine widocRepEngine = (ReportEngine)repEngines.getService(ReportEngines.ReportEngineType.WI_REPORT_ENGINE);
//DocIDよりドキュメントオープン
DocumentInstance doc = widocRepEngine.openDocument(XXXX);
//DataProvider取得
DataProviders dataps = doc.getDataProviders();
DataProvider datap = dataps.getItem(0);
SQLdataProvider sqldatap = (SQLDataProvider)datap;
SQLContainer sqlcont = sqldatap.getSQLContainer();
SQLNode sqlnod = (SQLNode)sqlcont.getChildAt(0);
SQLSelectStatement sqlSelects = (SQLSelectStatement)sqlnod;
//SQLの取得
String strsql = sqlSelects.getSQL();
System.out.println(strsql);
doc.closeDocument();
}
catch(SDKException e)
{
System.out.println("エラー発生");
}
}
-
※上記ソース中のログインアカウント情報、DocID情報は「X」でマスクしています。
上記では任意のWebIntelligenceドキュメントを開き、クエリーの作成したSQLを取得しようとしています。
しかし「SQLDataProvider」インタフェースの「getSQLContainer」メソッドにより「SQLContainer」インスタンスを取得する際に「ERR_WIS_30270」(参照情報が無効であるときに発生するエラーメッセージです)が発生してしまいます。
「DataProvider」インスタンスを「SQLDataProvider」にキャストし、サブインタフェースである「SQLDataProvider」クラスの「getSQLContainer()」メソッドを呼んでいるので、上記エラーメッセージの示唆するところは当然な気がしますが、正しく動作させる方法に至りませんでした。
【環境】
サーバOS:Windows Server 2003 Enterprise Edition
BOVer: BOXI3.0
インタフェース:Java
Webアプリケーションサーバ:WebLogic Server version10.0
SAPノートに関してはアカウントを所持していないので確認できていません。
SAPのサイトより提供されるPDFファイル(日本語、英語)、BOXIR2のWebサイト「Developer Library」内より情報を探していたところ、BOXIR2以降で非推奨APIに挙げられている「Query」インタフェースの「getSQL()」メソッドでの実装資料はいくつか見つかりましたが、上記APIによる実装手順を見つけるに至りませんでした。
どうぞ宜しくお願い致します。
Edited by: shinkichi ehara on Oct 22, 2008 8:17 AM