2016-12-27 59 views
0

我接近於語法準確,只是一個大問題!

,我從輸入框中捕獲用戶ID,沒有被傳遞到報告,所以我必須要輸入用戶ID兩次
訪問VBA將參數傳遞給基於查詢的報表

需要什麼,以實現這一目標被改變?

Public Function userProd() As Integer 
Dim userID As String, saveloc As String, filename As String, reportname As String 

'Report Name 
reportname = "rpt_UserProduction" 

'Setting Save location 
saveloc = "C:\Test\" 

'Setting filename 
filename = "userProd " 

'Getting User ID To Process 
userID = InputBox("Enter User ID:", "VBA InputBox Function") 

'Putting together full save location 
saveloc = saveloc + filename + userID + ".pdf" 

If userID = "" Then 
    'Do Nothing and Stop Processing 
    Exit Function 
Else 
    If IsNumeric(userID) Then 
     'Preview Report 
     DoCmd.OpenReport reportname, acViewPreview, , "User_ID=" & userID 

     'Save As PDF 
     DoCmd.OutputTo acOutputReport, reportname, acFormatPDF, saveloc, True 

     'Close Report 
     DoCmd.Close acReport, reportname 
    End If 
End If 

End Function 
+0

'Return'語句與['GoSub'](https://msdn.microsoft.com/en-us/library/office/gg251648.aspx)一起使用,您可能的意思是使用'Exit Function' 。 – ThunderFrame

+0

@ThunderFrame - 很好地捕捉到這種語法錯誤。 –

回答

0

User_ID字段是一個包含數字的文本字段嗎?如果是這樣,您需要將單引號添加到過濾器。 ...「User_ID ='」& userId &「'」。如果它不是文字,你會得到太多的記錄還是不夠?報表加載時是否應用了另一個篩選器,或者在導致篩選器無法按預期工作的基礎報表記錄源中應用另一個篩選器?

0

如果「兩次」表示輸入框一次,報表一次,則表示where條件中的"User_ID="拼寫錯誤或從您用作報表源的查詢中排除。