【问题标题】:MS Access Update Query with an IIF and DATEADD functions带有 IIF 和 DATEADD 函数的 MS Access 更新查询
【发布时间】:2018-11-07 21:26:39
【问题描述】:

我的“table1”中有 6 个字段。

  • 当前日期
  • 下次调整日期
  • 经过的月数
  • 索引 0
  • 索引 1
  • 索引 2。

我正在尝试为索引 1 创建一个更新查询,如果(当前日期+经过的月份)

我试过了

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

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

【问题讨论】:

    标签: ms-access dateadd iif-function


    【解决方案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 缺少第三个参数,这是条件(第一个参数)不为真时返回的值。数据库引擎不会抱怨,在这种情况下会返回 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];
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多