【问题标题】:How to stop Access from "correcting" my queries?如何阻止 Access “更正”我的查询?
【发布时间】:2023-03-05 15:54:01
【问题描述】:

当我在 Access 中有子查询时,它会尝试在不询问的情况下“更正”它们,并在此过程中中断查询。例如,

Select * from TblA LEFT JOIN (Select * from [TblB] union Select * from [TblC]) as SubQry On TblA.Whatever = SubQry.Whatever

当我第一次运行它时,它运行良好。但是,在我保存并尝试重新打开它之后,Access 会尝试“提供帮助”并将括号更改为括号:

Select * from TblA LEFT JOIN [Select * from [TblB] union Select * from [TblC]]。作为 TblA 上的 SubQry.Whatever = SubQry.Whatever

当然,这会引发错误。选项菜单中是否有一个选项我可以切换以使 Access 停止尝试“帮助”我?

(脚注:实际表名比“TblB”更复杂,需要放在括号中才能识别)。

【问题讨论】:

  • 如果可以的话+100。我讨厌 Access 的这个“功能”。
  • 我迫不及待地想在 MS Word 中看到这个功能。想象一下编写一个 Word 文档并保存它。稍后,您重新打开它,发现 Word 对您的文本进行了一些“有用的”更正,而无需询问您,也无需告诉您。自然,用户无法停用此功能。现在这怎么可能出错???
  • 什么版本?它在 2007 年没有对我这样做......
  • 如果您的第二条 SQL 语句实际上是它正在被更正的内容,则 Access 实际上是在犯错误。但我怀疑你记错了——派生表应该是这样的:[...]. as SubQry——注意括号后面的尾随句点。但是,您的实际子查询是完全无效的,因为它试图 UNION 带有表名的 SELECT 语句。你不能那样做。您可能的意思是:[SELECT * FROM TblB UNION SELECT * FROM TblC]. as SubQry.

标签: ms-access ms-access-2003


【解决方案1】:

AFAIK,你不能。子查询周围的括号始终更改为方括号,如果要重新保存,则必须还原它。
您所能做的就是将子查询保存为单独的查询并使用该查询,直到您的应用程序真正稳定为止,然后将子查询集成到主查询中。

【讨论】:

  • 您可以通过在 Access 中打开 ANSI 92 SQL 模式来解决这个问题,这允许您使用传统的圆括号,但这会对 Access 的某些部分产生影响(例如,它会更改)保留字列表(可能导致工作 SQL 中断)并防止多列组合框使用自动完成扩展)。
猜你喜欢
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多