首页 > 解决方案 > 通过 VBA 打开由查询生成的报表,并为查询输入数据以创建表单

问题描述

我有 2 个报告(均由查询生成),我需要根据用户输入打开不同的报告,我尝试使用 DoCmd 设置参数然后打开表单,但它不起作用(我的猜测是因为我正在尝试将信息输入查询但打开表单)。

Sub macro1()

Dim year As Integer
Dim month As Integer

year = InputBox("What year would you want to get data from?")
month = InputBox("What month would you want to get data from")

DoCmd.SetParameter "[äëðñ ùðä]", year
DoCmd.SetParameter "[äëðñ çåãù]", month

If Not IsNull(DLookup("[÷åã èåøðéø]", "[àãîéðñèøöéä ùì úçøåéåú]", "DateDiff('m', [úàøéê çæøä îäèåøðéø], DateSerial(" & year & ", " & month & ", 1)) = 0")) Then
DoCmd.OpenReport "äëðñåú äåöàåú", acViewNormal
Else
DoCmd.OpenReport "äëðñåú äåöàåú ìôé çåãù", acViewNormal
End If
End Sub

现在它只是在到达打开的报告行(任一)时显示错误。该错误表明打开的报告不支持传输参数。

标签: vbams-access

解决方案


而不是使用参数,使用WHERE Condition参数OpenReport

例子:

DoCmd.OpenReport "My Report", acViewNormal, , "Year(MyDateField)=" & year & " AND Month(MyDateField)=" & month

推荐阅读