2012-05-31 17 views
26

Ho creato un report Crystal in vs2010 con .net4.0. quando pubblico il sito web, viene generato l'errore "Impossibile aprire un documento elaborato dal motore JRC nello stack C++". Ho pubblicato il sito Web nel server e sto provando ad accedervi dal client, ho fatto keet il file .rpt in app_code, ma di nuovo ho ricevuto lo stesso errore. Così ho creato una cartella wwwroot e in quella cartella ho mantenuto la cartella asp_client e del sito Web e ho dato il percorso fisico a wwwroot. tutto funziona bene tranne il rapporto di cristallo. In .cs codice del file è il seguente:Un documento elaborato dal motore JRC non può essere aperto nello stack C++

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; 

stack trace di errore:

[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 
+1

Quindi http://stackoverflow.com/questions/4294762/crystal-reports-for-visual-studio-2010-error non aiuta? –

+0

no. Ho provato ogni cosa nella domanda. – sharad

+0

Assicurati che il file di report dei cristalli sia disponibile nella posizione specificata nel codice .. o che il percorso scritto nel codice sia errato –

risposta

3

trovato la soluzione, mi è stato utilizzando Visual Studio 2005 con il proprio rapporto di cristallo e poi ho upraded a VS2010 con report di cristallo separato che ho scaricato da SAP. Ho cercato e trovato da SAP:

Poiché ogni versione di Crystal Reports ha il proprio specifico runtime che deve essere correttamente distribuito, è fondamentale che il runtime distribuito sia in accordo con gli assembly Crystal Reports per Visual Studio .NET a cui si fa riferimento nel tuo progetto.

quindi ho disinstallato la versione precedente e utilizzato solo una versione e ha funzionato. :) grazie ta.speot.is per la tua preoccupazione. Non è mai stato un problema di codifica.

23

questo lavoro per me

  1. Fare clic destro sul file Rpt.
  2. scegliere le proprietà
  3. Cambiato

    a. Crea azione come "Contenuto"

    b. Copia nella directory di output come "Non copiare"

    c. Mettere vuoto per strumento personalizzato e Namespace strumento personalizzato

+0

Questo ha fatto il trucco per me! – bdwakefield

+0

Grazie !!! Mi ha davvero aiutato! –

+0

Crea azione come "Contenuto" mi ha aiutato – hozefam

5

Non so se questo aiuterà a qualcun altro o no, ma ho avuto questo problema, e si è rivelato essere una semplice correzione come per esempio un muta muta. Ho digitato male il nome del file .rpt ... c'era uno spazio tra due parole nel nome del file (che normalmente non faccio mai solo per questo motivo) ma quando ho inserito il nome nel mio codice, avevo lasciato lo spazio su. corretto il nome del file, il problema è andato via.

+1

Puoi semplificare questa risposta? È una perdita di tempo leggere "se aiuterà" o "semplice soluzione per una mossa stupida". – quantum

42

Controlla il tuo percorso per il file .rpt! La descrizione dell'errore non ha nulla a che fare con la sua vera ragione. Semplicemente non riesce a trovare il tuo file .rpt!

Nel mio caso il percorso doveva essere per un file .rpt seduto in rapporti sottocartella:

Server.MapPath("~/Reports/InvoiceRegular.rpt"); 

lavorato per me.

+0

E se il percorso è corretto, verificare che l'account del pool IIS abbia le autorizzazioni di lettura sul file. – GSerg

1

Ho trovato un altro insieme di circostanze in cui viene visualizzato questo errore piuttosto inutile.

Se F5 esegue/esegue il debug dell'applicazione Web in Visual Studio, ma il report rimane aperto in Crystal Reports (2011), verrà visualizzato l'errore.

Mi ha fatto impazzire per circa un'ora oggi!

5

basta fare questi passi

(1) Fare clic destro sul file "Rpt" Selezionare "Proprietà "

1.a) Costruire azione come "Content"

1.b) Copia nella directory di output come "Copia sempre"

(2) Controllare il percorso del file .rpt Server.MapPath ("Il percorso");

esempio: Server.MapPath("~/Reports/MyReport.rpt");

Nota: se entrambi rpt e la pagina aspx con il visore relazione sono in stessa cartella, quindi non c'è bisogno di dare il percorso completo, si può dare solo filename.rpt in Server.MapPath.

0

Questo è successo a me e dopo ore di mal di testa ho scoperto che si trattava di un problema di autorizzazioni di file. Per qualche motivo durante la copia dal nostro server di sviluppo CR nella directory .rpt personalizzata condivisa, le autorizzazioni sul file sono state tutte sollevate e ho dovuto aggiungere le autorizzazioni per diversi gruppi di utenti al file.

1

copiare e incollare la cartella (aspnet_client) dalla (C: \ inetpub \ wwwroot) alla cartella sito e assicurarsi che il file .rpt è nella stessa cartella

0

Abilita le rpt Il file è presente o no. Se non si desidera copiare dalla cartella locale a quella di hosting, inizierà il lavoro.

1

Assicurarsi che il percorso del file sia corretto come @serop menzionato. Inoltre ho notato dove la cartella dei report non sarebbe stata pubblicata. Doveva quindi pubblicare manualmente la cartella del report.

Problemi correlati