- 5
- 0
- 约5.67千字
- 约 3页
- 2017-08-06 发布于河南
- 举报
日期型变量具有一些与文本型与数字型变量不同特性
日期型变量具有一些与文本型和数字型变量不同的特性,对于初学者来说处理日期型变量容易犯迷糊。这两日在为版友版友zww3008同志和宋雄健同志解决相关问题时,涉及到日期型变量的两个常见的问题。关于这两个问题的处理有一定的典型意义,于是写此文以期能对其他初学者提供参考。
?
版友zww3008 同志关于工时的数据表中将日期和时间分为不同字段处理,于是在统计工时的时候就产生了一个转钟的麻烦,使得某些记录的开始时间大于了结束时间。解决这个问题首先可以想到的是用iif函数,可以写成如下:
?
Select 工作单号, Sum(IIf(DateDiff(n,[开始时间],[结束时间])0,DateDiff(n,[开始时间],[结束时间])+24*60,DateDiff(n,[开始时间],[结束时间]))) AS 工时FROM tblGcGZDmxGROUP BY 工作单号;
?
这样写有个问题,就是公式书写比较复杂,有些眼花缭乱。有没有相对简洁一些的写法呢?答案是肯定的。在给出答案前,需要说明一个基本算法。逻辑值有个特点,就是True=-1,False=0。其中True=-1这个特点非常有意思,可以利用这个特点,可以得到一些特殊的算法。比如向上取整的问题,我们可以这样写:int(x)-(xint(x)),如果x是一个带有小数的值,那么xint(x)就为True,也就是-1。因此-(xint(x)就为1,这样的一个算式就达到了向上取整的目的。有了这么个阐述,版友zww3008 同志的问题就可以这样解决了:
Select 工作单号, Sum(DateDiff(n,[开始时间],[结束时间])-([开始时间][结束时间])*24*60) AS 工时FROM tblGcGZDmxGROUP BY 工作单号;
版友宋雄健同志弄了一个刷卡表,为了防止员工重复刷卡,希望能在某个员工刷卡后的5分钟内,禁止重复刷卡。为此给他写了一个自定义函数。这个函数很简单,不是讨论的重点。重点在于日期型变量如何使用Nz函数的问题。Nz函数主要用于解决变量为null的情形,我们比较常用的是在变量为null将其取为0或,这是解决数值型和文本型变量的基本用法。可是对于日期型,就不能这样个搞法了。实际上nz函数的第二个参数,除了可以设置为0和外,也可以设置为其他的值。也就是说,我们完全可以根据特定的要求,将这个参数设定为特定的值。
就宋雄健同志问题来看,是需要用Dlast来取得某个员工最后一次刷卡的时间做为判断的基础。但是Dlast第一次使用时,其值为null。这个时候就需要用Nz函数对第一次的取值进行设置了,按照问题来看,设置Nz函数的第二个参数,应该为DateAdd(n, -5, Now())。
?
Function B(str As String) As BooleanDim t As Datet = Nz(DLast(刷卡时间, 刷卡表, 员工编号= str ), DateAdd(n, -5, Now()))B = FalseIf DateDiff(n, t, Now()) 5 And Me.List4.ListCount 0 Then??? Me.员工编号.Value = Null??? B = TrueEnd IfEnd Function
类似的应用还可以在以时间为基础的自动编码方面,比如说要按照每日从001自动编码,那么我们可以将自动编码写为:
?
Function Num(D as Date) as stringdim str as stringstr=Nz(Dmax(编码,表1,日期=# D #),D 000)str=Format(Right(str,3)+1,000)str=D strNum=strEnd Function
您可能关注的文档
- 德国OBO防雷器选型和价格.doc
- 必修1+第4章第1节“质壁分离和复原”实验和其拓展.ppt
- 德语支配第二格动词与形容词分类.doc
- 必修一,酸碱盐在水溶液中电离.ppt
- 必修1 第二单元 第一讲 细胞膜和细胞核(含生物膜流动镶嵌模型).ppt
- 彩色荒漠1.ppt
- 必修一4-2生物膜流动镶嵌模型与物质跨膜运输方式.ppt
- 必修三第二章第一节通过神经系统调节.doc
- 快速删除Word中空白行方法.doc
- 快速修复(最经典快捷键.doc
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国黄铜合页行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国竹工艺家具行业投资前景及策略咨询研究报告.docx
- 2025年中国微机数显自动分析仪市场调查研究报告.docx
- 2026年及未来5年内中国微尘白色粉笔行业投资前景及策略咨询研究报告.docx
- 2025年中国微电脑型压胶机市场调查研究报告.docx
- 2026年及未来5年内中国数字化等功游泳训练测试系统行业投资前景及策略咨询研究报告.docx
- 2025年中国圆形花瓶市场调查研究报告.docx
- 2026年及未来5年内中国植物纤维静淀过滤器行业投资前景及策略咨询研究报告.docx
- 2025年中国超音波手套机市场调查研究报告.docx
原创力文档

文档评论(0)