【发布时间】:2012-05-21 03:23:25
【问题描述】:
我有这个代码
import com.crystaldecisions.reports.sdk.ReportClientDocument;
...
ReportClientDocument rpt = new ReportClientDocument();
rpt.open(reportPath+fileName, 0);
rpt.getDatabaseController().logon(DBConnect.getUsername(), DBConnect.getPassword());
Tables tables = rpt.getDatabaseController().getDatabase().getTables();
for(int i=0; i< tables.size(); i++){
System.out.print(i);
ITable table = tables.getTable(i);
IConnectionInfo connInfo = table.getConnectionInfo();
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("Connection String", DBConnect.getConnectionString());
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(propertyBag);
connInfo.setKind(ConnectionInfoKind.SQL);
table.setConnectionInfo(connInfo);
rpt.getDatabaseController().setTableLocation(table, tables.getTable(i));
我要做的是打开一个报表并将连接信息传递给该报表,以便我可以动态更改报表的数据库,但由于某种原因它无法正常工作,并且报表仍会从数据库中生成信息它最初是建立的。有人可以告诉我我做错了什么吗?这是一个摇摆应用程序,我正在使用水晶报表 XI。顺便说一句,我使用 com.crystaldecisions.reports.sdk.ReportClientDocument 而不是 com.crystaldecisions.sdk.occa.report.application.ReportClientDocument 因为当我使用另一个时,我得到一个找不到服务器错误。请帮忙。
【问题讨论】:
-
我看不出 Swing 是如何在其中真正发挥作用的,除非您可能需要注意在后台线程中调用此代码,否则创建报告的方式与从来自控制台程序的 Swing GUI。
-
我真的不明白。对不起。一切都很好,除了数据库部分的动态变化。
标签: java swing crystal-reports crystal-reports-xi