도와주세요. Crystal Reports xi를 사용하여 만든 보고서를 열 수있는 스윙 응용 프로그램을 개발 중입니다. 내가하려고하는 것은 보고서를 열고 보고서의 연결 정보를 전달하여 보고서의 데이터베이스를 동적으로 변경할 수 있도록하는 것입니다. 그러나 어떤 이유로 그것은 작동하지 않으며 보고서는 처음에 설정된 데이터베이스에서 정보를 생성합니다. 누군가 내가 뭘 잘못했는지 말해 줄 수 있습니까? Btw 내가 com.crystaldecisions.sdk.occa.report.application.ReportClientDocument를 사용하려고하면 서버를 찾을 수 없다는 오류가 발생합니다. 하지만 import com.crystaldecisions.reports.sdk.ReportClientDocument를 사용하려고 할 때; 작동하지 않습니다. 나는 보고서 서버가 무엇인지 모르며 컴퓨터에서 설정했다고 생각하지 않습니다. 도와주세요. 여기 내 코드는 다음과 같습니다.자바 스윙을 사용하여 크리스탈 보고서에서 런타임시 데이터베이스 연결을 전환하는 방법
import com.crystaldecisions.sdk.occa.report.application.ReportClientDocument;
ReportClientDocument rpt = new ReportClientDocument();
rpt.open(reportPath+fileName, 0);
Fields fields = null;
IConnectionInfo connInfo = rpt.getDatabaseController().getConnectionInfos(null).getConnectionInfo(0);
PropertyBag innerProp = connInfo.getAttributes();
innerProp.clear();
PropertyBag propertyBag = new PropertyBag();
propertyBag.put("Server Type", "JDBC (JNDI)");
propertyBag.put("Database DLL", "crdb_jdbc.dll");
propertyBag.put("Database Class Name", "com.mysql.jdbc.Driver");
propertyBag.put("Use JDBC", "true");
propertyBag.put("Server Name", DBConnect.getServer());
propertyBag.put("Generic JDBC Driver Behavior", "No");
propertyBag.put("URI", "!com.mysql.jdbc.Driver!jdbc:mysql://"+DBConnect.getServer()+":"+DBConnect.getPort()+"/"+DBConnect.getDatabase()+"!ServerType=29!QuoteChar=`");
connInfo.setAttributes(innerProp);
connInfo.setPassword(DBConnect.getPassword());
connInfo.setUserName(DBConnect.getUsername());
int replaceParams = DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB;
rpt.getDatabaseController().replaceConnection(rpt.getDatabaseController().getConnectionInfos(null).getConnectionInfo(0), connInfo, fields, replaceParams);
내 실수. 그러나 실제로이 코드를 수정 된 propertyBag와 함께 사용하면 serverNotFound 오류가 발생합니다. 그것에 대한 도움이 필요하십니까? – John
아마도 DBConnect에 문제가있을 수 있습니다. – tibtof
제 DBConnect가 정상적으로 작동합니다. 나는 그것에 의존하는 다른 클래스들을 가지고있다. 이 정확한 오류 메시지는 다음과 같습니다. com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException : 서버가 지정되지 않았습니다. 오류 코드 : -2147217390 오류 코드 이름 : serverNotFound. 내가 com.crystaldecisions.sdk.occa.report.application.ReportClientDocument com.crystaldecisions.reports.sdk.ReportClientDocument 대신 가져 오기를 사용할 때마다 항상 오류가 발생합니다. – John