【问题标题】:Access design view causing the expression to not be recognized访问设计视图导致无法识别表达式
【发布时间】:2019-02-15 18:37:48
【问题描述】:

Writing this in guided mode was kind of awkward without the titles for each segment, here goes..

总结问题:
如果 dateAdd 表达式写在设计视图中,则返回:
The expression you entered contains invalid syntax. You may have entered an operand without and operator

提供背景并告诉我们您已经尝试过什么:
这是一个新的访问文档,只是为了测试它,结果是一样的。

我有一个表和查询。该表包含一行三列。 该查询使用 dateadd 表达式更新表列之一。

显示您的代码:
DateAdd("m",4,Now()

描述预期和实际结果:
它应该按原样接受表达式,但如果它是在设计视图中编写的,则返回错误。 如果它是用 SQL 视图编写的,然后切换到设计视图,则表达式有效。

图片:

这是来自查询的设计视图,带有表达式和错误消息:

这里我已经改成 SQL 视图并添加了相同的表达式:

最后,我从 SQL 视图改回了设计视图,现在我没有从表达式中得到错误,直到我尝试从这个视图再次编辑它。

谁能告诉我为什么会发生这种情况,或者这只是 MS Access 中的一个错误?
这只发生在 dateAdd 上吗?

编辑:
如此处所示,VBA 库工作正常,在设计视图中我遇到问题。

【问题讨论】:

  • 程序可能已损坏,只需压缩并修复即可
  • 可能是缺少参考。转到菜单工具,参考并检查。
  • @S.Jose 仅​​供参考,这是一个全新的访问文档。我试着做一个紧凑和修复,没有任何改变。
  • @Gustav 在 vba 窗口 View -> Object Browser 我在 VBA 库中找到 dateadd。在您描述的路径中 Visual Basic For Applications 已启用
  • 它应该可以工作。尝试创建一个新数据库并重新创建查询。

标签: ms-access


【解决方案1】:

您可以按照以下步骤刷新 VBA 引用 Access built-in functions like Year() and Date() are not recognized

如果这不起作用,您可以使用另一个替代功能Date(),它只为您提供当前日期组件。 Now() 为您提供当前日期和时间。

您还可以通过在模块中创建一个函数来获取Now() 的值并在您的查询中使用此自定义函数来解决此问题。

Public Function GetNow() As Date
    GetNow = Now()
End Function

还要检查您的数据库中是否有任何控件、字段或其他名为 Now 的对象。

如果您认为问题出在 DateAdd 函数上,那么您可以为此构建一个解决方法:


Public Function DoDateAdd(Interval As String, Number As Integer, InputDate As Date) As Date
    DoDateAdd = DateAdd(Interval, Number, InputDate)
End Function

【讨论】:

  • 问题出在编辑器本身。可以执行dateAdd,就是写不出来i̲n̲_̲t̲h̲e̲_̲d̲e̲s̲i̲g̲n̲_̲v̲i̲e̲w̲。然而,正如我在上面对 Gustav 所评论的那样,使用 SQL 视图编写表达式的解决方法并不适用于任何地方,例如在带有 IF 块的宏编辑器中不是 SQL 视图。是的,我知道如何解决该问题(使用 SQL 视图或 for if 块;我执行查询中不起作用的代码,然后使用 IF 块查看查询的结果,该结果为 true 或false),我的问题是为什么我不能使用设计视图..
  • 工作站可能存在一些配置问题。尝试修复您的 Office 安装。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多