MS Access 查询条件问题

MS Access 查询条件问题

目前,我有一条 MS Access 数据库查询,其中有一个名为 FedEXDetTotal 的字段,总共有 9 个 FedEX 费用字段。我还有另一个来自我们内部系统的字段,名为“总费用”。这只是一个普通的数字字段。我在此查询中创建了另一个字段

Diff: [FedEXDetTotal]-[Total Charge]

这告诉我 Fedex 收费和我们实际收费之间的差额。一切正常,但当我尝试将条件 >5 用于 Diff 字段时,当我运行查询时,我收到提示“输入参数值 FedEXDetTotal”。

Access 为什么会这样做?我该如何解决这个问题?我试图从一些简单的事情开始(>5),但我真正想要的是 >[Forms]![Dis].[txtbox_Diff]。

答案1

别名可以在 Jet/ACE SQL 的 SELECT 语句中使用,但不能在 WHERE 子句中使用。

所以,这是可以的:

  SELECT FedExDetTotal, [FedEXDetTotal]-[Total Charge] AS Diff

但你不能这样做:

  SELECT FedExDetTotal, [FedEXDetTotal]-[Total Charge] AS Diff
  FROM Orders
  WHERE Diff > 5

相反,您必须重复 WHERE 子句中的所有计算,因此:

 WHERE ([FedEXDetTotal]-[Total Charge]) > 5

(括号不是必需的,但要清楚,并且对于某些运算符来说是必需的,例如 * 和 /)

某些数据库的 SQL 方言允许您在 WHERE 子句中使用别名,但我的理解是 Jet/ACE 方式与 SQL 标准完全一致。

事实是,如果您使用 Access 查询生成器编写 SQL,它会为您完成此操作。

答案2

文章来自 Microsoft 的可能有助于解决您的问题。我假设您的数据库中有一些数据可用于测试该查询。

相关内容