web-dev-qa-db-fra.com

Crystal Report ne s'ouvre pas pour les machines 64 bits

Mes rapports fonctionnent correctement sur une machine 32 bits, mais ne s’ouvrent pas en 64 bits. 64 bits est requis car le chargement de données sur l’un des écrans provoque un problème de mémoire. Il ne peut donc pas fonctionner en 32 bits.

  1. Windows 10 64 bits
  2. Rapports Crystal installés   J'ai essayé d'installer 13.0.20 (dernière) et de redémarrer l'ordinateur, mais cela ne fonctionnait pas.
  3. Application Target Framework 4.6.2 (je l'ai même essayé sur 4.0 mais avec la même erreur)
  4. Utilisation de Visual Studio 2017 Community (essayé VS 2015)
  5. Plateforme x64 (pas AnyCPU)
  6. Les rapports sont générés en passant par DataTable, pas de connexion active Ou ConnectionString dans les rapports
  7. Message d'erreur 

 enter image description here

Edit # 1

  1. Web.config inclut useLegacyV2RuntimeActivationPolicy="true"
  2. Les DataTables en x86 et x64 sont identiques  enter image description here

Edit # 2

Le code source pour afficher le rapport est 

CrystalDecisions.CrystalReports.Engine.ReportClass c = new 
    CrystalDecisions.CrystalReports.Engine.ReportClass();

c.FileName = System.IO.Path.Combine(Root_Path, 
    "Reports", "Prod", mFileName);

c.Load();
c.SetDataSource(dt);  // dt => DataTable
c.SetParameterValue("prmSystemDate", Current_Date);

frmReportViewer v = new frmReportViewer();
v.ReportClass = c;
v.Show();

Et frmReportViewer FormLoad est 

private void frmReportViewer_Load(object sender, EventArgs e)
        {
            CRViewer.ReportSource =  ReportClass;
            //CRViewer => 
            //CrystalDecisions.Windows.Forms.CrystalReportViewer
        }

Est-ce que je me suis trompé quelque part?

Edit # 3

DataTable sur x86 et x64 sont identiques. (enregistré les données dans XML et les deux fichiers sont exactement les mêmes).

Process Monitor indique que mon programme effectue l'opération CreateFile sur les fichiers suivants

C:\WINDOWS\Microsoft.Net\Assembly\GAC_64\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll. C:\WINDOWS\Microsoft.Net\Assembly\GAC_MSIL\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll. C:\WINDOWS\Microsoft.Net\Assembly\GAC\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\WINDOWS\Assembly\GAC_64\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll

Tout échoue avec PATH NOT FOUND Résultat. Ça réussit 

C:\Windows\Assembly\GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll

et puis deux BUFFER OVERFLOW apparaît sur ce même fichier.

Cela ne se produit que sur x64. Il n'y a pas d'opération liée à CrystalDecisions.Web.dll sur x86.

Qu'est-ce que cela indique?

8
bjan

Cela pourrait ne pas être une "réponse" complète puisque vous dépannez toujours et demandez de l'aide, mais c'est trop long pour un commentaire. Il est à noter que pour le moment, SAP ne prend pas en charge VS 2017, et il est possible que cela ait quelque chose à voir avec cela, mais j'ai déjà vu des messages similaires dans VS 2010 alors allez-y ...

Ajoutez ceci à votre fichier app.config:

<startup useLegacyV2RuntimeActivationPolicy="true"></startup>

ou plus spécifiquement cible .NET comme:

<startup useLegacyV2RuntimeActivationPolicy="true">
 <supportedRuntime version="v4.0"/>
</startup>

Plus long processus de pensée de dépannage. Le message d'erreur indique généralement que le DataSet (DataTable dans ce cas) n'est pas défini au moment où il est utilisé dans l'objet de rapport. Vous pouvez y placer un point d'arrêt et voir si cela est vrai (où SetDataSource est utilisé).

Il se peut que je me trompe ici et qu'il existe un ensemble de données correctement défini, même à ce moment-là, et que le problème se pose un peu plus tard dans la visionneuse. J'ai rencontré des problèmes comme celui-ci il y a longtemps et si ma mémoire est bonne, c'est la voie que j'ai choisie pour trouver une solution. 

Fondamentalement, mon problème était la façon dont le fichier EXE utilisait les objets ADO dans le visualiseur. Sans tout savoir sur votre projet, je commencerais par le chemin du débogage. 

Est-ce que ça fonctionne dans VS 2015? At-il déjà fonctionné en X64 et cessé de fonctionner? Cela fonctionne-t-il pour d'autres opérations, par exemple, pouvez-vous accéder à l'objet de rapport par programme et commettez-vous des erreurs de lecture?

1
Jason Hughes

Je ne sais pas si cela vous est utile ou non. mais je suis tombé sur la solution suivante quand j'ai eu un problème avec le serveur 2012.

Avec Framework 4.6, Crystal Reports pour Visual Studio crée un chemin d'accès unique au dossier Crystalreportsviewer13 dans IIS et IISExpress DEV.

Environnement

Crystal Reports for Visual Studio 
Windows 7
Windows 8.x
Windows 2012 Server
Windows 2016
Windows 10 

Reproduire le problème

Nous sommes conscients de ce problème. En réalité, il est lié à .Net Framework 4.6, et pas uniquement à la prévisualisation de Win10 ou de Windows Server 2016 (ce système d’exploitation installé par défaut .Net 4.6). Si vous installez .Net 4.6 sur Win7, le même problème se posera. La cause principale est que MS fournit la mise à jour à .Net Framework 4.6 via Windows Update, puis la version simplifiée de .Net 4.6 sera modifiée. Pour le site Web ASP.NET ciblant le pool d’applications .Net 4.6, le visualiseur CR essaiera de trouver le fichier de ressources du visualiseur (js & icon) à partir de ..\aspnet_client\system_web\4_6_xx\crystalreportviewers13 \. Net Framework 4.6. Sous Win10 RTM, il s’agit de 4_6_79; sous Win7 + .Net 4.6, il s’agit de 4_6_81; si l’utilisateur a installé le KB3098786 récent, il sera 4_6_118… Le numéro de version changera à nouveau si la prochaine mise à jour de la KB pour .Net Framework 4.6. Alors s'il vous plaît créer un cas BOSAP pour cela. Au moins dans SP16, nous avons besoin d'ajouter plus de liens de symboles pour prendre en charge différentes versions réduites de .Net Framework 4.6. Et une meilleure solution consiste à modifier le chemin du fichier de ressources du visualiseur chargé, par exemple, pointez vers un dossier virtuel sous IIS. Ce correctif requis du côté du visualiseur et nécessitant plus de temps, nous allons essayer de le mettre en œuvre dans SP16… Merci, Soda

Résolution

Nos développeurs sont conscients de ce problème et nous devrions pouvoir résoudre ce problème dans le Service Pack 16.

Le problème est lié à .Net Framework 4.6.

La cause première est que MS fournit la mise à jour à .Net Framework 4.6 via Windows Update

Le site Web ASP.NET ciblera le pool d'applications .Net 4.6, le visualiseur CR essaiera de trouver le fichier de ressources du visualiseur (js & icon) à partir de

..\aspnet_client\system_web\4_6_xx\crystalreportviewers13 \

Xx est la version réduite de .Net Framework 4.6.

For example on Win10 RTM, it is 4_6_79;
on Win7+.Net 4.6 it is 4_6_81,
if user installed recent KB3098786 it will be 4_6_118x. 

Le numéro de version changera à nouveau lors de l'installation de la prochaine mise à jour de la base de connaissances pour .Net Framework 4.6.

La solution actuelle consiste à mettre à jour le fichier Web.Config pour inclure la version mise à jour du Framework.

Et ensuite, copiez le dossier\CrystalReportsViewer13 dans le nouveau chemin:

..\aspnet_client\system_web\4_6_xx\crystalreportviewers13 \

Pour les mises à jour et les derniers téléchargements, veuillez cliquer sur ce lien:

http://scn.sap.com/docs/DOC-7824

La page d'accueil est:

http://scn.sap.com/community/crystal-reports-for-visual-studio

0
Ketan Kotak

Installez la version 32 bits de Crystal Reports, même si votre ordinateur est au format 64 bits. 

Ma machine a également 64 ans, mais j'utilise la version 32 bits du logiciel et cela fonctionne bien.

0
11311212

Avez-vous une source de données ou une connexion (par exemple, odbc\dao) 32 bits dans votre source de données Crystal Report? Il est également étrange que vous ayez déjà installé des environnements d'exécution CR 32 bits et 64 bits. Pourquoi avez-vous installé les versions CR pour Visual Studio? J'ai eu un problème similaire au vôtre, mais après avoir remplacé MDB 32 bits et DAO par DataSet, tout va bien. J'ai installé des exécutions CR 32 bits et 64 bits.

0
louie_nz

Assurez-vous que le dernier SP est installé. J'utilise actuellement SP19, ce qui ne me pose aucun problème. 
Je sais que trouver les bons liens de téléchargement peut être difficile, cela pourrait vous aider: https://wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports% 2C + Developer + for + Visual + Studio + Téléchargements

Comme j'ai créé une application WPF qui utilise le visualiseur fourni par CrystalReports, j'ai également dû utiliser le paramètre suivant dans mon App.config

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
0
Oceans