0

OSがE:にインストールされているPCが1台あり、C:ドライブがありません。これに、正常に動作する.Net4.0WPFアプリケーションをインストールしました。

ただし、Crystalレポートにアクセスしようとすると、以下の例外が発生します。このユーザーはWindowsエクスプローラーのネットワーク上の場所からレポートにアクセスできるので、Crystalにローカルにコピーするように依頼するという行為が問題を引き起こしていると思いますか?

したがって、ローカルコピーが作成される場所や、これを制御する方法を誰かにアドバイスできますか。

ありがとう

レポートを開くためのコード:

oReportDocument.Load(oSystemData.ReportPath + StandardReport.RPTFile, CrystalDecisions.[Shared].OpenReportMethod.OpenReportByTempCopy) 

コールスタックの抽出:

CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: Invalid report file path.

CrystalDecisions.CrystalReports.Engine.EngineExceptionUtils.DoThrowException(String message、EngineExceptionErrorID id)at CrystalDecisions.CrystalReports.Engine.ExceptionThrower.ThrowEngineException(String messageID、EngineExceptionErrorID id)at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename、OpenReportMethod openMethod 、Int16 parentJob)at CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport()at CrystalDecisions.CrystalReports.Engine.ReportDocument.get_Subreports()

4

1 に答える 1

1

レポートをロードすると、レポートのローカル一時コピーが作成されます。そのシステムの temp 環境変数を調べます。e:\temp だった場合は、そのフォルダーにファイルを書き込むために必要なアクセス許可がないと思われます。

そうは言っても、Windows WPF アプリケーションを構築しているように聞こえるので、提案どおりである可能性があり、実際には「c:\anything」のような無効なディレクトリを試しています。

何が問題なのかを正確に知るために、ここからダウンロードできる Process Monitor を実行することをお勧めします: http://technet.microsoft.com/en-us/sysinternals/bb896645

使い方は簡単ですが、唯一厄介なのは、システム上で観察される膨大な数のことです。これに対処するには、「乱雑な」エントリ (キャプチャ ウィンドウ内) を右クリックし、それらを除外することを選択します。これにより、フィルターをプロセス (つまり、myWPFapp.exe) またはアクティビティの TYPE に適用できます。この場合、ファイル システムを監視する必要があります (明らかに)。

イベントをキャプチャし、ウィンドウがすぐにいっぱいにならないようにフィルター処理したら、アプリケーションを実行するだけです。ハードドライブへのアクセスの失敗と、それが使用しようとしたフォルダーが表示されます。

幸運を。

于 2012-05-05T16:37:23.547 に答える