Problem sous Crystal report

Problem sous Crystal report - PHP - Programmation

Marsh Posté le 16-05-2011 à 09:42:34    

Bonjour,
 
J'utilise Crystalreport dans PHP pour afficher des rapports directement sur une page web mais depuis que j'ai exporté la base sur un nouveau poste l'ouverture des rapports ne fonctionne plus et je ne trouve aucun moyen de le faire fonctionner :(
 
je travaille sous ORACLE en SQL et j'utilise WAMp pour créer une interface PHP utilisateur de manier à interagir simplement avec la BDD. Mais je rencontre une erreur PHP avec l'ouverture des rapports qui me bloque dans mon développement
 

Code :
  1. <?php
  2. session_start();
  3. include ("menu.php" );
  4. $param="";
  5. if (isset($_GET['param']))
  6. {//si ce rapport prend des paramètres
  7. if (isset($_POST['formuleCR']))
  8.     {//si nous avons déja la formule de selection
  9.  $param=stripslashes($_POST['formuleCR']);
  10.  //echo $param;
  11.  //on ajoute le lien MODIFIER LES CRITERES DE SELECTION
  12.  ?>
  13.  <form method='post' action='param.php' name='param'>
  14.  <a href="#" onclick="document.forms[0].submit()"><br/><br/><center>MODIFIER LES CRITERES DE SELECTION</center></a>
  15.  <input type="hidden" value="<?php echo "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; ?>" name='url'>
  16.  </form>
  17.  <?php
  18. }
  19. else
  20.     {//sinon on bascule vers la page de selection
  21.  ?>
  22.  <form method='post' action='param.php' name='param'>
  23.  <body onLoad='document.forms[0].submit()'>
  24.  <input type="hidden" value="<?php echo "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; ?>" name='url'>
  25.  </form>
  26.  <?php
  27.  exit;//et on arrete l'execution de cette page
  28. }
  29. }
  30. set_time_limit(0);
  31. //Récupération du chemin de la page php en cours
  32. $path=$_SERVER['SCRIPT_FILENAME'];
  33. //echo $path;
  34. //echo '<br/>';
  35. //Transformation du chemin pour accéder au rapport
  36. $rpt=str_replace("Crystal.php", "Rapports/".$_GET['rap'].".rpt", $path);
  37. echo $rpt;
  38. com_load_typelib("objectfactory.dll" );
  39. $ObjectFactory= New COM("CrystalReports12.ObjectFactory.1" );
  40. $crapp = $ObjectFactory->CreateObject("CrystalRunTime.Application" );
  41. $creport = $crapp->OpenReport($rpt, 1);// on ouvre le rapport


 
 
dans ma page PHP j'obtient le code erreure suivant :

Citation :

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in C:\wamp\www\CG92\Crystal.php:41 Stack trace: #0 C:\wamp\www\CG92\Crystal.php(41): com->CreateObject('CrystalRunTime....') #1 {main} thrown in C:\wamp\www\CG92\Crystal.php on line 41


 
Merci d'avance

Reply

Marsh Posté le 16-05-2011 à 09:42:34   

Reply

Marsh Posté le 16-05-2011 à 10:10:01    

Le message dit que Crystal Report n'est pas correctement installé sur le poste de l'utilisateur. Il manque au moins un élément.

Reply

Marsh Posté le 16-05-2011 à 11:35:25    

j'ai pourtant installe Crystal report  sur mon poste avec las 2 CD fournit dans le logiciel.

Reply

Marsh Posté le 16-05-2011 à 13:06:10    

L'élément manquant semble être "Source".
Or ce mot "Source" est souvent utilisé dans les configurations pour indiquer un chemin vers quelque chose.
Par exemple, si Crystal Report accède à la base de données via ODBC, il faudrait créer une "Source ODBC" sur le poste.
Ou bien c'est peut-être autre chose.

Reply

Marsh Posté le 16-05-2011 à 14:13:04    

j'ai réinstallé  runtime sur mon poste et apparemment sa passe mais j'ai une autre erreurs un peut plus loin dans le code
 
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Crystal Reports ActiveX Designer<br/><b>Description:</b> Echec de la connexion. Détails : [Code du fournisseur de la base de données : 12170 ]' in C:\wamp\www\CG92\Crystal.php:99 Stack trace: #0 C:\wamp\www\CG92\Crystal.php(99): variant->ReadRecords() #1 {main} thrown in C:\wamp\www\CG92\Crystal.php on line 99
 
je te donne l’intégralité du code :

