access身份证号码或出生日期为空时换算性别,年龄错误

我首先在查询中以身份证号码换算出性别、出生日期,再用出生日期换算出年龄。如下:
性别: IIf(Len([居民身份证号])=18,IIf(Mid([居民身份证号],Len([居民身份证号])-1,1) Mod 2=0,"女","男"),IIf(Right([居民身份证号],1) Mod 2=0,"女","男"))

出生日期
出生日期: IIf(Len([居民身份证号])=15,DateSerial("19" & Mid([居民身份证号],7,2),Mid([居民身份证号],9,2),Mid([居民身份证号],11,2)),DateSerial(Mid([居民身份证号],7,4),Mid([居民身份证号],11,2),Mid([居民身份证号],13,2)))

现时年龄
年龄: Int(DateDiff("m",[出生日期],Date())/12) & "岁另" & DateDiff("m",[出生日期],Date()) Mod 12 & "个月"

但当身份证号码没有数据时,查询表显示“# 错误”
1、要当身份证号码为空时,查询表不显示“# 错误”并返回空值,如何处理
2、用出生日期换算年龄,出生日期为空时,查询表不显示“# 错误”并返回空值,如何处理

那你就先判断一下啊,判断当居民身份证号码为空时返回一个什么值。你那取位函数可以给个条件啊,当身份证是空时他是个什么数,不是时他是取位数。用IIF()函数啊
IIF(居民身份证号 IS NULL,DAY(date()),MID(身份证号),7,2)
因为身份证号字段类型未必和DATE一样
温馨提示:答案为网友推荐,仅供参考
相似回答