【access小品】对于时间的NZ与IIF-煮江品茶
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-教程


【access小品】对于时间的NZ与IIF

发表时间:2011/7/11 16:33:14 评论(8) 浏览(10702)  评论 | 加入收藏 | 复制
   
摘 要:对于时间的NZ与IIF
正 文:

  日期型变量具有一些与文本型和数字型变量不同的特性,对于初学者来说处理日期型变量容易犯迷糊。这两日在为版友版友zww3008同志和宋雄健同志解决相关问题时,涉及到日期型变量的两个常见的问题。关于这两个问题的处理有一定的典型意义,于是写此文以期能对其他初学者提供参考。

 

  版友zww3008 同志关于工时的数据表中将日期和时间分为不同字段处理,于是在统计工时的时候就产生了一个转钟的麻烦,使得某些记录的开始时间大于了结束时间。解决这个问题首先可以想到的是用iif函数,可以写成如下:

 

Select 工作单号, Sum(IIf(DateDiff("n",[开始时间],[结束时间])<0,DateDiff("n",[开始时间],[结束时间])+24*60,DateDiff("n",[开始时间],[结束时间]))) AS 工时
FROM tblGcGZDmx
GROUP BY 工作单号;

 

  这样写有个问题,就是公式书写比较复杂,有些眼花缭乱。有没有相对简洁一些的写法呢?答案是肯定的。在给出答案前,需要说明一个基本算法。逻辑值有个特点,就是True=-1,False=0。其中True=-1这个特点非常有意思,可以利用这个特点,可以得到一些特殊的算法。比如向上取整的问题,我们可以这样写:int(x)-(x>int(x)),如果x是一个带有小数的值,那么x>int(x)就为True,也就是-1。因此-(x>int(x)就为1,这样的一个算式就达到了向上取整的目的。有了这么个阐述,版友zww3008 同志的问题就可以这样解决了:


Select 工作单号, Sum(DateDiff("n",[开始时间],[结束时间])-([开始时间]>[结束时间])*24*60) AS 工时
FROM tblGcGZDmx
GROUP BY 工作单号;


  版友宋雄健同志弄了一个刷卡表,为了防止员工重复刷卡,希望能在某个员工刷卡后的5分钟内,禁止重复刷卡。为此给他写了一个自定义函数。这个函数很简单,不是讨论的重点。重点在于日期型变量如何使用Nz函数的问题。Nz函数主要用于解决变量为null的情形,我们比较常用的是在变量为null将其取为0或"",这是解决数值型和文本型变量的基本用法。可是对于日期型,就不能这样个搞法了。实际上nz函数的第二个参数,除了可以设置为0和""外,也可以设置为其他的值。也就是说,我们完全可以根据特定的要求,将这个参数设定为特定的值。

  
  就宋雄健同志问题来看,是需要用Dlast来取得某个员工最后一次刷卡的时间做为判断的基础。但是Dlast第一次使用时,其值为null。这个时候就需要用Nz函数对第一次的取值进行设置了,按照问题来看,设置Nz函数的第二个参数,应该为DateAdd("n", -5, Now())。

 

Function B(str As String) As Boolean
Dim t As Date
t = Nz(DLast("刷卡时间", "刷卡表", "员工编号='" & str & "'"), DateAdd("n", -5, Now()))
B = False
If DateDiff("n", t, Now()) < 5 And Me.List4.ListCount <> 0 Then
    Me.员工编号.Value = Null
    B = True
End If
End Function

  
  类似的应用还可以在以时间为基础的自动编码方面,比如说要按照每日从001自动编码,那么我们可以将自动编码写为:

 

Function Num(D as Date) as string
dim str as string
str=Nz(Dmax("编码","表1","日期=#" & D & "#"),D & "000")
str=Format(Right(str,3)+1,"000")
str=D & str
Num=str
End Function


Access软件网交流QQ群(群号:198465573)
 
 相关文章
表达式中必须使用空值函数(nz())  【王樵民  2010/2/10】
【Access入门】直观解释nz函数,nz函数入门示例一则,将空值...  【麥田  2012/9/7】
常见问答
技术分类
相关资源
文章搜索
关于作者

煮江品茶

文章分类

文章存档

友情链接