![]() |
#2
gy05032006-02-19 09:54
注意:重新建立一个窗体,把下面非红色文字粘贴到代码区即可。蓝色文字是控件的名称,如果你添写身份证号的控名称是“证件号码”,那要把下面所有的“身份证号码”改为“证件号码”。可以把库发给我,我帮你做。
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编辑过] |
有个问题 我想请教你一下:就是关于在access中 怎么才能根据身份证号码(15位或18位)筛选出用户性别 我找到了一个在EXCEL中的方法:=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")” 但是由于我的数据量很大 只能在access中操作 你说我怎么写这个语句呢?