Office中国论坛/Access中国论坛

标题: 求助:怎样根据一个给定日期自动计算其它日期字段的值 [打印本页]

作者: shitou1ge    时间: 2010-1-13 17:33
标题: 求助:怎样根据一个给定日期自动计算其它日期字段的值
本帖最后由 shitou1ge 于 2010-1-14 09:27 编辑

怎样根据一个给定日期自动计算其它日期字段的值
描述在图片里。
作者: shitou1ge    时间: 2010-1-13 17:34
请高手帮帮忙啊
作者: shitou1ge    时间: 2010-1-14 09:25
没人理俺
作者: styhs    时间: 2010-1-14 13:57
使用Access的查询视图,其SQL非常不优雅:
SELECT a.取证时间, IIf(DateAdd("yyyy",2,a.取证时间)>Date(),"",DateAdd("yyyy",2,a.取证时间)) AS 第一次复审,
IIf(IsNull(a.上一次复审),"",DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2,a.取证时间)) AS 上一次复审,
IIf(IsNull(a.上一次复审),DateAdd("yyyy",2,a.取证时间),DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2+2,a.取证时间)) AS 下一次复审
FROM 表1 AS a
如果允许使用VBA例程、进行逐笔赋值,可以让代码优雅些。
作者: styhs    时间: 2010-1-14 13:57
使用Access的查询视图,其SQL非常不优雅:
SELECT a.取证时间, IIf(DateAdd("yyyy",2,a.取证时间)>Date(),"",DateAdd("yyyy",2,a.取证时间)) AS 第一次复审,
IIf(IsNull(a.上一次复审),"",DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2,a.取证时间)) AS 上一次复审,
IIf(IsNull(a.上一次复审),DateAdd("yyyy",2,a.取证时间),DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2+2,a.取证时间)) AS 下一次复审
FROM 表1 AS a
如果允许使用VBA例程、进行逐笔赋值,可以让代码优雅些。
作者: shitou1ge    时间: 2010-1-14 15:44
谢谢styhs 可是我改了改之后:第一次复审为空的时侯 上一次复审却成了取证的时间 如图:
作者: shitou1ge    时间: 2010-1-14 15:44
本帖最后由 shitou1ge 于 2010-1-14 15:46 编辑

我就是改了红字部份 不然上一次复审一列为空
SELECT a.取证时间, IIf(DateAdd("yyyy",2,a.取证时间)>Date(),"",DateAdd("yyyy",2,a.取证时间)) AS 第一次复审,
IIf(a.第一次复审,"",DateAdd("yyyy",(Int(DateDiff("m",a.取证时间,Date())/24))*2,a.取证时间)) AS 上一次复审,
IIf(a.上一次复审,DateAdd("yyyy",2,a.取证时间),DateAdd("yyyy",Int(DateDiff("m",a.取证时间,Date())/24)*2+2,a.取证时间)) AS 下一次复审
FROM 表1 AS a;




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3