0

Crystal Reports ファイルを PDF 形式にレポートする際に問題が発生しています。この問題に関する他のすべての質問をここで見ましたが、どれも私のものを解決していないようです。

これが私のコードです:

Public Sub ExportReportToPDF(ReportObject As CRAXDRT.Report, ByVal filename As String, ByVal ReportTitle As String)

Dim objExportOptions As CRAXDRT.ExportOptions

ReportObject.ReportTitle = ReportTitle

With ReportObject
    .EnableParameterPrompting = False
    .MorePrintEngineErrorMessages = True
End With

Set objExportOptions = ReportObject.ExportOptions

With objExportOptions
    .DestinationType = crEDTDiskFile
    .DiskFileName = filename
    '.FormatType = crEFTExcel80Tabular
    '.FormatType = crEFTCommaSeparatedValues
    '.FormatType = crEFTExcel80
    '.FormatType = crEFTHTML32Standard
    '.FormatType = crEFTHTML40
    .FormatType = crEFTPortableDocFormat
    '.FormatType = crEFTRichText
    '.FormatType = crEFTText
    '.FormatType = crEFTWordForWindows

End With

ReportObject.Export False

End Sub

ここで、PDF 以外の他のオプションを表示するためだけに残しました。それらはすべて明らかにコメントアウトされていますが、他の形式を試してみると、問題なくエクスポートされます。エクスポートできない唯一の形式は PDF です。エラーが表示されます:

実行時エラー '-2147190908 (80047784)': レポートのエクスポートに失敗しました。

[デバッグ] をクリックすると、ReportObject.Export False 行が強調表示されます。

別の注意として、ユーザーがオプションを選択できるようにすると、PDFを選択できますが、それでも同じエラーが発生します。助けてくれてありがとう。

( Crystal Report で PDF ファイルにエクスポートする方法は?のコードを提供してくれた AVD に感謝します)。

編集: Phillipe の応答を確認した後、コードをステップ実行していて、crEFTPortableDocFormat を FormatType に割り当てた後、「UXFPDF.DLL」を FormatDllName に自動的に割り当てることに気付きました。多分これは私の問題です、誰もこれを修正する方法を知っていますか? crxf_pdf.dll と u2fpdf.dll (元々持っていた 8.0 用のもの) の名前を変更しようとしましたが、うまくいきませんでした。

編集: もう 1 つの発見は、CRViewer91 (レポートを正しく表示する) でエクスポート オプションを有効にし、この方法でこれを pdf にエクスポートしようとすると、エラーにならないことです。ただし、かなり破損して開くことができないファイルを保存します。

編集:より多くの研究。CRViewer91 は、どのフォーマットも正常にエクスポートできないようです。RTF と TXT は空白のドキュメントを返し、開こうとすると RPT エラーが発生します。

編集:私の問題の一部は、実際に必要なのは9.0のCRAXRT.DLLであるのに、8.0のCRAXRT.DLLを使用していることだと思います。9.0 用のものを見つけました。古いものの代わりにこれを使用するにはどうすればよいですか?

4

2 に答える 2

2

すべてのエラーの原因は正確にはわかりませんが、基本的に新しいプロジェクトをゼロから開始し、必要な参照とコンポーネントのみを組み込むことで修正しました。私が抱えていた (TLV エラーの原因となった) 1 つの問題は、CR9 の CRAXDRT.dll が Windows\system32 ディレクトリにあり、その .dll を参照していたにもかかわらず、Program Files\Common から参照する必要があったことです。 Files\CrystalDecision... ディレクトリには、CR9 の他のすべての .dll が配置されています。

実行する必要がある小さなコード変更もありました。これは、鉱山を PDF にエクスポートするために機能する最終的なコードです。

Public Sub ExportReportToPDF(ReportObject As CRAXDRT.Report, ByVal filename As String, ByVal ReportTitle As String)

    Dim FormatDLLName As String

    ReportObject.ReportTitle = ReportTitle

    With ReportObject
        .EnableParameterPrompting = False
        .MorePrintEngineErrorMessages = True
    End With

    With ReportObject.ExportOptions
        .DestinationType = crEDTDiskFile
        .DiskFileName = filename
        '.FormatType = crEFTExcel80Tabular
        '.FormatType = crEFTCommaSeparatedValues
        '.FormatType = crEFTExcel80
        '.FormatType = crEFTHTML32Standard
        '.FormatType = crEFTHTML40
        .FormatType = crEFTPortableDocFormat
        '.FormatType = crEFTRichText
        '.FormatType = crEFTText
        '.FormatType = crEFTWordForWindows
    End With

    ReportObject.Export False

End Sub

このコードが役立つと思う他の人のために、コメントアウトされた FormatTypes をそこに残しました。Phillipe、もしあなたがこのように「答え」たいのなら、私はあなたが提供したすべてのあなたの助けに対してあなたにいくらかの担当者を与えたいと思っています. あなたのものに賛成票を投じるだけの十分な担当者がいないので。

いずれにせよ、ご協力いただきありがとうございます。

ダン

于 2013-08-07T20:23:46.950 に答える
1

フォルダーが存在しない/ファイル名が無効なため、またはこのフォルダーの下にファイルを作成するための対応する権限がないため、「ファイル名」の値が機能しないと思います。

'filename = "c:\test.pdf"' のような基本的なパラメーターを使用してコードを試していただけますか?

私の最後の推測: PDF 形式にエクスポートするには、crystal フォルダーの下に特定の dll ファイルが必要です (登録する必要はありませんが、ここにある必要があります)。crxf_pdf.dll ファイルはありますか?

編集:

最後の質問: Crystal GUI から PDF にエクスポートできますか?

助けがあれば、VB アプリで配布する必要がある Crystal レポート ファイルのリストを次に示します。エクスポート機能は crxf_*.dll ファイルにリンクされているようです

CRAnalyzer.dll
craxdrt.dll
crdb_ado.dll
crdeploy.reg
crheapalloc.dll
crqe.dll
crtowords_en.dll
crtslv.dll
crviewer.dll
crxf_html.dll
crxf_pdf.dll
crxf_rtf.dll
crxf_wordw.dll
crxf_xls.dll
cxlibw-1-6.dll
dbghelp.dll
exlate32.dll
ExportModeller.dll
GDIPLUS.DLL
Implode.dll
keycode.dll
msvcrt.dll
pageObjectModel.dll
querybuilder.dll
ReportRenderer.dll
riched20.dll
sscdlg.dll
sscsdk80.dll
u252000.dll
u25dts.dll
u25samp1.dll
u2dapp.dll
u2ddisk.dll
u2dmapi.dll
u2dpost.dll
u2fcr.dll
u2frdef.dll
u2frec.dll
u2fsepv.dll
u2ftext.dll
u2fxml.dll
u2l2000.dll
u2lcom.dll
u2ldts.dll
u2lexch.dll
u2lfinra.dll
ufmanager.dll
usp10.dll
webReporting.dll
于 2013-08-05T15:38:43.470 に答える