访问VBA以根据查询传递参数报告

时间:2016-12-27 22:23:07

标签: access-vba report ms-access-2013

我很接近语法准确,只是一个大问题!
我从输入框中捕获的用户ID未被传递到报告中,因此我必须输入用户ID两次

为了达到这个目的,需要改变什么?

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

2 个答案:

答案 0 :(得分:0)

User_ID字段是否为包含数字的文本字段?如果是这样,您需要向过滤器添加单引号。 ..." User_ID ='" &安培; userId& "'&#34 ;.如果它不是文字,你得到的记录太多还是不够?是否在报告加载时应用了另一个过滤器,或者是否导致过滤器无法按预期工作的基础报告记录源?

答案 1 :(得分:0)

如果"两次"对于输入框表示一次,对报表表示一次,则在您的where条件中"User_ID="拼写错误或从您用作报表来源的查询中排除。