Code :
  1. $ObjectFactory= New COM("CrystalReports11.ObjectFactory.1" );
  2. $crapp = $ObjectFactory->CreateObject("CrystalRunTime.Application" );
  3. $creport = $crapp->OpenReport($rpt, 1);// on ouvre le rapport
  4. if ($creport->Database->Tables->Count>0)
  5. {//s'il contient des tables
  6.  $creport->Database->Tables->Item(1)->ConnectionProperties['User ID'] =  $_SESSION['login'];//on met les infos de connection
  7.  $creport->Database->Tables->Item(1)->ConnectionProperties['Password'] = $_SESSION['pass'];
  8. }
  9. //on rafraichit le rapport
  10. $creport->EnableParameterPrompting = 0;
  11. $creport->DiscardSavedData;//on efface les infos du rapport
  12. $creport->ReadRecords();//on lit les infos
  13. $pdf=str_replace("Crystal.php", "PDF/".$_GET['rap'].".pdf", $path);
  14. $creport->ExportOptions->DiskFileName = $pdf;//nom du fichier
  15. $creport->ExportOptions->PDFExportAllPages=true;//propriété du document, toutes les pages sont exportés dans un seul pdf
  16. $creport->ExportOptions->DestinationType=1;//type de document (1=fichier)
  17. $creport->ExportOptions->FormatType=31; //type de document (html=32 pdf=31 rtf=4)
  18. $creport->Export(false);//on démarre l'exportation
  19. $creport = null;
  20. $crapp = null;
  21. $ObjectFactory = null;
  22. set_time_limit(max_execution_time);


 
la ligne 99 du code erreurs correspond a :
$creport->ReadRecords();//on lit les infos
 
Un problème d’accès a la BDD pourtant dans le reste de la page PHP ma BDD fonctionne bien les liste déroulante sont bien remplie avec les éléments de la BDD.
 
si quelqu’un a une idée ?

Reply

Marsh Posté le 16-05-2011 à 14:52:10    

Je n'ai pas beaucoup utilisé Crystal report, et peut-être que je me trompe, mais il me semble qu'il faut configurer Crystal Report pour qu'il aille chercher ses données par un certain chemin, et que ce n'est pas nécessairement le même chemin que pour l'accès via les fonction PHP ordinaires (ce qui expliquerait pourquoi les listbox sont bonnes et pas le report). Je pense (depuis le début) que ce serait un problème du style "source de données ODBC" qu'il faut définir sur le poste, ou "connection string" à définir ou à adapter. Donc ce serait un problème annexe à l'installation puisque ce serait un problème de "configuration" de l'environnement. Est-ce que vous utilisez ODBC ? Est-ce que vous savez ce qu'est la définition d'une source ODBC (attention, il est possible qu'il faille les droits administrateur) ? Est-ce que vous savez comment configurer Crystal Report ?

Reply

Marsh Posté le 16-05-2011 à 15:06:03    

Je ne vois pas ce que tu veut dire par ODBC j'ai mis la BDD sous ORACLE expresse 11g et je développe en PHP via wamp en localhost.Tu sait moi je suis développeur C/C++ alors les BDD et le PHP je ni connait pas grand chose en plus je reprend le code de mon prédécesseur alors je suis un peut dans le flou total, je vai regarder pour une configuration de crystal

Reply

Marsh Posté le 16-05-2011 à 15:51:25    

Oracle peut être accédé par plusieurs moyens : ODBC, tnsmane, etc.
 
En tous cas, sauf erreur (et en attendant qu'une autre personne connaissant mieux Crystal Report que moi réponde), il me semble qu'il faut indiquer à Crystal Report quel est le nom de la base de données, du schéma, etc., parce que Crystal Report ne peut pas deviner ces choses-là tout seul.

Reply

Marsh Posté le 18-05-2011 à 10:55:34    

Après quelques recherches de mon coté et quelques tentatives infructueuses,
 
je réexplique mon problème, je travaille sous oracle expresse édition 11g et j'utilise un outil de crystalrepports pour visualiser les .rpt dans mon application PHP. Seulement lorsque j'ouvre un rapport j’obtiens l’erreur suivante :échec de la connexion. Détails : [Code du fournisseur de la base de données : 12170 ]'
ou Échec de la connexion. Détails : [Code du fournisseur de la base de données : 12154 ]'
je pense qu'il y a un problème de connexion avec la BDD oracle si quelqu'un a une idée ou a déjà rencontré ce problème.
 
merci d'avance cela fait plusieurs jours que je bloque sur ce problème


Message édité par Farow le 18-05-2011 à 10:56:15
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed