ACCESS 表达式问题
你帮我看一下表达式,为什么如果离职日期空的时候,不能计算出工龄iif([离职日期]='',IIf(DateDiff('m',[入职日期],Date())\12=0,'',...
你帮我看一下表达式,为什么如果离职日期空的时候,不能计算出工龄
iif([离职日期]='',IIf(DateDiff('m',[入职日期],Date())\12=0,'',DateDiff('m',[入职日期],Date())\12 & '年') & IIf(DateDiff('m',[入职日期],Date())\12>0 And DateDiff('m',[入职日期],Date()) Mod 12>0,'零','') & IIf(DateDiff('m',[入职日期],Date()) Mod 12=0,'',DateDiff('m',[入职日期],Date()) Mod 12 & '个月'),IIf(DateDiff('m',[入职日期],[离职日期])\12=0,'',DateDiff('m',[入职日期],[离职日期])\12 & '年') & IIf(DateDiff('m',[入职日期],[离职日期])\12>0 And DateDiff('m',[入职日期],[离职日期]) Mod 12>0,'零','') & IIf(DateDiff('m',[入职日期],[离职日期]) Mod 12=0,'',DateDiff('m',[入职日期],[离职日期]) Mod 12 & '个月')) 展开
iif([离职日期]='',IIf(DateDiff('m',[入职日期],Date())\12=0,'',DateDiff('m',[入职日期],Date())\12 & '年') & IIf(DateDiff('m',[入职日期],Date())\12>0 And DateDiff('m',[入职日期],Date()) Mod 12>0,'零','') & IIf(DateDiff('m',[入职日期],Date()) Mod 12=0,'',DateDiff('m',[入职日期],Date()) Mod 12 & '个月'),IIf(DateDiff('m',[入职日期],[离职日期])\12=0,'',DateDiff('m',[入职日期],[离职日期])\12 & '年') & IIf(DateDiff('m',[入职日期],[离职日期])\12>0 And DateDiff('m',[入职日期],[离职日期]) Mod 12>0,'零','') & IIf(DateDiff('m',[入职日期],[离职日期]) Mod 12=0,'',DateDiff('m',[入职日期],[离职日期]) Mod 12 & '个月')) 展开
1个回答
展开全部
我的神哪!你弄这么复杂不出错才怪呢!
ACCESS的空值是 IS NULL一个表达式来表示 ,SQL的空值是 NULL 一个值来表示.
表达式不是一个数值,EXCEL把NULL用内嵌模块直接转换成了0,ACCESS并不是这么做.所以你还得给所有参与运算的 离职日期 一层嵌套 ,他应该是:
IIF(离职日期 IS NULL,0,离职日期)
哪有把空值拿去直接参与运算的,
建议不要做这种事情,用VBA去计算,速度会快得多,也容易表达和修改
ACCESS的空值是 IS NULL一个表达式来表示 ,SQL的空值是 NULL 一个值来表示.
表达式不是一个数值,EXCEL把NULL用内嵌模块直接转换成了0,ACCESS并不是这么做.所以你还得给所有参与运算的 离职日期 一层嵌套 ,他应该是:
IIF(离职日期 IS NULL,0,离职日期)
哪有把空值拿去直接参与运算的,
建议不要做这种事情,用VBA去计算,速度会快得多,也容易表达和修改
追问
可是代码不会写,帮我写段代码吧,我学习学习
追答
ACCESS发过来
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询