我没有意识到我最初的帖子(我删除了)是在一个新手帐户下发布的 - 抱歉......
无论如何,这是我的问题:
我有一个列出各种“顾问”的主要表格。此主表单还具有可用于过滤列表的参数“顾问类型”“开始日期”和“结束日期”。
我们需要一份报告,列出某种类型的“顾问”。请记住,此“类型”过滤器可以应用于 4 个不同类型字段中的任何一个(“type1”、“type2”、“type3”、“type4”)。
我想要做的是将运行报告的按钮放在主窗体上,因为“顾问类型”参数已经存在。然后,我想根据该参数(以及我已经完成的日期参数)生成 SQL,并使用该记录集来填充报告。
SQL 工作正常,但是结果数据没有传递给报告,所以我得到了所有记录,而不仅仅是我想要的记录。报表对象的记录源设置为背景表以填充字段/文本框。
这是代码
在主窗体上
Private Sub Button_Click()
Dim s As String
If IsNull(Me.Type.Value) Then
MsgBox "Please Select a Type", vbCritical, "Report Error"
Else
s = "Select Consultant.* from Consultant "
s = s & "Where ((consultant.typeone = '" & Me.Type.Value & "') OR (Consultant.typetwo = '" & Me.Type.Value & "') OR (Consultant.typethree = '" & Me.Type.Value & "') OR (Consultant.typefour = '" & Me.Type.Value & "'))"
s = s & "And (((Consultant.[End date]) <= DateAdd(""d"", -730, Now()))) ORDER BY Consultant.Last_Name"
DoCmd.OpenReport "RptList", acViewPreview, , , acDialog
End If
结束子
现在,很明显,当我打开报告时,这一切都结束了,因为 DoCmd 中没有任何内容显示“使用此记录集”。这就是我的问题。
我试图避免创建一个单独的小下拉表单来填充我面前的一段数据。此外,使用 Forms![MainForm]![Type].Value 将 SQL 直接插入报表的记录源。“类型”变量的值不起作用。我怀疑这可能与单击报告按钮时表单未处于活动状态有关?
我认为 QueryDef 可能会起作用。但是,我没有掌握如何实现它,以便知道它是否会起作用。我一直在谷歌搜索......
我不知道我错过了什么。帮助!