关于在access中怎么才能根据身份证号码(15位或18位)筛选出用户性别? 多谢各位!!
有个问题 我想请教你一下:就是关于在access中 怎么才能根据身份证号码(15位或18位)筛选出用户性别 我找到了一个在EXCEL中的方法:=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")” 但是由于我的数据量很大 只能在access中操作 你说我怎么写这个语句呢?
http://gy0503.id666.com 我的主页,支持一下点击率,上面有美女的。
我的邮箱:gy0503@126.com
1、先把下列代码复制到代码窗口任意位置 :
Function idcode(sCode15 As String) As String
Dim i As Integer
Dim num As Integer
Dim code As String
num = 0
idcode = Left(sCode15, 6) + "19" + Right(sCode15, 9)
For i = 18 To 2 Step -1
num = num + (2 ^ (i - 1) Mod 11) * (Mid(idcode, 19 - i, 1))
Next i
num = num Mod 11
Select Case num
Case 0
code = "1"
Case 1
code = "0"
Case 2
code = "X"
Case Else
code = Trim(Str(12 - num))
End Select
idcode = idcode + code
End Function
2、如果你的数据很多,在成为当前的代码里,把15位号变为18位,再根据18位号码让性别显示男或女,然后设置计时器,在计时器触发事件里写入进入下一记录的代码,这样当你加载窗体里,数据会自动移动并更新,但到最后一条记录里会出现错误,因为到最后一条时,下一条记录是新添加记录,不过没关系,出现错误时按结束就行了。
Private Sub Form_Current()
'在成为当前中添加代码
Dim gy As String '声明变量
If Len(身份证号码) = 15 Then
gy = idcode(Me.身份证号码) '引用上面的声明,将15位身份证号变为18位
身份证号码 = gy
Me.性别 = IIf(Val(Mid(gy, 17, 1)) / 2 = Int(Val(Mid(gy, 17, 1)) / 2), "女", "男") '根据身份证号显示性别
ElseIf Len(身份证号码) = 18 Then
Me.性别 = IIf(Val(Mid(Me.身份证号码, 17, 1)) / 2 = Int(Val(Mid(Me.身份证号码, 17, 1)) / 2), "女", "男")
Else
MsgBox "输入的身份证位数不正确!", 46, "提示"
End If
End Sub
Private Sub Form_Load()
’窗体加载事件
Me.TimerInterval =1 '设置计时器
End Sub
Private Sub Form_Timer()
'计时器触发
DoCmd.GoToRecord , , acNext '进入下一条记录
End Sub
[此贴子已经被作者于2006-2-19 9:55:57编辑过]