具有IIF和DATEADD函数的MS Access更新查询



我的"table1"中有6个字段。

  • 当前日期
  • 下一次调整日期
  • 已用月数
  • 索引0
  • 索引1
  • 索引2

我正在尝试为索引1创建一个更新查询,如果(当前日期+经过的月份(<下一个调整日期,那么索引1就是索引0,如果不是的话,我希望索引1保持在它当前的值。

我试过这个

iif(DateAdd("m",[Table1]![Months Elapsed],[Table1]![Current Date])<[Table1]![Next Adjustment Date], [Table1]![Index 0]

我一放进[表格1]![下一次调整日期]在iif公式中,我收到"您输入的表达式包含无效语法"错误。

iif(与关闭的)不匹配

计算SELECT查询中的语法。然后在UPDATE中使用该工作字段表达式。这是我的建议。。。

SELECT
IIf
(
DateAdd('m', t1.[Months Elapsed], t1.[Current Date]) < t1.[Next Adjustment Date],
t1.[Index 0]
)
FROM Table1 AS t1;

请注意,IIf缺少第三个参数,这是当条件(第一个参数(不为True时返回的值。数据库引擎不会抱怨,在这种情况下会返回Null。另请参阅此答案。

然而,你的描述表明你可能真的想要这个。。。

IIf
(
DateAdd('m', t1.[Months Elapsed], t1.[Current Date]) < t1.[Next Adjustment Date],
t1.[Index 0],
t1.[Index 1]
)

但对于UPDATE,将该条件移动到WHERE子句并仅更新那些行对我来说更有意义。。。

UPDATE Table1 AS t1
SET t1.[Index 1] = t1.[Index 0]
WHERE DateAdd('m', t1.[Months Elapsed], t1.[Current Date]) < t1.[Next Adjustment Date];

您没有指定IIf的false部分。试试这个;

IIf(DateAdd("m",[Table1]![Months Elapsed],[Table1]![Current Date])< [Table1]![Next Adjustment Date], [Table1]![Index 0], [Table1]![Index 1])

然而,我担心您显然已经为"当前日期"one_answers"经过的月份"存储了字段。这两个不是都在计算吗?他们应该是。

最新更新