使用导航子窗体上的控件访问查询参数

Access Query Parameter Using Control on Navigation Subform

我建立了一个包含导航表单的 Access 数据库。其中一个表单包括一个组合框和一个命令按钮,单击该按钮可打开根据组合框中的值筛选的报表。这是有问题的查询的稍微简化版本:

SELECT *
FROM tbl
WHERE site Like "*" & [Forms]![NavigationForm]![NavigationSubform].[Form]![comboBox] & "*";

直到今天它都运行良好。现在,当单击该按钮时,会出现一个输入框,要求为上述参数提供一个值 ([Forms]![NavigationForm]![NavigationSubform].[Form]![comboBox])。实际上,我在拆分数据库的前端工作,数据库的副本仍然可以正常工作,并且具有完全相同的 where 条件。组合框的名称没有改变。我实际上对任何导航子窗体上的所有控件都有这个问题。当 VBA 代码中出现问题时,我可以将其更改为 Me.comboBox,但这在查询参数中不起作用。

因为这是在数据库的副本上工作(但没有对其他形式进行其他更改,我不想重新创建)而不是在这个上,我不确定问题可能是什么,除非有什么这个副本从根本上是错误的。有没有办法找出可能出了什么问题?或者有什么办法可以解决这个问题?

好的,所以你使用的是宏,在这种情况下,你的开头参考有点不对。
正如您所描述的,您有一个导航表单,其中显然有一个导航子表单,它是一个组合框,它没有正确链接它的值。
正确的意思是您必须自己输入一个值,因为该控件不存在或未找到。
在我的测试中,我能够使用 openreport 通过这个宏进行引用。

您使用 Text 获取其在组合中写入的内容,如果使用隐藏列,则使用 value 获取基础代码。

编辑:

您在 where 语句中有一个额外的表单子类。

SELECT *
FROM tbl
WHERE site Like "*" & [Forms]![NavigationForm]![NavigationSubform]![comboBox].Text & "*";

我更改了导航表单的名称,现在一切正常。我仍然不太明白为什么这会有所不同,因为旧的表单名称直到上周都可以正常工作,但只要它能正常工作我就很高兴。