Ms access Access 2007参数查询中的下拉列表

Ms access Access 2007参数查询中的下拉列表,ms-access,ms-access-2007,Ms Access,Ms Access 2007,我需要一个访问参数查询来向用户询问一个值(在本例中是一个位置)。当我在条件字段中键入[输入位置]时,它工作正常:我得到一个对话框(输入参数值),其中有一个文本框和我的文本(输入位置)。到目前为止,一切顺利。这是有效的(结果也是如此) 但现在我需要一个下拉/组合框(而不是文本框),供用户选择位置。我制作了一个表单,并键入表单![表格1]![CMB位置]在条件字段中 像这样: 但我仍然得到一个文本框(引用为textlabel) 我做错了什么?有人有什么建议吗?如果您从查询中删除了参数,然后将上面的表

我需要一个访问参数查询来向用户询问一个值(在本例中是一个位置)。当我在条件字段中键入
[输入位置]
时,它工作正常:我得到一个对话框(输入参数值),其中有一个文本框和我的文本(输入位置)。到目前为止,一切顺利。这是有效的(结果也是如此)

但现在我需要一个下拉/组合框(而不是文本框),供用户选择位置。我制作了一个表单,并键入
表单![表格1]![CMB位置]
在条件字段中

像这样:

但我仍然得到一个文本框(引用为textlabel)


我做错了什么?有人有什么建议吗?

如果您从查询中删除了参数,然后将上面的表单表达式重新输入到查询生成器中,那么它应该可以工作

因此,在查询生成器中的“条件”部分键入

[forms]![form1]![Combo4]
确保组合框的表单名和控件名正确

您不需要在查询生成器中键入任何其他内容。如上所述,删除以前在查询生成器中出现的旧参数提示


现在,打开表单,选择组合框,然后尝试打开查询,它应该在没有任何提示的情况下打开。注意:这种方法意味着表单必须打开,并且在您尝试启动查询之前,组合框将被选择一个值。因此,如果您基于此查询创建报告,则单击按钮以与带有组合框的表单相同的表单启动报告。这在很大程度上确保了表单在您尝试启动基于该查询的查询或报告之前处于打开状态

除了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

也就是说,如果组合框中没有选择值,则假设您希望返回所有记录。

谢谢,在运行查询之前打开表单会有所不同。但是我必须制作我自己的表单,我真正的,真正的是标准的MS Access“输入参数值”对话框,它显示一个组合框而不是一个文本字段。这有可能吗?如果你把问题翻过来,你就能做到这一点。该参数很可能用于报告。因此,只需使用组合框启动表单,然后让表单启动报表。例如:docmd.OpenReport“report name”,acViewPreview,,“some id=“&me.MyComboBox”,因此最好从查询中删除该参数,否则它将极大地控制您在这里的生活。您不能在其他任何地方使用带有硬编码参数的查询。从查询中删除所有参数极大地增加了灵活性,并允许您在代码中提供任何参数,如上所示。我也不喜欢硬连接表单以打开单个报表,但从其他位置以对话框形式打开表单并收集打开报表所需的条件非常简单。这样的话,表单就不需要知道它从哪里调用,或者它的标准是用来做什么的。你把你试图替换的参数放在同一个地方。我想我误解了这个问题。你必须把代码放在一个独立的模块中。@David-W-Fenton,你能看看我昨天发布的这个问题吗,因为它是密切相关的,谢谢:
  Like ReturnMyCriterion()