怎样根据一个给定日期自动计算其它日期字段的值
描述在图片里。作者: 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;