2013-08-05 143 views
0

我在將Crystal Reports文件報告爲PDF格式時遇到了問題。我已經看過關於這個問題的所有其他問題,但他們都沒有解決我的問題。VB 6.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,它仍然給了我同樣的錯誤。謝謝您的幫助。

(感謝AVD編碼How to Export to a PDF file in Crystal Report?)。

編輯:通過Phillipe的迴應後,我正在通過我的代碼,並注意到它將crEFTPortableDocFormat分配給FormatType後,它會自動將「UXFPDF.DLL」分配給FormatDllName。也許這是我的問題,有誰知道如何解決這個問題?我嘗試了重命名crxf_pdf.dll和u2fpdf.dll(這是我原來使用的8.0版本),但沒有奏效。

編輯:另一個發現是,當我能夠在CRViewer91導出選項(可正確顯示報告),我試圖通過這種方法這個導出爲PDF,它沒有錯誤。但是,它保存了一個幾乎損壞且無法打開的文件。

編輯:更多研究。 CRViewer91似乎無法成功導出任何格式。 RTF和TXT在嘗試打開時返回空白文檔,RPT錯誤。

編輯:我想我的問題的一部分,可能是我一直使用的是8.0 CRAXRT.DLL當我真正需要的是一個9.0。我已經找到了9.0版本,現在我該如何使用它而不是舊版本?

回答

1

我不太確定是什麼導致所有的錯誤,但是,我已經通過基本上從頭開始一個新項目,僅僅引入了必要的參考和組件固定它。我知道我遇到的一個問題(導致TLV錯誤)是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留在那裏,對於那些認爲這個代碼有用的人來說。菲利普,如果你想以這種方式「回答」這個問題,我很樂意給你一些代表你所提供的所有幫助。我沒有足夠的代表來提高你的東西。

感謝您的幫助,無論哪種方式。

+1

很高興知道它的作品!這絕對不是一個編碼問題。 Crystal Reports(至少10個版本)在涉及到dll管理時相當隱祕。如果您計劃在具有不同語言和區域設置的計算機上部署Crystal Reports,請注意。 –

1

我想,「文件名」值不工作,要麼是因爲該文件夾不存在/文件名是無效的,或者是因爲你沒有相應的權限創建該文件夾下的文件。

你可以嘗試一些基本參數,如'文件名=「c:\ test.pdf」'的代碼?

我最後的猜測:導出爲PDF格式的可能性需要水晶夾下的一個特定的dll文件(並不需要註冊,但需要在這裏)。你有crxf_pdf.dll文件嗎?

編輯:

我的最後一個問題:你能expor從Crystal GUI TTO PDF?

這裏是必須用VB應用程序分配的,如果任何幫助,水晶報表文件的列表:出口能力似乎被鏈接到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 
+0

文件名只是一個變量。目前它使用C:\ Testing \ ReportTest.pdf作爲該變量。就像我說的,所有其他出口工作都很好,只是不是pdf。 –

+0

你是否能夠在同一個文件夾上創建一個名稱相同的文件?文件是否已經存在?在這種情況下,該文件是否在另一個軟件中打開,因此它不能被刪除?這種錯誤通常與I/O問題有關。順便說一句,我使用相同的代碼將我的報告保存爲PDF文件。 –

+0

是的,所有其他導出選項我已成功創建ReportTest.xls,xlsx,csv,rtf,txt和doc。 htmls有點不同,但我也可以創建它們。我從來沒有在運行該程序時打開任何報告,並且我可以用任何其他格式覆蓋文件而沒有問題。這只是一個PDF不會出於某種原因。 –

相關問題