tengo este código¿Cómo abrir Crystal Report en la aplicación java swing?
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));
Qué Im tratando de hacer es abrir un informe y pasar la información de conexión a ese informe para que yo puede cambiar dinámicamente la base de datos del informe, pero por alguna razón no está funcionando y el informe aún produce la información de la base de datos que se configuró inicialmente. ¿Alguien puede decirme qué hice mal? Esta es una aplicación de swing y estoy usando Crystal Reports XI. Por cierto, estoy usando com.crystaldecisions.reports.sdk.ReportClientDocument en lugar de com.crystaldecisions.sdk.occa.report.application.ReportClientDocument porque cuando uso el otro, aparece el error "can not find server". Por favor ayuda.
No veo cómo Swing realmente desempeña ningún papel en esto, excepto quizás que deba tener cuidado de llamar a este código en una cadena de fondo, pero de lo contrario crear un informe se hace de la misma manera desde una GUI Swing que desde un programa de consola. –
Realmente no entendí eso. Lo siento. Todo está bien excepto por el cambio dinámico de la parte de la base de datos. – John