MS Access2007:如何使用更新查询更新表中的日期/时间值

时间:2014-07-31 09:54:44

标签: ms-access-2007

    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无法更新所述字段。 我使用的代码错了吗?或者我应该尝试以不同的方式更新所述字段? 谢谢。

1 个答案:

答案 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。

希望这有帮助!