2013-04-18 167 views
1

我目前在生成訪問報告,一旦發生,應保存到一個保存位置,用戶在放的過程。保存訪問報告爲PDF文件

這裏是我的代碼塊。

ReportName = "Appraisal_" & Trim(Str(Year)) & "_" & Me.empnr & "_" & Veilig(Me.empnr) & "_" & Format(Now(), "YYYY_MM_DD_HH_MM_SS") 
DoCmd.CopyObject , ReportName , acReport, "rpt_beoordelen" 
DoCmd.OpenReport ReportName , acViewPreview, , "EmployeeNr='" & Me.empnr & "' and year=" & Me.Year 
DoCmd.OutputTo acOutputReport, "", acFormatPDF, , True 
DoCmd.Close acReport, ReportName 

這會生成並顯示具有正確值的報告。它要求保存位置。而且,一旦給出,就會嘗試將文件保存到指定位置。它快速閃爍打印PDF給定位窗口。

此後程序停止。在給定的位置沒有找到任何文件,報告仍然打開。調試應用程序顯示我

DoCmd.Close acReport, ReportName 

永遠不會到達。我沒有收到錯誤消息,我也不知道發生了什麼問題。任何人都可以爲我解決這個問題嗎?

+0

您正在運行哪個訪問版本? – Hiten004

+0

如果將'OutputTo'行更改爲此:?DoCmd.OutputTo acOutputReport,「,acFormatPDF,False'會發生什麼? – HansUp

+0

@ Hiten004 Microsoft Access 2010 – user1746525

回答

0

如果你有麻煩DoCmd.OutputTo留下ObjectName空(參考:here)與「活動對象」的工作,那麼你可以試試這個:

打開「rpt_beoordelen」報告及其Record Source查詢保存爲保存的名爲「rpt_beoordelen_base_data」的查詢。創建一個 「rpt_beoordelen_data」 有一些通用的SQL像保存查詢...

SELECT * FROM rpt_beoordelen_base_data 

...然後做出 「rpt_beoordelen_data」 的Record Source爲[rpt_beoordelen]報告。

現在從你的問題的代碼更改爲類似這樣:

ReportName = "Appraisal_" & Trim(Str(Year)) & "_" & Me.empnr & "_" & Veilig(Me.empnr) & "_" & Format(Now(), "YYYY_MM_DD_HH_MM_SS") 
DoCmd.CopyObject , ReportName , acReport, "rpt_beoordelen" 
Dim cdb As DAO.Database 
Set cdb = CurrentDb 
Dim qdf As DAO.QueryDef 
Set qdf = cdb.QueryDefs("rpt_beoordelen_data") 
qdf.SQL = "SELECT * FROM rpt_beoordelen_base_data WHERE EmployeeNr='" & Me.empnr & "' and year=" & Me.Year 
Set qdf = Nothing 
DoCmd.OutputTo acOutputReport, ReportName, acFormatPDF 

將在您的DoCmd.OutputTo調用轉變爲一種不依賴於「活動對象」上,並可能會產生你想要的結果。 (FWIW,這是我使用這種方法生成PDF版報告的唯一方法。)