无效的字段名称访问Web应用程序

时间:2015-02-19 15:58:12

标签: access-vba field where ms-access-2013

我有一个Access Web App,我正在尝试为我的一个视图上的字段创建一个OnClick宏,以便在单击它时,它会弹出另一个视图到特定记录。目前,我的Where子句读取Where:[DistrictID] = [Districts]。[DistrictID]

当我进入应用程序并点击带有宏的字段时,我会弹出一个声明"无效的字段名称' Districts.DistrictID'。"

我能找到的唯一提到此错误的网站是:http://blogs.technet.com/b/the_microsoft_access_support_team_blog/archive/2014/08/04/access-app-invalid-field-name-lt-tablename-gt-lt-fieldname-gt-error-when-using-where-clause.aspx

该网站表示,这是由于Where子句的区分大小写。我的情况与我的表/字段完全匹配(我用其他语言编程,所以我总是根据习惯来匹配案例)。无论如何,我已经对我的拼写进行了四倍检查,甚至将字段名称复制粘贴到我的Where子句中。我仍然得到错误。

我有另一个视图,它使用不同的表/视图做类似的工作,完美无缺(其中:[ContactID] = [Contacts]。[ContactID])。

有没有人知道为什么我的Where子句不起作用,或者我可能做错了什么?

如有需要,请提供额外信息:

我会包含照片,但我的数据库中的信息很敏感,所以我会尽力描述相关信息:

我在数据库中有10个表。 "区"是我想要合作的那个。区域表有......相当多的字段,包括DistrictID,DistrictName,EmailService,SpecialComment等。然而,这四个是查询包含宏的数据表视图的字段。针对SpecialComment字段触发OnClick宏 - 单击时,我希望我的区域列表视图弹出到其特定评论被点击的同一区域(特殊注释有时会长时间运行,因此如果它被大小限制截断数据表,我希望人们能够阅读其余的信息,而无需切换到另一个视图,然后在列表中找到该区域)。区域列表视图和查询视图都在视图中具有DistrictID字段,尽管它是隐藏的。我已经尝试在两个视图中取消隐藏字段并且它没有解决问题 - 我有其他Where子句在此之前使用了DistrictID字段工作正常,所以我怀疑它会改变任何东西。那些以前的条款取代了其他功能,所以我没有让他们参考,看看为什么那个有效,而这个没有。

1 个答案:

答案 0 :(得分:1)

如果您尝试使用OpenPopup宏操作打开的视图将已保存的查询作为其记录源,则必须使用如下的查询名称:

[FieldNameHere] = [NameOfQueryHere]。[FieldNameInThatQuery]

如果您使用的是表名,请在适当的位置替换实际的表名。

有一点需要注意的是,如果您尝试打开的视图使用嵌入式查询作为其记录源,那么这种技术有时会让人失望。原因是您无法知道Access在Access 2013 Web应用程序视图的幕后创建的嵌入式查询名称。 (它实际上是幕后的GUID名称。)

我甚至不得不在我的书中添加一个特殊的故障排除说明,因为我知道人们会因此而被绊倒(页584):

故障排除 当视图基于嵌入式查询时,为什么在尝试将Where子句与OpenPopup或ChangeView操作一起使用时会出错? Access Services要求Where子句包含视图所基于的表或查询名称。将嵌入式查询定义为视图的记录源时,Access Services会创建在“导航”窗格中不可见的隐藏系统查询。因此,您不能将Where子句与OpenPopup操作或ChangeView操作一起使用,以基于嵌入式查询打开视图。要解决此限制,您可以将视图基于已保存的查询对象。请注意,Access Services还会为“摘要”视图创建一个隐藏的系统查询作为记录源。这意味着您无法使用Where子句参数打开特定记录或记录集的摘要视图。但是,上面提到的解决方法不适用于摘要视图。