J'ai créé un rapport de cristal dans vs2010 avec .net4.0. lorsque je publie le site Web, l'erreur "Un document traité par le moteur JRC ne peut pas être ouvert dans une pile C++" est générée. J'ai publié le site Web sur le serveur et j'essaye d'y accéder depuis le client. J'ai saisi le fichier .rpt dans le code_application, mais j'obtiens encore la même erreur. J'ai donc créé un dossier wwwroot et, dans ce dossier, j'ai conservé le dossier asp_client et le site Web, ainsi que le chemin d'accès physique à wwwroot. tout fonctionne correctement sauf le rapport de cristal . Dans le fichier .cs, le code est le suivant:
ReportDocument rptDoc = new ReportDocument();
DataSetForCrystalReport ds = new DataSetForCrystalReport();
DataSetForCrystalReport dsHeader = new DataSetForCrystalReport();
DataTable dt = new DataTable();
DataTable dtHeader = new DataTable();
dt.TableName = "dtBill";
string ReceiptNo = Request.QueryString["ReceiptNo"];
dt = getAllOrders(ReceiptNo).Tables[0];
dtHeader = TblcompanysettingsService.GetOrganizationDetails();
ds.Tables[1].Merge(dt);
ds.Tables[2].Merge(dtHeader);
rptDoc.Load(Server.MapPath("crBill.rpt"));
rptDoc.SetDataSource(ds);
CrystalReportViewer1.ReportSource = rptDoc;
trace d'erreur de pile:
[COMException (0x80041811): Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +147
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +422
[CrystalReportsException: Load report failed.]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +549
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1613
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +189
GenerateBill.Page_Load(Object sender, EventArgs e) in e:\ShareFolder\Movie\wwwroot\Website\GenerateBill.aspx.cs:33
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064
Vérifiez votre chemin vers le fichier .rpt! La description de l'erreur n'a rien à voir avec sa vraie raison. Il ne peut tout simplement pas trouver votre fichier .rpt!
Dans mon cas, le chemin devait être pour un fichier .rpt situé dans le sous-dossier Reports:
Server.MapPath("~/Reports/InvoiceRegular.rpt");
Travaillé pour moi.
ce travail pour moi
Modifié
une. Action de construction en tant que "contenu"
b. Copier dans le répertoire de sortie en tant que "Ne pas copier"
c. Mettre vide pour l'outil personnalisé et l'espace de noms de l'outil personnalisé
Je ne sais pas si cela aidera quelqu'un d'autre ou non, mais j'avais ce problème, et il s'est avéré être une solution si simple pour un déménagement aussi stupide. J'avais mal entré le nom de fichier du fichier .rpt ... il y avait un espace entre deux mots dans le nom du fichier (ce que je ne fais normalement jamais pour cette raison) mais quand j'ai inclus le nom dans mon code, j'avais quitté l'espace en dehors. corrigé le nom de fichier, le problème est parti.
Il suffit de faire ces étapes
(1) Faites un clic droit sur votre fichier ".rpt" Sélectionnez " Propriétés "
1.a) Créer une action en tant que " Contenu "
1.b) Copier dans le répertoire de sortie en tant que " Copier toujours "
(2) Vérifiez votre chemin vers le fichier .rpt Server.MapPath ("Votre chemin");
par exemple: Server.MapPath("~/Reports/MyReport.rpt");
Remarque: si les pages rpt et aspx avec la visionneuse de rapports se trouvent dans le même dossier, inutile de donner le chemin complet, vous pouvez donner uniquement filename.rpt dans Server.MapPath.
J'ai trouvé la solution, J'utilisais d'abord Visual Studio 2005 avec son propre rapport Crystal, puis je suis passé à VS2010 avec un rapport Crystal séparé que j'ai téléchargé de SAP. J'ai recherché et trouvé de SAP:
Chaque version de Crystal Reports ayant son propre environnement d'exécution spécifique qui doit être correctement déployé, il est essentiel que l'exécution déployée soit conforme aux assemblys Crystal Reports pour Visual Studio .NET référencés dans votre projet.
donc je désinstaller la version précédente et utilisé une seule version et cela a fonctionné. :) merci ta.speot.is pour votre préoccupation. Ce n'était jamais un problème de codage.
copiez et collez le dossier (aspnet_client) à partir de (C:\inetpub\wwwroot) dans le dossier du site Web et assurez-vous que le fichier .rpt se trouve dans le même dossier.
Assurez-vous que le chemin du fichier est correct, comme indiqué par @serop. Aussi, j'ai remarqué que le dossier de rapports ne serait pas publié. Il a donc fallu publier manuellement le dossier de rapport.
J'ai trouvé un autre ensemble de circonstances dans lesquelles cette erreur plutôt inutile apparaît.
Si vous utilisez F5 pour exécuter/déboguer votre application Web dans Visual Studio MAIS que le rapport reste ouvert dans Crystal Reports (2011), vous obtiendrez l'erreur.
M'a rendu fou pendant environ une heure aujourd'hui!
Cela m'est juste arrivé et après des heures de maux de tête, j'ai découvert qu'il s'agissait d'un problème d'autorisations de fichier. Pour une raison quelconque, lors de la copie de notre serveur CR dev dans le répertoire personnalisé personnalisé .rpt, les autorisations sur le fichier ont toutes été activées et j'ai dû ajouter des autorisations pour plusieurs groupes d'utilisateurs au fichier.
Travailler pour moi: Copier les fichiers .rpt De la machine locale écraser les fichiers .rpt sur l’hôte, puis cela fonctionne bien.
Veuillez vérifier si votre fichier .rpt est présent ou non. Si ce n'est pas le cas, copiez-le du répertoire local vers le dossier d'hébergement.