不确定访问97语法

时间:2014-04-14 15:44:33

标签: ms-access syntax

我正在使用 Access 2013 ,我正在使用来自97的访问文件。所以它已经从97转换为03和03到07,现在我用访问2013 。我之前的开发人员编写了具有此[Forms]![frmSearch]![txtboxSearch]语法的标准。

根据我的理解,frmSearch是此访问文件中的一个表单,txtboxSearch是一个textbox字段,用户可以输入日期...我不明白为什么有[]围绕一切而且!在中间。另外为什么一开始就有[Forms]

我尝试过谷歌搜索97的访问语法,但找不到任何相关的内容。

最后一件事,每当我尝试运行这些查询时,我的参数文本框都会显示Forms!frmSearch!txtboxSearch,我也不太清楚它为什么会发生。

2 个答案:

答案 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]

如果您仍然遇到问题,请告诉我们您是如何尝试使用该查询的。