c# - interopservices - no se abrió el documento crystal reports
Un documento procesado por el motor JRC no se puede abrir en la pila de C++ (11)
¡Comprueba tu ruta al archivo .rpt! La descripción del error no tiene nada que ver con su verdadera razón. Simplemente no puede encontrar su archivo .rpt!
En mi caso, la ruta tenía que ser para un archivo .rpt que se encuentra en la subcarpeta Informes:
Server.MapPath("~/Reports/InvoiceRegular.rpt");
Trabajó para mi.
He creado un informe de cristal en vs2010 con .net4.0. cuando publico el sitio web, aparece el error "Un documento procesado por el motor JRC no se puede abrir en la pila de C ++". Publiqué el sitio web en el servidor y estoy intentando acceder a él desde el cliente, hice el archivo .rpt en app_code, pero nuevamente obtuve el mismo error. Así que creé una carpeta wwwroot y en esa carpeta guardé el asp_client y la carpeta del sitio web y le di la ruta física a wwwroot. todo funciona bien excepto el informe de cristal. En el archivo .cs el código es el siguiente:
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;
seguimiento de la pila de error:
[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
Asegurarse de que la ruta del archivo es correcta como se menciona en @serop. También he notado donde la carpeta de informes no se publicaría. Así que tuve que publicar manualmente la carpeta de informes.
Descubrí la solución. Primero utilicé Visual Studio 2005 con su propio informe de cristal y luego pasé a VS2010 con un informe de cristal independiente que descargué de SAP. Investigué y encontré desde SAP:
Como cada versión de Crystal Reports tiene su propio tiempo de ejecución específico que debe implementarse correctamente, es fundamental que el tiempo de ejecución implementado esté de acuerdo con los ensamblajes de Crystal Reports para Visual Studio .NET referenciados en su proyecto.
Así que desinstalé la versión anterior y usé solo una versión y funcionó. :) Gracias ta.speot.is por tu preocupación. Nunca fue un problema de codificación.
Esto me acaba de pasar y después de horas de dolor de cabeza descubrí que era un problema de permisos de archivo. Por alguna razón, al copiar de nuestro servidor de desarrollo CR al directorio personalizado compartido .rpt, todos los permisos en el archivo estaban todos conectados y tuve que agregar permisos para varios grupos de usuarios al archivo.
He encontrado otro conjunto de circunstancias en las que aparece este error bastante inútil.
Si tiene F5 para ejecutar / depurar su aplicación web en Visual Studio, PERO todavía tiene el informe abierto en Crystal Reports (2011), obtendrá el error.
Me volví loco por cerca de una hora hoy!
No sé si esto ayudará o no a alguien más, pero estaba teniendo este problema, y resultó ser una solución tan simple para un movimiento tan estúpido. Había escrito mal el nombre de archivo del archivo .rpt ... había un espacio entre dos palabras en el nombre del archivo (que normalmente nunca hago por esta razón) pero cuando incluí el nombre en mi código, dejé el espacio afuera. Corregido el nombre del archivo, el problema desapareció.
Solo hacer estos pasos
(1) Haga clic derecho en su archivo ".rpt" Seleccione " Propiedades "
1.a) Construir la acción como " Contenido "
1.b) Copiar en el directorio de salida como " Copiar siempre "
(2) Verifique su ruta al archivo .rpt Server.MapPath ("Su ruta");
por ejemplo: Server.MapPath("~/Reports/MyReport.rpt");
Nota: si tanto la página rpt como la página aspx con el visor de informes están en la misma carpeta, entonces no es necesario que proporcione la ruta completa, solo puede proporcionar filename.rpt en Server.MapPath.
Trabaje para mí: copie los archivos .rpt de la máquina local, sobrescriba los archivos .rpt en el host, entonces funcionará bien.
Verifique si su archivo .rpt está presente o no. Si no lo hace, copie desde la carpeta local a la carpeta de alojamiento, comenzará a funcionar.
copie y pegue la carpeta (aspnet_client) de (C: / inetpub / wwwroot) en la carpeta del sitio web y asegúrese de que el archivo .rpt esté en la misma carpeta
este trabajo para mi
- Haga clic derecho en el archivo Rpt.
- Elige las propiedades
Cambiado
a. Construir la acción como "Contenido"
segundo. Copiar en el directorio de salida como "No copiar"
do. Vacío para el espacio de nombres de la herramienta personalizada y la herramienta personalizada