Bonjour,

je suis actuellement sur une projet java qui doit renseigner des bases de données et ensuite utiliser ces données pour l'affichage des rapports.

En ce qui concerne la connexion à la base de données, pas de problème ça fonctionne bien. Par contre, sur le partie affichage du crystal report, j'ai un petit soucie.

Lorsque je demande un affichage d'un crystal report, j'obtiens l'exception suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 detected an exception: Erreur lors de la recherche du nom JNDI (database.mdb)
	at com.crystaldecisions.reports.queryengine.Connection.t1(SourceFile:2982)
	at com.crystaldecisions.reports.dataengine.dfadapter.DFAdapter.a(SourceFile:696)
	at com.crystaldecisions.reports.dataengine.dfadapter.DFAdapter.for(SourceFile:706)
	at com.crystaldecisions.reports.reportdefinition.ReportHelper.a(SourceFile:198)
	at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.long(SourceFile:957)
	at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.a(SourceFile:984)
	at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.byte(SourceFile:218)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1909)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(SourceFile:661)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:167)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(SourceFile:529)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(SourceFile:527)
	at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(SourceFile:525)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:424)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:352)
	at com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
	at com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
	at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(SourceFile:716)
	at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
	at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
	at com.crystaldecisions.sdk.occa.report.application.ds.a(SourceFile:186)
	at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:1558)
	at com.crystaldecisions.sdk.occa.report.application.ReportSource.getPage(SourceFile:767)
	at com.crystaldecisions.sdk.occa.report.application.AdvancedReportSource.getPage(SourceFile:324)
	at com.businessobjects.crystalreports.viewer.core.rs.RSRecordSource.openInputStream(Unknown Source)
	at com.businessobjects.crystalreports.viewer.core.TSLVReader.a(Unknown Source)
	at com.businessobjects.crystalreports.viewer.core.TSLVReader.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Erreur lors de la recherche du nom JNDI (database.mdb)
En regardant bien, il trouve le lien vers la base de données dans le fichier rpt.
Comment puis-je faire pour qui utilise le lien DSN de ma base?

PS: j'utilise eclipse, les jar fournis par business intelligence et las basee de données est une base access

Edit:
j'ai un peu avancé.
En faite mon erreur était due au faite que je ne précisait pas le driver JDBC à utiliser ainsi que les localisation de la base de donnée.
J'ai donc ajouter ces éléments grâce à la méthode généré automatiquement par le plug-in de business object d'eclipse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
         * Changes the DataSource for each Table
         * 
         * @param clientDoc
         *            The reportClientDocument representing the report being used
         * @param username
         *            The DB logon user name
         * @param password
         *            The DB logon password
         * @param connectionURL
         *            The connection URL
         * @param driverName
         *            The driver Name
         * @param jndiName
         *            The JNDI name
         * @throws ReportSDKException
         */
	public static void changeDataSource(ReportClientDocument clientDoc,
			String username, String password, String connectionURL,
			String driverName, String jndiName) throws ReportSDKException
.

j'ai mis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 CRJavaHelper.changeDataSource(reportClientDocument, "", "",
				"jdbc:odbc:" + RecupData.getInstance().getLocal(),
				"sun.jdbc.odbc.JdbcOdbcDriver", "javax.naming.Name");
ou "jdbc:odbc:" + RecupData.getInstance().getLocal() est le lien DNS qui pinte sur ma base de données.

Mais maintenant, j'ai l'exception:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Request failed and JRC Command failed to be undone detected an exception: java.lang.UnsupportedOperationException
	at sun.jdbc.odbc.JdbcOdbcDatabaseMetaData.getUDTs(Unknown Source)
	at com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCConnection.GetTables(Unknown Source)
	at com.crystaldecisions.reports.queryengine.JDBConnectionWrapper.GetTables(SourceFile:112)
	at com.crystaldecisions.reports.queryengine.Connection.be(SourceFile:1048)
	at com.crystaldecisions.reports.queryengine.Table.bv(SourceFile:2296)
	at com.crystaldecisions.reports.queryengine.Table.a(SourceFile:581)
	at com.crystaldecisions.reports.queryengine.Table.u7(SourceFile:2405)
	at com.crystaldecisions.reports.dataengine.datafoundation.AddDatabaseTableCommand.new(SourceFile:529)
	at com.crystaldecisions.reports.common.CommandManager.a(SourceFile:71)
	at com.crystaldecisions.reports.common.Document.a(SourceFile:203)
	at com.businessobjects.reports.sdk.requesthandler.f.a(SourceFile:175)
	at com.businessobjects.reports.sdk.requesthandler.DatabaseRequestHandler.byte(SourceFile:1079)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1167)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(SourceFile:661)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:167)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(SourceFile:529)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(SourceFile:527)
	at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(SourceFile:525)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:424)
	at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:352)
	at com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
	at com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
	at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(SourceFile:716)
	at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
	at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
	at com.crystaldecisions.sdk.occa.report.application.ds.a(SourceFile:186)
	at com.crystaldecisions.sdk.occa.report.application.an.a(SourceFile:108)
	at com.crystaldecisions.sdk.occa.report.application.b0.if(SourceFile:148)
	at com.crystaldecisions.sdk.occa.report.application.b0.b(SourceFile:95)
	at com.crystaldecisions.sdk.occa.report.application.bb.int(SourceFile:96)
	at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.performDo(SourceFile:151)
	at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.a(SourceFile:106)
	at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:2159)
	at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:543)
	at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:3898)
	at com.crystaldecisions.sdk.occa.report.application.DatabaseController.setTableLocation(SourceFile:2906)
	at fcf.visualisationEtat.CRJavaHelper.changeDataSource(CRJavaHelper.java:209)
	at fcf.visualisationEtat.CRJavaHelper.changeDataSource(CRJavaHelper.java:84)
	at fcf.visualisationEtat.SampleViewerFrame.setDatabaseLogon(SampleViewerFrame.java:193)
	at fcf.visualisationEtat.SampleViewerFrame.showReport(SampleViewerFrame.java:133)
	at fcf.visualisationEtat.SampleViewerFrame.showViewer(SampleViewerFrame.java:104)
	at fcf.visualisationEtat.EditionClient.mouseClicked(EditionClient.java:243)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.List.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Pourriez vous m'aider s'il vous plait.