我的"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"经过的月份"存储了字段。这两个不是都在计算吗?他们应该是。