Depuis que j'utilise une version plus récente de JRC, un remplacement des informations de connexion à la base de données ne fonctionne plus. Je n'ai aucune idée pourquoi. Ce code fonctionnait avec une version JRC de l'automne dernier (malheureusement je n'ai pas de numéro de version) :
ReportClientDocument doc = new ReportClientDocument();
doc.open("report.rpt");
IDatabase db = null; // obtenir la base de données du sous-rapport
// nous allons écraser les informations de connexion à la base de données dans
// le rapport choisi.
Map bag = new HashMap();
bag.put("URL de connexion", "jdbc:oracle:thin:@LOCALHOST:1521:DATABASENAME");
bag.put("Type de serveur", "JDBC (JNDI)");
bag.put("DLL de base de données", "crdb_jdbc.dll");
bag.put("Nom de la classe de base de données", "oracle.jdbc.driver.OracleDriver");
for (Object table : db.getTables()) {
updateTable(dhb, dc, (ITable)table, bag);
}
...
private void updateTable(DatabaseController dc, ITable table,
Map bag) throws ReportSDKException {
ITable t = (ITable)table.clone(true);
LOGGER.debug(t.getName());
LOGGER.debug("1: " + t.getConnectionInfo().getAttributes());
IConnectionInfo connInfo = t.getConnectionInfo();
connInfo.setUserName("UtilisateurX");
connInfo.setPassword("xxxxx");
connInfo.setAttributes(new PropertyBag(bag));
// LOGGER.debug("Type de ConnInfo : " + connInfo.getKind());
t.setConnectionInfo(connInfo);
// t.setName(((ITable)table).getName());
t.setQualifiedName("UtilisateurX" + "." + table.getName());
dc.setTableLocation(table, t);
LOGGER.debug("2: " + t.getConnectionInfo().getAttributes());
}
Je reçois cette erreur : 'Fehler bei der Suche nach JNDI-Namen (UserY)'. Cela signifie que JRC ne peut pas trouver le nom JNDI donné.
Est-ce que quelqu'un connaît des changements entre ces versions de JRC? Et est-ce que quelqu'un connaît une solution?