要在BO服务器中找到Crystal报告的位置,你可以尝试以下解决方法:
import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
import com.crystaldecisions.sdk.occa.infostore.CePropertyID;
import com.crystaldecisions.sdk.occa.infostore.IDestinationPlugin;
import com.crystaldecisions.sdk.occa.infostore.IInfoObject;
import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
import com.crystaldecisions.sdk.occa.infostore.IPlugin;
public class ReportLocationFinder {
public static void main(String[] args) {
String boServerUrl = "http://yourBOServer";
String boUsername = "yourUsername";
String boPassword = "yourPassword";
String reportName = "yourReportName";
try {
// 创建BO服务器会话
IEnterpriseSession enterpriseSession = CrystalEnterprise.getSessionMgr().logon(boUsername, boPassword, boServerUrl, "secEnterprise");
// 获取报告对象
IInfoObjects infoObjects = (IInfoObjects) enterpriseSession.getService("InfoStore").query("SELECT SI_ID, SI_NAME FROM CI_INFOOBJECTS WHERE SI_KIND='CrystalReport' AND SI_NAME='" + reportName + "'");
if (infoObjects.size() > 0) {
IInfoObject reportObject = (IInfoObject) infoObjects.get(0);
String reportLocation = reportObject.properties().getProperty(CePropertyID.SI_PROGID).getValue().toString();
System.out.println("Report location: " + reportLocation);
} else {
System.out.println("Report not found");
}
// 注销BO服务器会话
enterpriseSession.logoff();
} catch (Exception e) {
e.printStackTrace();
}
}
}
请注意,上述代码示例假设您已经安装了BO SDK并配置了适当的依赖项。您还需要将代码中的"yourBOServer"、"yourUsername"、"yourPassword"和"yourReportName"替换为您的BO服务器URL、用户名、密码和要查找位置的报告名称。
运行此代码示例将打印报告的位置信息。