提问人:LostInSyntax 提问时间:11/14/2023 最后编辑:June7LostInSyntax 更新时间:11/14/2023 访问量:45
查询 MS Access 问题中的自定义字段
Custom Field in Query for MS Access Issue
问:
我正在尝试将自定义字段放入查询中。我的其他 2 个已经顺利脱落,但我一辈子都无法弄清楚我错过了什么来让这个工作。我尝试了几十种不同的代码排列。如果该列中有任何内容,我尝试采用 DateDiff(“d”,Date(),[REV_PRM_DT]),如果没有,则采用 DateDiff(“d”,Date(),[X65-SCHATS])。需要注意的是,如果 [Green_Date] 中有任何内容,它应该返回“”,如果 [REV_PRM_DT] 中的值是 01/01/2055,它应该返回“”(我们使用它作为填充物,让它不出现在其他地方)。
我希望我拉了一个愚蠢的人,错过了一些明显的东西。显示不正确的行为。
我尝试过的一些例子是:
ATS 的天数:iif(([REV_PRM_DT]<>“01/01/2055”) 和 ([Green_Date] 为 null),iif(([REV_PRM_DT] 不是 null),DateDiff(“d”,Date(),[REV_PRM_DT]),DateDiff(“d”,Date(),[X65-SCHATS])),“”)
Days_to_ATS:iif(([REV_PRM_DT]<>“01/01/2055”) 和 ([Green_Date] 为 null),iif(([REV_PRM_DT] 不为 null),DateDiff(“d”,Date(),[REV_PRM_DT]),DateDiff(“d”,Date(),[X65-SCHATS])),“”)
Days_to_ATS:iif([Green_Date] 为 null,iif([REV_PRM_DT]=“01/01/2055”,“”,iif([REV_PRM_DT]=“”,DateDiff(“d”,Date(),[X65-SCHATS]),DateDiff(“d”,Date(),[REV_PRM_DT]))),“”)
答:
我认为这些字段是日期/时间数据类型。由于 expression 应该返回一个数字值,因此不要返回 , return 或 0。使用 # 而不是引号作为日期分隔符。比需要的多。""
Null
IIf([REV_PRM_DT] <> #01/01/2055# AND [Green_Date] Is Null,
IIf(Not [REV_PRM_DT] Is Null, DateDiff("d", Date(), [REV_PRM_DT]), DateDiff("d", Date(), [X65-SCHATS])),
Null)
或简化
IIf([REV_PRM_DT] <> #01/01/2055# AND [Green_Date] Is Null,
DateDiff("d", Date(), IIf(Not [REV_PRM_DT] Is Null, [REV_PRM_DT], [X65-SCHATS])),
Null)
Is Null
是 SQL 运算符。 是 VBA 函数,但可以在 Access 查询中调用。调用 VBA 函数可能会降低性能,但可能不会明显降低。Nz()
IIf([REV_PRM_DT] <> #01/01/2055# AND [Green_Date] Is Null,
DateDiff("d", Date(), Nz([REV_PRM_DT], [X65-SCHATS])),
Null)
由于运算符,REV_PRM_DT必须<> #01/01/2005#,并且Green_Date必须为 Null 才能计算 DateDiff - 如果要在任一情况为 true 时进行计算,请使用 .也许这就是你需要的:AND
OR
IIf([REV_PRM_DT] = #01/01/2055# OR Not [Green_Date] Is Null,
Null,
DateDiff("d", Date(), Nz([REV_PRM_DT], [X65-SCHATS])))
评论
Days_to_ATS:iif([REV_PRM_DT]<>#01/01/2055# and [Green_Date] is null,IIf(Not [REV_PRM_DT] Is Null,DateDiff("d",Date(),[REV_PRM_DT]),DateDiff("d",Date(),[X65-SCHATS])),Null)
Days_to_ATS: IIf([REV_PRM_DT]<>#01/01/2055#, "Not A Problem", "Problem")
Receipt_to_ATS_(Days): iif([CHAARV]<>#09/09/9999# and [Green_Date] is null,IIf(Not [REV_PRM_DT] Is Null,DateDiff("d",[CHAARV],[REV_PRM_DT]),DateDiff("d",[CHAARV],[X65-SCHATS])),Null)
Days_to_ATS: IIf([REV_PRM_DT]=#01/01/2055# OR NOT [Green_Date] Is Null,Null,IIf([REV_PRM_DT] Is Null,DateDiff("d",Date(),[X65-SCHATS]),DateDiff("d",Date(),[REV_PRM_DT])))
评论