MS Access 问题查询中的自定义字段

问题描述 投票:0回答:1

我正在尝试在查询中添加自定义字段。我的另外两个已经顺利完成,但我一生都无法弄清楚我缺少什么来让这个工作。我已经尝试了数十种不同的代码排列。如果该列中有任何内容,我尝试采用 DateDiff("d",Date(),[REV_PRM_DT]) ,如果没有,则采用 DateDiff("d",Date(),[X65-SCHATS]) 。需要注意的是,如果 [Green_Date] 中有任何内容,则应返回“”,如果 [REV_PRM_DT] 中的值为 01/01/2055,则应返回“”(我们使用它作为填充符以使其不显示)其他地方)。

我希望我犯了一个愚蠢的错误并错过了一些明显的东西。Showing incorrect behavior.

我尝试过的一些例子是:

ATS 的天数:iif(([REV_PRM_DT]<>"01/01/2055") and ([Green_Date] is null),iif(([REV_PRM_DT] is not null),DateDiff("d",Date() ,[REV_PRM_DT]),DateDiff("d",Date(),[X65-SCHATS])),"")

Days_to_ATS:iif(([REV_PRM_DT]<>"01/01/2055") and ([Green_Date] 为空),iif(([REV_PRM_DT] 不为空),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]))),"")

ms-access ms-access-2016
1个回答
0
投票

我认为这些字段是日期/时间数据类型。不要退货

""
,退货
Null
。使用 # 代替引号作为日期分隔符。括号数量超出需要。

IIf([REV_PRM_DT] <> #01/01/2055# AND [Green_Date] Is Null, 
   IIf([REV_PRM_DT] Not 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([REV_PRM_DT] Not Is Null, [REV_PRM_DT], [X65-SCHATS])), 
   Null)

Is Null
是 SQL 运算符。
Nz()
是VBA函数,但可以在Access查询中调用。

IIf([REV_PRM_DT] <> #01/01/2055# AND [Green_Date] Is Null, 
   DateDiff("d", Date(), Nz([REV_PRM_DT], [X65-SCHATS])), 
   Null)
© www.soinside.com 2019 - 2024. All rights reserved.