我有一个从表单运行的查询。该表单使用组合框供用户选择导致查询运行的参数。我真正想要的是自动运行该查询的报告。这是我必须从表单激活查询的事件代码:
Private Sub EmpName_AfterUpdate()
DoCmd.OpenQuery "TrainingRecords", acViewNormal, acEdit
DoCmd.Close acForm, "EmployeeTrainingRecords"
End Sub
更明白现在的做法:
我想要什么
显然,查询必须在那里的某个地方运行,但我不知道如何在没有用户看到所有内容的情况下运行查询来创建报告。
答案 0 :(得分:1)
你实际上已经走上了正轨 你只需要稍微改变一下你的想法......
查询不需要来自Form。报告可以“拥有”查询,您只需告诉它即可。这包括能够发送您的参数值。
有很多方法可以做到这一点。评论中经验丰富的人员提供的链接非常简单......
如果您首先创建报告,忽略其查询中的任何“Where”子句,您只需在DoCmd.OpenReport中添加“Where”... 他们很容易: - )。
所以基本的例子是:
'--- variable for holding the parameter ---
Dim strMyParameter As String
'--- Get the parameter value from a combobox on this current form ---
strMyParameter = Me.cbxMyComboBox.Value
'--- Use the value in opening the report in a new window ---
DoCmd.OpenReport "myReport", acViewPreview, Null, "ID=" & strMyParameter, acWindowNormal, Null
其中
- 第一个参数是MS Access中报告的名称
- 第二个是你想看到它(我把它作为上面的打印预览)
- 第三个是初始记录过滤器子句,我忽略了“Null”
- 第五个是一个窗口状态,你可以在大多数情况下作为acWindowNormal留下 - 最后一个是你不需要的特殊参数对象,也被忽略了“Null”
Here is the MSDN page for this particular function
And here is the link to an SO page with almost but not quite the same Question,由@ashleedawg在最初的评论中分享 它包括许多讨论和其他一些方法,以及