我的“ table1”中有6个字段。
我正在尝试为索引1创建一个更新查询,如果(当前日期+经过的月数)<下一个调整日期,则索引1为索引0,如果我不希望索引1保持当前值。
我尝试过
iif(DateAdd("m",[Table1]![Months Elapsed],[Table1]![Current Date])<[Table1]![Next Adjustment Date], [Table1]![Index 0]
我在iif公式中的[Table1]![下一个调整日期]中输入了“我输入的表达式包含无效语法”错误。
答案 0 :(得分:1)
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。另请参见this answer。
但是您的描述表明您可能实际上想要这个...
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];
答案 1 :(得分:0)
您没有指定IIf的错误部分。试试这个;
IIf(DateAdd("m",[Table1]![Months Elapsed],[Table1]![Current Date])< [Table1]![Next Adjustment Date], [Table1]![Index 0], [Table1]![Index 1])
但是,我担心您显然存储了“当前日期和月份”字段。这两个不是即时计算出来的吗?他们应该是。