2012-05-31 6 views
26

v42010で.net4.0を使用してCrystalレポートを作成しました。ウェブサイトを公開すると、「JRCエンジンで処理されたドキュメントをC++スタックで開くことはできません」というエラーがスローされます。サーバーにWebサイトを公開していて、クライアントからアクセスしようとしていますが、app_codeで.rptファイルを取得しましたが、同じエラーが再び発生しました。そこで私はwwwrootフォルダを作成し、そのフォルダにasp_clientとwebsiteフォルダを保存して、wwwrootへの物理パスを与えました。クリスタルレポート以外はすべて正常に動作します。エラーのJRCエンジンで処理されたドキュメントを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; 

スタックトレース:解決策を見つけた

[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

だからhttp://stackoverflow.com/questions/4294762/crystal-reports-for-visual-studio-2010-errorは役に立ちませんか? –

+0

nope。私はその質問にすべてのことを疑問視しました。 – sharad

+0

Crystalレポートファイルがコード内の@指定された場所にあることを確認してください。コード内に書かれたパスが間違っている可能性があります –

答えて

3

、 を私はまず、自身の結晶レポートでVisual Studio 2005を使用して、その後、私た次のようには.csファイルのコードでは です私はSAPからダウンロードした別のクリスタルレポートを使ってVS2010にアップしました。

Crystal Reportsの各バージョンには、適切に配備する必要がある固有のランタイムがありますので、配備されたランタイムはVisual Studio .NETのCr​​ystal Reportsアセンブリと一致することが重要ですあなたのプロジェクトで。

私はアンインストーラーの以前のバージョンを使用し、1つのバージョンのみを使用していました。感謝ta.speot.isあなたの懸念のために。これは決してコーディングの問題ではありませんでした。

23

私にとって、この作品

  1. 右RPTファイルをクリックしてください。
  2. 変更されたプロパティを選択してください。アクションを「コンテンツ」として作成する

    b。 "コピーしない"と出力ディレクトリにコピー

    c。カスタムツールとカスタムツールの名前空間

+0

これは私のトリックでした! – bdwakefield

+0

ありがとうございます!それは本当に私を助けました! –

+0

「コンテンツ」としてのアクションを構築すると助けてくれました – hozefam

5

用の空置き、これは他の誰かを助けたりしませんかどうかは知りませんが、私はこの問題を持っていた、そしてそれは、このようなAのために、このような簡単な修正であることが判明しました愚かな動き。私は.rptファイルのファイル名を誤って入力しました。ファイル名には2つの単語の間にスペースがありましたが(私は通常このような理由で決して行っていません)、私のコードに名前を含めたとき、でる。ファイル名を修正しました。問題は解決しました。

+1

あなたはこの答えを簡略化できますか?それは "それが助けになるかどうか"または "愚かな動きのための簡単な修正"を読む時間の無駄です。 – quantum

42

.rptファイルへのパスを確認してください。エラーの説明は本当の理由とは関係ありません。 .rptファイルが見つかりません!私のために働いた

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

は、私の場合、パスは、Reportsサブフォルダに座っ.RPTファイルのためにしなければなりませんでした。

+0

パスが正しい場合は、IISプールアカウントにファイルに対する読み取りアクセス権があることを確認します。 – GSerg

1

私は、これほど役に立たないエラーが現れる別の状況を発見しました。

Visual StudioでWebアプリケーションを実行/デバッグするためにF5を押しても、依然としてCrystal Reports(2011)でレポートが開いていると、エラーが発生します。

今日は約1時間ナットを泳ぐ!

5

ただ、 "プロパティ"

1.Aを選択して、あなたの ".RPT" ファイルで次の手順に

(1)右クリックを行います) "コンテンツ"

としてビルドアクション1.b) "コピー常に"として出力ディレクトリにコピー

(2).rptファイルへのパスを確認してください Server.MapPath( "あなたのパス");

は、例えば:Server.MapPath("~/Reports/MyReport.rpt");

注:レポートビューアでRPTとaspxページの両方が同じフォルダに完全なパスを与えるために必要ではない場合、あなたはServer.MapPathの中だけfilename.rptを与えることができます。

0

これはちょうど私に起こり、頭痛の数時間後に私はそれがファイルのアクセス許可の問題であることが分かった。何らかの理由で私たちのCR devサーバから共有のカスタム.rptディレクトリにファイルをコピーする際に、そのファイルに対するアクセス権がすべて解除されたため、いくつかのユーザグループのアクセス権をファイルに戻さなければなりませんでした。

1

コピーして(C:\のinetpub \ wwwrootの)からフォルダ(aspnet_client)を貼り、ウェブサイトのフォルダに と.RPTファイルが同じフォルダに

0

であることを確認してくださいあなたの.RPTをご確認くださいファイルが存在するかどうかを確認してください。ローカルフォルダからホストフォルダにコピーしないと、作業が開始されます。

1

@seropのようにファイルパスが正しいことを確認してください。また、私は、レポートのフォルダが公開されないことに気づいた。そのため、レポートフォルダを手動で公開する必要がありました。

関連する問題