0

我的“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]

一旦我在 iif 公式中输入 [Table1]![Next Adjustment Date],我就会收到“您输入的表达式包含无效语法”错误。

4

2 回答 2

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。另请参阅此答案

但是,您的描述表明您实际上可能想要这个...

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

...但是对于 a 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];
于 2018-11-08T17:30:46.810 回答
0

您没有指定 IIf 的错误部分。尝试这个;

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

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

于 2018-11-08T11:04:54.277 回答