web-dev-qa-db-ja.com

Visual Studio 2010エラーのCrystal Reports

ASP.NET 4.0とVisual Studio 2010を使用して構築されたWebアプリケーションからCrystalレポートを実行しようとしています。SAPサイト( http://www.businessobjects.com/jump)から以下をインストールしました/xi/crvs2010/us2_default.asp

1)SAP Crystal Reports、Visual Studio 2010バージョン-Visual Studio IDEにソフトウェアをインストールする標準EXEインストールパッケージ。

2).NET Framework 4(64ビット)用のSAP Crystal Reportsランタイムエンジン

Crystal.Report Viewerコントロールを含むReports.aspxというページがあります。

 <CR:CrystalReportViewer ID="rptViewer" runat="server" AutoDataBind="true" />

Reports.aspx.csファイルには、次のコードがあります。

protected override void OnPreRender(EventArgs e)
{
    ReportDocument report = new ReportDocument();
    var path = Server.MapPath("Reports/Sample.rpt");
    report.Load(path);
    report.SetDatabaseLogon("username", "password", "servername", "databasename");
    rptViewer.ReportSource = report;
}

Report.Load(path)行で、次のエラーが発生します。

サポートされていない操作です。 JRCエンジンで処理されたドキュメントをC++スタックで開くことができません。

どうすれば修正できますか?

17
Kumar

レポートがapp_codeフォルダは、レポートドキュメントを初期化してレポートをロードする代わりに、その新しいインスタンスを初期化します。

Sample report = new Sample();

これは私のために働いた

10
Ali Tarhini

同じ問題が発生しましたが、問題はレポートパスが無効でした。同じ問題が発生している可能性があります。Server.MapPath( "Reports/Sample.rpt")が有効なパスを返すことを確認してください。

13
Priyan R

.rptファイルの2つのプロパティを変更する必要があります。

  1. ビルドアクションはデフォルトで「組み込みリソース」に設定されています。 「コンテンツ」に変更します。
  2. 出力にコピーはデフォルトで「コピーしない」に設定されています。 「常にコピー」に変更します。

再構築、展開パッケージの構築、公開。できた!

6
aleafonso

注:以下では、「WebSite」という用語は、Webサイト内の仮想ディレクトリではなく、IISの実際のWebサイトノードを指します。

問題の根本原因:アプリケーションからアクセス可能な「aspnet_client」フォルダがありません。
これはいくつかの理由で発生する可能性があります:

  1. SAP CRインストーラーはaspnet_clientフォルダーを...\inetpub\wwwroot \フォルダーにインストールしているように見えるため、Webサイトの物理パスが...\inetpub\wwwrootでない場合、アプリケーションはaspnet_clientフォルダーにアクセスできません。
  2. Aspnet_clientフォルダーがWebサイトの物理パスの最上位に移動または削除された場合、IISアプリケーションはフォルダーにアクセスできません。

問題の解決策(Windows Server 2008 R2の場合)

  1. サーバーのIISマネージャに移動します
  2. アプリケーションを実行しているWebサイトのツリービューノードを展開します。
  3. Webサイトノードのすぐ下のレベルを見て、「aspnet_client」フォルダが表示されていることを確認します。
  4. フォルダーが表示される場合は、おそらくこの根本原因が問題の原因ではありません。
  5. フォルダーが表示されない場合は、サーバーのハードドライブでフォルダーを検索し、Webサイトの物理パスにコピーします。
  6. Webサイトノードを右クリックし、ポップアップメニューから[更新]をクリックします。
  7. これで、Webサイトノードの直下のレベルにaspnet_clientフォルダーが表示され、アプリケーションのレポートが機能するはずです。
5
George

WebサイトをWebアプリケーションに変換したときに、これに遭遇しました。レポートは私の開発マシンでは正常に実行されますが、サーバーでは実行されません。次に、RPTファイルがmissingであることをサーバーで認識しました!

デフォルトでは、レポートファイルは埋め込みリソースと見なされ、Webアプリケーションの公開時にコピーされませんでした。私はそれらを個別に変更し、サイトを再公開しましたが、すべて順調でした。

3
Ken Pespisa

このエラーは実際の扱いであり、多くの可能性のある前例があるようです。幸いなことに、私は特定のバリエーションで1日を無駄にしただけです。

ReportDocument.Load()は、ローカル一時コピーも作成します。 (これは、ネットワークドライブの場所からの負荷の場合にのみ発生する可能性があります。ローカル負荷の場合には、これをテストしていません。)

ロードが発生するユーザーコンテキストに一時ファイルをローカルで作成する権限がない場合、Loadは失敗し、非常に役に立たない同じエラーが発生します。


また、これを Process Monitor で診断してしまいました。それはあなたにも役立つかもしれません。

2
Marc L.

また、Crystal Reports Designerでレポートファイルを誤って開いたままにしておくと、レポートの読み込みに失敗しました。

2
Jon

レポートのrptファイルが元のフォルダーにあることを確認してください。 MVC WebサイトをIISに "公開"した後、最初に同じエラーが発生しました。 「パブリッシュ」がパッケージにrptファイルを入れないことに気づきませんでした。

0
user477864
  1. 「Crystalレポートエンジン」をサーバーに再インストールします

  2. 「コンテンツ」に設定されたビルドアクション。

それは完全に私のために働きました。

0
ErandaK