我正在使用 Access 2013 ,我正在使用来自97的访问文件。所以它已经从97转换为03和03到07,现在我用访问2013 。我之前的开发人员编写了具有此[Forms]![frmSearch]![txtboxSearch]
语法的标准。
根据我的理解,frmSearch是此访问文件中的一个表单,txtboxSearch
是一个textbox
字段,用户可以输入日期...我不明白为什么有[]围绕一切而且!在中间。另外为什么一开始就有[Forms]
?
我尝试过谷歌搜索97的访问语法,但找不到任何相关的内容。
最后一件事,每当我尝试运行这些查询时,我的参数文本框都会显示Forms!frmSearch!txtboxSearch
,我也不太清楚它为什么会发生。
答案 0 :(得分:0)
方括号允许您使用具有嵌入空格的名称。 !
符号是一种特殊的VBA语法,实质上意味着"调用默认的" get item"左侧对象上的方法,并使用右侧的字符串作为该方法的键。
您只需使用方括号,因为您使用的是!
语法。你给我的字符串评估为:
Forms.Item("frmSearch").Controls("txtboxSearch")
我会将其更改为点(.
)语法,该语法直接使用早期绑定。
答案 1 :(得分:0)
假装您的查询符合此标准......
WHERE some_field = [Forms]![frmSearch]![txtboxSearch]
这要求db引擎为您提供 some_field 的值等于名为的表单上名为 txtboxSearch 的控件中包含的值的行frmSearch
要使其正常工作,必须在表单视图中打开 frmSearch 。如果表单未打开,则db引擎无法找到 txtboxSearch 的值,然后会要求您提供该值。
您还询问了[]
个字符。您的表单和控件名称不需要这些。所以,如果第一个WHERE
条款有效,那么这个条款也会......
WHERE some_field = Forms!frmSearch!txtboxSearch
但是,如果其中一个名称与保留字匹配或包含麻烦的字符,则方括号将向db引擎发出信号,表示在[]
之间找到的任何内容都是对象标识符。
!
表示"成员"。所以[Forms]![frmSearch]![txtboxSearch]
表示"在Forms集合中查找名为 frmSearch 的表单,并引用其中一个名为 txtboxSearch "
这是一个简单的概述,但可能有其他细节可能会带来麻烦。例如,如果您使用查询作为记录集的数据源,即使表单在窗体视图中打开,Access也可能无法识别[Forms]![frmSearch]![txtboxSearch]
。
如果您仍然遇到问题,请告诉我们您是如何尝试使用该查询的。