IIf("Duration"=1,DateAdd("m",[testTable]![Starting date],11),IIf
("Duration"=2,DateAdd("m",[testTable]![Starting date],23),DateAdd("m",
[testTable]![Starting date],5)))
我正在尝试更新名为“结束日期”的字段。 我创建了一个更新查询,其中包含在Update To:字段中输入的上述代码。 运行它时发生错误,指出Access无法更新所述字段。 我使用的代码错了吗?或者我应该尝试以不同的方式更新所述字段? 谢谢。
答案 0 :(得分:0)
您在查询中有一些错误。首先,DateAdd函数按以下顺序接受参数。添加的间隔(日,月或年等),然后添加的天数/月/年。跟随您要添加此号码的日期。
您遇到的下一个错误是持续时间。如果是字段名称,则应按照处理开始日期的方式对待它。因此,基于您的代码的更正。
UPDATE
testTable
SET
testTable.endDateField = IIf(
testTable.Duration = 1,
DateAdd("m", 11, testTable.[Starting date]),
IIf(
testTable.Duration = 2,
DateAdd("m", 23, testTable.[Starting date]),
DateAdd("m", 5, testTable.[Starting date])
)
);
另一方面,我建议你创建一个表,其中包含持续时间和在另一列中添加的天数。
durationNo | noOfMonths
------------+--------------
1 | 11
2 | 23
3 | 5
然后,您可以使用JOIN简化更新查询,而无需使用IIF。
希望这有帮助!