我希望访问参数查询向用户询问一个值(在这种情况下为位置)。当我在“条件”字段中键入[Enter location]
时,它可以正常工作:我得到一个对话框(输入参数值),其中包含一个文本框和我的文本(输入位置)。到目前为止,一切都很好。这有效(结果也)。
但是现在我希望用户可以使用下拉列表/组合框(而不是textbox)来选择位置。我做了一个表单,然后在“条件”字段中键入Forms![Form1]![CmbLocation]
。
像这样:http://office.microsoft.com/en-us/access/HA011170771033.aspx
但是我仍然得到一个文本框(引用作为textlabel)。
我究竟做错了什么?有什么建议吗?
最佳答案
除了Albert的建议之外,您可能还希望在查询本身中完成此工作,以便它是“可引导的”。为此,您必须编写函数,该函数返回在窗体的组合框中选择的值。就像这样:
Public Function ReturnMyCriterion() As Variant
DoCmd.OpenForm "dlgGetCriterion", , , , , acDialog
With Forms!dlgGetCriterion
If .Tag <> "Cancel" Then
ReturnMyCriterion = Nz(!cmbMyCombo, "*")
End If
Else
ReturnMyCriterion = "*"
End With
Close acForm, "dlgGetCriterion"
End Function
(当使用acDialog开关打开表单时,只要表单处于打开状态或可见状态,代码就会暂停;要从组合框中获取该值,必须将表单的.Visible属性设置为False。您可以在组合框或单击“确定”按钮中的AfterUpdate事件。您还需要一个“取消”按钮,将表单的.Tag属性设置为“取消”,然后将表单的.Visible属性设置为False;这都是相对标准的Access中使用对话框表单的方法)。
然后,您将查询中的条件设为:
Like ReturnMyCriterion()
也就是说,假设您要在组合框中没有选择任何值的情况下返回所有记录。